diff options
Diffstat (limited to 'tests/ui/missing/missing-items')
-rw-r--r-- | tests/ui/missing/missing-items/auxiliary/m1.rs | 9 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/m2.rs | 12 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/m2.stderr | 17 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/missing-type-parameter.rs | 5 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/missing-type-parameter.stderr | 14 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/missing-type-parameter2.rs | 19 | ||||
-rw-r--r-- | tests/ui/missing/missing-items/missing-type-parameter2.stderr | 121 |
7 files changed, 197 insertions, 0 deletions
diff --git a/tests/ui/missing/missing-items/auxiliary/m1.rs b/tests/ui/missing/missing-items/auxiliary/m1.rs new file mode 100644 index 000000000..fcf52c9e8 --- /dev/null +++ b/tests/ui/missing/missing-items/auxiliary/m1.rs @@ -0,0 +1,9 @@ +pub trait X { + const CONSTANT: u32; + type Type; + fn method(&self, s: String) -> Self::Type; + fn method2(self: Box<Self>, s: String) -> Self::Type; + fn method3(other: &Self, s: String) -> Self::Type; + fn method4(&self, other: &Self) -> Self::Type; + fn method5(self: &Box<Self>) -> Self::Type; +} diff --git a/tests/ui/missing/missing-items/m2.rs b/tests/ui/missing/missing-items/m2.rs new file mode 100644 index 000000000..c2a6914ab --- /dev/null +++ b/tests/ui/missing/missing-items/m2.rs @@ -0,0 +1,12 @@ +// aux-build:m1.rs + + +extern crate m1; + +struct X { +} + +impl m1::X for X { //~ ERROR not all trait items implemented +} + +fn main() {} diff --git a/tests/ui/missing/missing-items/m2.stderr b/tests/ui/missing/missing-items/m2.stderr new file mode 100644 index 000000000..d18fb443a --- /dev/null +++ b/tests/ui/missing/missing-items/m2.stderr @@ -0,0 +1,17 @@ +error[E0046]: not all trait items implemented, missing: `CONSTANT`, `Type`, `method`, `method2`, `method3`, `method4`, `method5` + --> $DIR/m2.rs:9:1 + | +LL | impl m1::X for X { + | ^^^^^^^^^^^^^^^^ missing `CONSTANT`, `Type`, `method`, `method2`, `method3`, `method4`, `method5` in implementation + | + = help: implement the missing item: `const CONSTANT: u32 = 42;` + = help: implement the missing item: `type Type = Type;` + = help: implement the missing item: `fn method(&self, _: String) -> <Self as m1::X>::Type { todo!() }` + = help: implement the missing item: `fn method2(self: Box<Self>, _: String) -> <Self as m1::X>::Type { todo!() }` + = help: implement the missing item: `fn method3(_: &Self, _: String) -> <Self as m1::X>::Type { todo!() }` + = help: implement the missing item: `fn method4(&self, _: &Self) -> <Self as m1::X>::Type { todo!() }` + = help: implement the missing item: `fn method5(self: &Box<Self>) -> <Self as m1::X>::Type { todo!() }` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0046`. diff --git a/tests/ui/missing/missing-items/missing-type-parameter.rs b/tests/ui/missing/missing-items/missing-type-parameter.rs new file mode 100644 index 000000000..8a64053a4 --- /dev/null +++ b/tests/ui/missing/missing-items/missing-type-parameter.rs @@ -0,0 +1,5 @@ +fn foo<X>() { } + +fn main() { + foo(); //~ ERROR type annotations needed +} diff --git a/tests/ui/missing/missing-items/missing-type-parameter.stderr b/tests/ui/missing/missing-items/missing-type-parameter.stderr new file mode 100644 index 000000000..722539fca --- /dev/null +++ b/tests/ui/missing/missing-items/missing-type-parameter.stderr @@ -0,0 +1,14 @@ +error[E0282]: type annotations needed + --> $DIR/missing-type-parameter.rs:4:5 + | +LL | foo(); + | ^^^ cannot infer type of the type parameter `X` declared on the function `foo` + | +help: consider specifying the generic argument + | +LL | foo::<X>(); + | +++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0282`. diff --git a/tests/ui/missing/missing-items/missing-type-parameter2.rs b/tests/ui/missing/missing-items/missing-type-parameter2.rs new file mode 100644 index 000000000..e9b32fb71 --- /dev/null +++ b/tests/ui/missing/missing-items/missing-type-parameter2.rs @@ -0,0 +1,19 @@ +struct X<const N: u8>(); + +impl X<N> {} +//~^ ERROR cannot find type `N` in this scope +//~| ERROR unresolved item provided when a constant was expected +impl<T, const A: u8 = 2> X<N> {} +//~^ ERROR cannot find type `N` in this scope +//~| ERROR defaults for const parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions +//~| ERROR unresolved item provided when a constant was expected + +fn foo(_: T) where T: Send {} +//~^ ERROR cannot find type `T` in this scope +//~| ERROR cannot find type `T` in this scope + +fn bar<const N: u8>(_: A) {} +//~^ ERROR cannot find type `A` in this scope + +fn main() { +} diff --git a/tests/ui/missing/missing-items/missing-type-parameter2.stderr b/tests/ui/missing/missing-items/missing-type-parameter2.stderr new file mode 100644 index 000000000..f33951c98 --- /dev/null +++ b/tests/ui/missing/missing-items/missing-type-parameter2.stderr @@ -0,0 +1,121 @@ +error[E0412]: cannot find type `N` in this scope + --> $DIR/missing-type-parameter2.rs:3:8 + | +LL | struct X<const N: u8>(); + | ------------------------ similarly named struct `X` defined here +LL | +LL | impl X<N> {} + | ^ + | +help: a struct with a similar name exists + | +LL | impl X<X> {} + | ~ +help: you might be missing a type parameter + | +LL | impl<N> X<N> {} + | +++ + +error[E0412]: cannot find type `N` in this scope + --> $DIR/missing-type-parameter2.rs:6:28 + | +LL | impl<T, const A: u8 = 2> X<N> {} + | - ^ + | | + | similarly named type parameter `T` defined here + | +help: a type parameter with a similar name exists + | +LL | impl<T, const A: u8 = 2> X<T> {} + | ~ +help: you might be missing a type parameter + | +LL | impl<T, const A: u8 = 2, N> X<N> {} + | +++ + +error[E0412]: cannot find type `T` in this scope + --> $DIR/missing-type-parameter2.rs:11:20 + | +LL | struct X<const N: u8>(); + | ------------------------ similarly named struct `X` defined here +... +LL | fn foo(_: T) where T: Send {} + | ^ + | +help: a struct with a similar name exists + | +LL | fn foo(_: T) where X: Send {} + | ~ +help: you might be missing a type parameter + | +LL | fn foo<T>(_: T) where T: Send {} + | +++ + +error[E0412]: cannot find type `T` in this scope + --> $DIR/missing-type-parameter2.rs:11:11 + | +LL | struct X<const N: u8>(); + | ------------------------ similarly named struct `X` defined here +... +LL | fn foo(_: T) where T: Send {} + | ^ + | +help: a struct with a similar name exists + | +LL | fn foo(_: X) where T: Send {} + | ~ +help: you might be missing a type parameter + | +LL | fn foo<T>(_: T) where T: Send {} + | +++ + +error[E0412]: cannot find type `A` in this scope + --> $DIR/missing-type-parameter2.rs:15:24 + | +LL | struct X<const N: u8>(); + | ------------------------ similarly named struct `X` defined here +... +LL | fn bar<const N: u8>(_: A) {} + | ^ + | +help: a struct with a similar name exists + | +LL | fn bar<const N: u8>(_: X) {} + | ~ +help: you might be missing a type parameter + | +LL | fn bar<const N: u8, A>(_: A) {} + | +++ + +error[E0747]: unresolved item provided when a constant was expected + --> $DIR/missing-type-parameter2.rs:3:8 + | +LL | impl X<N> {} + | ^ + | +help: if this generic argument was intended as a const parameter, surround it with braces + | +LL | impl X<{ N }> {} + | + + + +error: defaults for const parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions + --> $DIR/missing-type-parameter2.rs:6:9 + | +LL | impl<T, const A: u8 = 2> X<N> {} + | ^^^^^^^^^^^^^^^ + +error[E0747]: unresolved item provided when a constant was expected + --> $DIR/missing-type-parameter2.rs:6:28 + | +LL | impl<T, const A: u8 = 2> X<N> {} + | ^ + | +help: if this generic argument was intended as a const parameter, surround it with braces + | +LL | impl<T, const A: u8 = 2> X<{ N }> {} + | + + + +error: aborting due to 8 previous errors + +Some errors have detailed explanations: E0412, E0747. +For more information about an error, try `rustc --explain E0412`. |