summaryrefslogtreecommitdiffstats
path: root/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr')
-rw-r--r--src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr49
1 files changed, 42 insertions, 7 deletions
diff --git a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr b/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
index 6cd63dcf8..3dda5761a 100644
--- a/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
+++ b/src/test/ui/impl-trait/recursive-type-alias-impl-trait-declaration-too-subtle.stderr
@@ -1,14 +1,49 @@
-error: cannot implement trait on type alias impl trait
- --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:20:21
+error: unconstrained opaque type
+ --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:4:16
|
-LL | impl PartialEq<(Foo, i32)> for Bar {
- | ^^^
+LL | type Foo = impl PartialEq<(Foo, i32)>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: `Foo` must be used in combination with a concrete type within the same module
+
+error[E0053]: method `eq` has an incompatible type for trait
+ --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:10:30
+ |
+LL | type Foo = impl PartialEq<(Foo, i32)>;
+ | -------------------------- the found opaque type
+...
+LL | fn eq(&self, _other: &(Foo, i32)) -> bool {
+ | ^^^^^^^^^^^
+ | |
+ | expected struct `a::Bar`, found opaque type
+ | help: change the parameter type to match the trait: `&(a::Bar, i32)`
|
-note: type alias impl trait defined here
- --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:16:16
+ = note: expected fn pointer `fn(&a::Bar, &(a::Bar, i32)) -> _`
+ found fn pointer `fn(&a::Bar, &(a::Foo, i32)) -> _`
+
+error: unconstrained opaque type
+ --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:18:16
|
LL | type Foo = impl PartialEq<(Foo, i32)>;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: `Foo` must be used in combination with a concrete type within the same module
+
+error[E0053]: method `eq` has an incompatible type for trait
+ --> $DIR/recursive-type-alias-impl-trait-declaration-too-subtle.rs:24:30
+ |
+LL | type Foo = impl PartialEq<(Foo, i32)>;
+ | -------------------------- the expected opaque type
+...
+LL | fn eq(&self, _other: &(Bar, i32)) -> bool {
+ | ^^^^^^^^^^^
+ | |
+ | expected opaque type, found struct `b::Bar`
+ | help: change the parameter type to match the trait: `&(b::Foo, i32)`
+ |
+ = note: expected fn pointer `fn(&b::Bar, &(b::Foo, i32)) -> _`
+ found fn pointer `fn(&b::Bar, &(b::Bar, i32)) -> _`
-error: aborting due to previous error
+error: aborting due to 4 previous errors
+For more information about this error, try `rustc --explain E0053`.