summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr')
-rw-r--r--tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr177
1 files changed, 177 insertions, 0 deletions
diff --git a/tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr b/tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr
new file mode 100644
index 000000000..f520d88c6
--- /dev/null
+++ b/tests/ui/suggestions/trait-with-missing-associated-type-restriction.stderr
@@ -0,0 +1,177 @@
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:10:31
+ |
+LL | fn funq(&self) -> Self::A {}
+ | ^^ expected associated type, found `()`
+ |
+ = note: expected associated type `<Self as Trait<T>>::A`
+ found unit type `()`
+help: a method is available that returns `<Self as Trait<T>>::A`
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:8:5
+ |
+LL | fn func(&self) -> Self::A;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ consider calling `Trait::func`
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:14:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found associated type
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found associated type `<impl Trait as Trait>::A`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+help: consider constraining the associated type `<impl Trait as Trait>::A` to `usize`
+ |
+LL | fn foo(_: impl Trait, x: impl Trait<A = usize>) {
+ | +++++++++++
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:18:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found associated type
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found associated type `<T as Trait>::A`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+help: consider constraining the associated type `<T as Trait>::A` to `usize`
+ |
+LL | fn bar<T: Trait<A = usize>>(x: T) {
+ | +++++++++++
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:22:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found associated type
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found associated type `<impl Trait<i32> as Trait<i32>>::A`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+help: consider constraining the associated type `<impl Trait<i32> as Trait<i32>>::A` to `usize`
+ |
+LL | fn foo2(x: impl Trait<i32, A = usize>) {
+ | +++++++++++
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:26:12
+ |
+LL | x.funk(3);
+ | ---- ^ expected associated type, found integer
+ | |
+ | arguments to this method are incorrect
+ |
+ = note: expected associated type `<T as Trait<i32>>::A`
+ found type `{integer}`
+help: some methods are available that return `<T as Trait<i32>>::A`
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:8:5
+ |
+LL | fn func(&self) -> Self::A;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ consider calling `Trait::func`
+LL | fn funk(&self, _: Self::A);
+LL | fn funq(&self) -> Self::A {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ consider calling `Trait::funq`
+note: associated function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:9:8
+ |
+LL | fn funk(&self, _: Self::A);
+ | ^^^^
+help: consider constraining the associated type `<T as Trait<i32>>::A` to `{integer}`
+ |
+LL | fn bar2<T: Trait<i32, A = {integer}>>(x: T) {
+ | +++++++++++++++
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:27:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found associated type
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found associated type `<T as Trait<i32>>::A`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+help: consider constraining the associated type `<T as Trait<i32>>::A` to `usize`
+ |
+LL | fn bar2<T: Trait<i32, A = usize>>(x: T) {
+ | +++++++++++
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:31:9
+ |
+LL | fn baz<D: std::fmt::Debug, T: Trait<A = D>>(x: T) {
+ | - this type parameter
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found type parameter `D`
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found type parameter `D`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:35:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found `()`
+ | |
+ | arguments to this function are incorrect
+ |
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+
+error[E0308]: mismatched types
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:39:9
+ |
+LL | qux(x.func())
+ | --- ^^^^^^^^ expected `usize`, found associated type
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected type `usize`
+ found associated type `<T as Trait>::A`
+note: function defined here
+ --> $DIR/trait-with-missing-associated-type-restriction.rs:42:4
+ |
+LL | fn qux(_: usize) {}
+ | ^^^ --------
+help: consider constraining the associated type `<T as Trait>::A` to `usize`
+ |
+LL | fn ban<T>(x: T) where T: Trait<A = usize> {
+ | +++++++++++
+
+error: aborting due to 9 previous errors
+
+For more information about this error, try `rustc --explain E0308`.