summaryrefslogtreecommitdiffstats
path: root/src/test/ui/const-generics/parser-error-recovery
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/const-generics/parser-error-recovery')
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs16
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr14
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs18
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr35
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs16
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr8
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013.rs19
-rw-r--r--src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr47
8 files changed, 173 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs
new file mode 100644
index 000000000..99d8e9dea
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.rs
@@ -0,0 +1,16 @@
+trait Foo<const N: usize> {
+ fn do_x(&self) -> [u8; N];
+}
+
+struct Bar;
+
+const T: usize = 42;
+
+impl Foo<const 3> for Bar {
+//~^ERROR expected lifetime, type, or constant, found keyword `const`
+ fn do_x(&self) -> [u8; 3] {
+ [0u8; 3]
+ }
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr
new file mode 100644
index 000000000..1de24bff4
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-assoc.stderr
@@ -0,0 +1,14 @@
+error: expected lifetime, type, or constant, found keyword `const`
+ --> $DIR/issue-89013-no-assoc.rs:9:10
+ |
+LL | impl Foo<const 3> for Bar {
+ | ^^^^^
+ |
+help: the `const` keyword is only needed in the definition of the type
+ |
+LL - impl Foo<const 3> for Bar {
+LL + impl Foo<3> for Bar {
+ |
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs
new file mode 100644
index 000000000..b126b2485
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs
@@ -0,0 +1,18 @@
+trait Foo<const N: usize> {
+ fn do_x(&self) -> [u8; N];
+}
+
+struct Bar;
+
+const T: usize = 42;
+
+impl Foo<N = 3> for Bar {
+//~^ ERROR this trait takes 1 generic argument but 0 generic arguments were supplied
+//~| ERROR associated type bindings are not allowed here
+//~| ERROR associated const equality is incomplete
+ fn do_x(&self) -> [u8; 3] {
+ [0u8; 3]
+ }
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
new file mode 100644
index 000000000..acfdde8e1
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
@@ -0,0 +1,35 @@
+error[E0658]: associated const equality is incomplete
+ --> $DIR/issue-89013-no-kw.rs:9:10
+ |
+LL | impl Foo<N = 3> for Bar {
+ | ^^^^^
+ |
+ = note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
+ = help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
+
+error[E0107]: this trait takes 1 generic argument but 0 generic arguments were supplied
+ --> $DIR/issue-89013-no-kw.rs:9:6
+ |
+LL | impl Foo<N = 3> for Bar {
+ | ^^^ expected 1 generic argument
+ |
+note: trait defined here, with 1 generic parameter: `N`
+ --> $DIR/issue-89013-no-kw.rs:1:7
+ |
+LL | trait Foo<const N: usize> {
+ | ^^^ --------------
+help: add missing generic argument
+ |
+LL | impl Foo<N, N = 3> for Bar {
+ | ++
+
+error[E0229]: associated type bindings are not allowed here
+ --> $DIR/issue-89013-no-kw.rs:9:10
+ |
+LL | impl Foo<N = 3> for Bar {
+ | ^^^^^ associated type not allowed here
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0107, E0229, E0658.
+For more information about an error, try `rustc --explain E0107`.
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs b/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs
new file mode 100644
index 000000000..0ec6762b6
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.rs
@@ -0,0 +1,16 @@
+trait Foo<const N: usize> {
+ fn do_x(&self) -> [u8; N];
+}
+
+struct Bar;
+
+const T: usize = 42;
+
+impl Foo<N = type 3> for Bar {
+//~^ERROR missing type to the right of `=`
+ fn do_x(&self) -> [u8; 3] {
+ [0u8; 3]
+ }
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr b/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr
new file mode 100644
index 000000000..f0d0d90c7
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013-type.stderr
@@ -0,0 +1,8 @@
+error: missing type to the right of `=`
+ --> $DIR/issue-89013-type.rs:9:13
+ |
+LL | impl Foo<N = type 3> for Bar {
+ | ^---- expected type, found keyword `type`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013.rs b/src/test/ui/const-generics/parser-error-recovery/issue-89013.rs
new file mode 100644
index 000000000..9431779fa
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013.rs
@@ -0,0 +1,19 @@
+trait Foo<const N: usize> {
+ fn do_x(&self) -> [u8; N];
+}
+
+struct Bar;
+
+const T: usize = 42;
+
+impl Foo<N = const 3> for Bar {
+//~^ ERROR expected lifetime, type, or constant, found keyword `const`
+//~| ERROR this trait takes 1 generic
+//~| ERROR associated type bindings are not allowed here
+//~| ERROR associated const equality is incomplete
+ fn do_x(&self) -> [u8; 3] {
+ [0u8; 3]
+ }
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr b/src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr
new file mode 100644
index 000000000..583749a85
--- /dev/null
+++ b/src/test/ui/const-generics/parser-error-recovery/issue-89013.stderr
@@ -0,0 +1,47 @@
+error: expected lifetime, type, or constant, found keyword `const`
+ --> $DIR/issue-89013.rs:9:14
+ |
+LL | impl Foo<N = const 3> for Bar {
+ | ^^^^^
+ |
+help: the `const` keyword is only needed in the definition of the type
+ |
+LL - impl Foo<N = const 3> for Bar {
+LL + impl Foo<N = 3> for Bar {
+ |
+
+error[E0658]: associated const equality is incomplete
+ --> $DIR/issue-89013.rs:9:10
+ |
+LL | impl Foo<N = const 3> for Bar {
+ | ^^^^^^^^^^^
+ |
+ = note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
+ = help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
+
+error[E0107]: this trait takes 1 generic argument but 0 generic arguments were supplied
+ --> $DIR/issue-89013.rs:9:6
+ |
+LL | impl Foo<N = const 3> for Bar {
+ | ^^^ expected 1 generic argument
+ |
+note: trait defined here, with 1 generic parameter: `N`
+ --> $DIR/issue-89013.rs:1:7
+ |
+LL | trait Foo<const N: usize> {
+ | ^^^ --------------
+help: add missing generic argument
+ |
+LL | impl Foo<N, N = const 3> for Bar {
+ | ++
+
+error[E0229]: associated type bindings are not allowed here
+ --> $DIR/issue-89013.rs:9:10
+ |
+LL | impl Foo<N = const 3> for Bar {
+ | ^^^^^^^^^^^ associated type not allowed here
+
+error: aborting due to 4 previous errors
+
+Some errors have detailed explanations: E0107, E0229, E0658.
+For more information about an error, try `rustc --explain E0107`.