summaryrefslogtreecommitdiffstats
path: root/tests/ui/methods
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /tests/ui/methods
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz
rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/methods')
-rw-r--r--tests/ui/methods/disambiguate-multiple-blanket-impl.rs38
-rw-r--r--tests/ui/methods/disambiguate-multiple-blanket-impl.stderr63
-rw-r--r--tests/ui/methods/disambiguate-multiple-impl.rs37
-rw-r--r--tests/ui/methods/disambiguate-multiple-impl.stderr63
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait-2.rs54
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait-2.stderr132
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait.rs32
-rw-r--r--tests/ui/methods/disambiguate-multiple-trait.stderr63
-rw-r--r--tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr2
-rw-r--r--tests/ui/methods/method-ambig-two-traits-from-bounds.stderr8
-rw-r--r--tests/ui/methods/method-ambig-two-traits-from-impls2.stderr4
-rw-r--r--tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr4
12 files changed, 490 insertions, 10 deletions
diff --git a/tests/ui/methods/disambiguate-multiple-blanket-impl.rs b/tests/ui/methods/disambiguate-multiple-blanket-impl.rs
new file mode 100644
index 000000000..6a17f6a21
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-blanket-impl.rs
@@ -0,0 +1,38 @@
+trait A {
+ type Type;
+ const CONST: usize;
+ fn foo(&self);
+}
+
+trait B {
+ type Type;
+ const CONST: usize;
+ fn foo(&self);
+}
+
+#[derive(Debug)]
+struct S;
+
+impl<T: std::fmt::Debug> A for T {
+ type Type = ();
+ const CONST: usize = 1; //~ NOTE candidate #1
+ fn foo(&self) {} //~ NOTE candidate #1
+}
+
+impl<T: std::fmt::Debug> B for T {
+ type Type = ();
+ const CONST: usize = 2; //~ NOTE candidate #2
+ fn foo(&self) {} //~ NOTE candidate #2
+}
+
+fn main() {
+ let s = S;
+ S::foo(&s); //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `foo` found
+ //~| HELP use fully-qualified syntax to disambiguate
+ S::CONST; //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `CONST` found
+ //~| HELP use fully-qualified syntax to disambiguate
+ let _: S::Type; //~ ERROR ambiguous associated type
+ //~^ HELP use fully-qualified syntax
+}
diff --git a/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr b/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr
new file mode 100644
index 000000000..ccdd9a954
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-blanket-impl.stderr
@@ -0,0 +1,63 @@
+error[E0223]: ambiguous associated type
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:36:12
+ |
+LL | let _: S::Type;
+ | ^^^^^^^
+ |
+help: use fully-qualified syntax
+ |
+LL | let _: <S as A>::Type;
+ | ~~~~~~~~~~~~~~
+LL | let _: <S as B>::Type;
+ | ~~~~~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:30:8
+ |
+LL | S::foo(&s);
+ | ^^^ multiple `foo` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:19:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:25:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | A::foo(&s);
+ | ~~~
+LL | B::foo(&s);
+ | ~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:33:8
+ |
+LL | S::CONST;
+ | ^^^^^ multiple `CONST` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:18:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-blanket-impl.rs:24:5
+ |
+LL | const CONST: usize = 2;
+ | ^^^^^^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | <S as A>::CONST;
+ | ~~~~~~~~~~
+LL | <S as B>::CONST;
+ | ~~~~~~~~~~
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0034, E0223.
+For more information about an error, try `rustc --explain E0034`.
diff --git a/tests/ui/methods/disambiguate-multiple-impl.rs b/tests/ui/methods/disambiguate-multiple-impl.rs
new file mode 100644
index 000000000..9a82ff015
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-impl.rs
@@ -0,0 +1,37 @@
+trait A {
+ type Type;
+ const CONST: usize;
+ fn foo(&self);
+}
+
+trait B {
+ type Type;
+ const CONST: usize;
+ fn foo(&self);
+}
+
+struct S;
+
+impl A for S {
+ type Type = ();
+ const CONST: usize = 1; //~ NOTE candidate #1
+ fn foo(&self) {} //~ NOTE candidate #1
+}
+
+impl B for S {
+ type Type = ();
+ const CONST: usize = 2; //~ NOTE candidate #2
+ fn foo(&self) {} //~ NOTE candidate #2
+}
+
+fn main() {
+ let s = S;
+ S::foo(&s); //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `foo` found
+ //~| HELP use fully-qualified syntax
+ let _: S::Type = (); //~ ERROR ambiguous associated type
+ //~| HELP use fully-qualified syntax
+ let _ = S::CONST; //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `CONST` found
+ //~| HELP use fully-qualified syntax
+}
diff --git a/tests/ui/methods/disambiguate-multiple-impl.stderr b/tests/ui/methods/disambiguate-multiple-impl.stderr
new file mode 100644
index 000000000..417212077
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-impl.stderr
@@ -0,0 +1,63 @@
+error[E0223]: ambiguous associated type
+ --> $DIR/disambiguate-multiple-impl.rs:32:12
+ |
+LL | let _: S::Type = ();
+ | ^^^^^^^
+ |
+help: use fully-qualified syntax
+ |
+LL | let _: <S as A>::Type = ();
+ | ~~~~~~~~~~~~~~
+LL | let _: <S as B>::Type = ();
+ | ~~~~~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-impl.rs:29:8
+ |
+LL | S::foo(&s);
+ | ^^^ multiple `foo` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `S`
+ --> $DIR/disambiguate-multiple-impl.rs:18:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `S`
+ --> $DIR/disambiguate-multiple-impl.rs:24:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | A::foo(&s);
+ | ~~~
+LL | B::foo(&s);
+ | ~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-impl.rs:34:16
+ |
+LL | let _ = S::CONST;
+ | ^^^^^ multiple `CONST` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `S`
+ --> $DIR/disambiguate-multiple-impl.rs:17:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `S`
+ --> $DIR/disambiguate-multiple-impl.rs:23:5
+ |
+LL | const CONST: usize = 2;
+ | ^^^^^^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _ = <S as A>::CONST;
+ | ~~~~~~~~~~
+LL | let _ = <S as B>::CONST;
+ | ~~~~~~~~~~
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0034, E0223.
+For more information about an error, try `rustc --explain E0034`.
diff --git a/tests/ui/methods/disambiguate-multiple-trait-2.rs b/tests/ui/methods/disambiguate-multiple-trait-2.rs
new file mode 100644
index 000000000..829491d82
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-trait-2.rs
@@ -0,0 +1,54 @@
+trait A {
+ type Type; //~ NOTE ambiguous `Type` from `A`
+ const CONST: usize = 1; //~ NOTE candidate #1
+ fn foo(&self); //~ NOTE candidate #1
+}
+
+trait B {
+ type Type; //~ NOTE ambiguous `Type` from `B`
+ const CONST: usize; //~ NOTE candidate #2
+ fn foo(&self); //~ NOTE candidate #2
+}
+
+trait C: A + B {}
+
+fn a<T: C>(t: T) {
+ t.foo(); //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `foo` found
+ //~| HELP disambiguate the method
+ //~| HELP disambiguate the method
+ let _ = T::CONST; //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `CONST` found
+ //~| HELP use fully-qualified syntax
+ let _: T::Type; //~ ERROR ambiguous associated type
+ //~^ NOTE ambiguous associated type `Type`
+ //~| HELP use fully-qualified syntax
+ //~| HELP use fully-qualified syntax
+}
+
+#[derive(Debug)]
+struct S;
+
+impl<T: std::fmt::Debug> A for T {
+ type Type = ();
+ const CONST: usize = 1; //~ NOTE candidate #1
+ fn foo(&self) {} //~ NOTE candidate #1
+}
+
+impl<T: std::fmt::Debug> B for T {
+ type Type = ();
+ const CONST: usize = 1; //~ NOTE candidate #2
+ fn foo(&self) {} //~ NOTE candidate #2
+}
+
+fn main() {
+ let s = S;
+ S::foo(&s); //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `foo` found
+ //~| HELP use fully-qualified syntax
+ let _ = S::CONST; //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `CONST` found
+ //~| HELP use fully-qualified syntax
+ let _: S::Type; //~ ERROR ambiguous associated type
+ //~^ HELP use fully-qualified syntax
+}
diff --git a/tests/ui/methods/disambiguate-multiple-trait-2.stderr b/tests/ui/methods/disambiguate-multiple-trait-2.stderr
new file mode 100644
index 000000000..2778f254a
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-trait-2.stderr
@@ -0,0 +1,132 @@
+error[E0221]: ambiguous associated type `Type` in bounds of `T`
+ --> $DIR/disambiguate-multiple-trait-2.rs:23:12
+ |
+LL | type Type;
+ | --------- ambiguous `Type` from `A`
+...
+LL | type Type;
+ | --------- ambiguous `Type` from `B`
+...
+LL | let _: T::Type;
+ | ^^^^^^^ ambiguous associated type `Type`
+ |
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _: <T as A>::Type;
+ | ~~~~~~~~~~
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _: <T as B>::Type;
+ | ~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait-2.rs:16:7
+ |
+LL | t.foo();
+ | ^^^ multiple `foo` found
+ |
+note: candidate #1 is defined in the trait `A`
+ --> $DIR/disambiguate-multiple-trait-2.rs:4:5
+ |
+LL | fn foo(&self);
+ | ^^^^^^^^^^^^^^
+note: candidate #2 is defined in the trait `B`
+ --> $DIR/disambiguate-multiple-trait-2.rs:10:5
+ |
+LL | fn foo(&self);
+ | ^^^^^^^^^^^^^^
+help: disambiguate the method for candidate #1
+ |
+LL | A::foo(&t);
+ | ~~~~~~~~~~
+help: disambiguate the method for candidate #2
+ |
+LL | B::foo(&t);
+ | ~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait-2.rs:20:16
+ |
+LL | let _ = T::CONST;
+ | ^^^^^ multiple `CONST` found
+ |
+note: candidate #1 is defined in the trait `A`
+ --> $DIR/disambiguate-multiple-trait-2.rs:3:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+note: candidate #2 is defined in the trait `B`
+ --> $DIR/disambiguate-multiple-trait-2.rs:9:5
+ |
+LL | const CONST: usize;
+ | ^^^^^^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _ = <T as A>::CONST;
+ | ~~~~~~~~~~
+LL | let _ = <T as B>::CONST;
+ | ~~~~~~~~~~
+
+error[E0223]: ambiguous associated type
+ --> $DIR/disambiguate-multiple-trait-2.rs:52:12
+ |
+LL | let _: S::Type;
+ | ^^^^^^^
+ |
+help: use fully-qualified syntax
+ |
+LL | let _: <S as A>::Type;
+ | ~~~~~~~~~~~~~~
+LL | let _: <S as B>::Type;
+ | ~~~~~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait-2.rs:46:8
+ |
+LL | S::foo(&s);
+ | ^^^ multiple `foo` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-trait-2.rs:35:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-trait-2.rs:41:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | A::foo(&s);
+ | ~~~
+LL | B::foo(&s);
+ | ~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait-2.rs:49:16
+ |
+LL | let _ = S::CONST;
+ | ^^^^^ multiple `CONST` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-trait-2.rs:34:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-trait-2.rs:40:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _ = <S as A>::CONST;
+ | ~~~~~~~~~~
+LL | let _ = <S as B>::CONST;
+ | ~~~~~~~~~~
+
+error: aborting due to 6 previous errors
+
+Some errors have detailed explanations: E0034, E0221, E0223.
+For more information about an error, try `rustc --explain E0034`.
diff --git a/tests/ui/methods/disambiguate-multiple-trait.rs b/tests/ui/methods/disambiguate-multiple-trait.rs
new file mode 100644
index 000000000..c990d0475
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-trait.rs
@@ -0,0 +1,32 @@
+#![feature(associated_type_defaults)]
+
+trait A {
+ type Type = ();
+ const CONST: usize = 1; //~ NOTE candidate #1
+ fn foo(&self) {} //~ NOTE candidate #1
+}
+
+trait B {
+ type Type = ();
+ const CONST: usize = 2; //~ NOTE candidate #2
+ fn foo(&self) {} //~ NOTE candidate #2
+}
+
+#[derive(Debug)]
+struct S;
+
+impl<T: std::fmt::Debug> A for T {}
+
+impl<T: std::fmt::Debug> B for T {}
+
+fn main() {
+ let s = S;
+ S::foo(&s); //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `foo` found
+ //~| HELP use fully-qualified syntax
+ let _ = S::CONST; //~ ERROR multiple applicable items in scope
+ //~^ NOTE multiple `CONST` found
+ //~| HELP use fully-qualified syntax
+ let _: S::Type; //~ ERROR ambiguous associated type
+ //~^ HELP use fully-qualified syntax
+}
diff --git a/tests/ui/methods/disambiguate-multiple-trait.stderr b/tests/ui/methods/disambiguate-multiple-trait.stderr
new file mode 100644
index 000000000..e00498ca6
--- /dev/null
+++ b/tests/ui/methods/disambiguate-multiple-trait.stderr
@@ -0,0 +1,63 @@
+error[E0223]: ambiguous associated type
+ --> $DIR/disambiguate-multiple-trait.rs:30:12
+ |
+LL | let _: S::Type;
+ | ^^^^^^^
+ |
+help: use fully-qualified syntax
+ |
+LL | let _: <S as A>::Type;
+ | ~~~~~~~~~~~~~~
+LL | let _: <S as B>::Type;
+ | ~~~~~~~~~~~~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait.rs:24:8
+ |
+LL | S::foo(&s);
+ | ^^^ multiple `foo` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-trait.rs:6:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-trait.rs:12:5
+ |
+LL | fn foo(&self) {}
+ | ^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | A::foo(&s);
+ | ~~~
+LL | B::foo(&s);
+ | ~~~
+
+error[E0034]: multiple applicable items in scope
+ --> $DIR/disambiguate-multiple-trait.rs:27:16
+ |
+LL | let _ = S::CONST;
+ | ^^^^^ multiple `CONST` found
+ |
+note: candidate #1 is defined in an impl of the trait `A` for the type `T`
+ --> $DIR/disambiguate-multiple-trait.rs:5:5
+ |
+LL | const CONST: usize = 1;
+ | ^^^^^^^^^^^^^^^^^^
+note: candidate #2 is defined in an impl of the trait `B` for the type `T`
+ --> $DIR/disambiguate-multiple-trait.rs:11:5
+ |
+LL | const CONST: usize = 2;
+ | ^^^^^^^^^^^^^^^^^^
+help: use fully-qualified syntax to disambiguate
+ |
+LL | let _ = <S as A>::CONST;
+ | ~~~~~~~~~~
+LL | let _ = <S as B>::CONST;
+ | ~~~~~~~~~~
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0034, E0223.
+For more information about an error, try `rustc --explain E0034`.
diff --git a/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
index e0f8a5447..0a022dc39 100644
--- a/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
+++ b/tests/ui/methods/method-ambig-one-trait-unknown-int-type.stderr
@@ -2,7 +2,7 @@ error[E0282]: type annotations needed for `Vec<T>`
--> $DIR/method-ambig-one-trait-unknown-int-type.rs:24:9
|
LL | let mut x = Vec::new();
- | ^^^^^
+ | ^^^^^ ---------- type must be known at this point
|
help: consider giving `x` an explicit type, where the type for type parameter `T` is specified
|
diff --git a/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr b/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
index 601e6bbb0..9a84768a9 100644
--- a/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-from-bounds.stderr
@@ -16,12 +16,12 @@ LL | trait B { fn foo(&self); }
| ^^^^^^^^^^^^^^
help: disambiguate the method for candidate #1
|
-LL | A::foo(t);
- | ~~~~~~~~~
+LL | A::foo(&t);
+ | ~~~~~~~~~~
help: disambiguate the method for candidate #2
|
-LL | B::foo(t);
- | ~~~~~~~~~
+LL | B::foo(&t);
+ | ~~~~~~~~~~
error: aborting due to previous error
diff --git a/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr b/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
index 4ba778e0e..5bb887b45 100644
--- a/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
+++ b/tests/ui/methods/method-ambig-two-traits-from-impls2.stderr
@@ -14,12 +14,10 @@ note: candidate #2 is defined in an impl of the trait `B` for the type `AB`
|
LL | fn foo() {}
| ^^^^^^^^
-help: disambiguate the associated function for candidate #1
+help: use fully-qualified syntax to disambiguate
|
LL | <AB as A>::foo();
| ~~~~~~~~~~~
-help: disambiguate the associated function for candidate #2
- |
LL | <AB as B>::foo();
| ~~~~~~~~~~~
diff --git a/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
index 4e83e4b77..755179650 100644
--- a/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
+++ b/tests/ui/methods/method-deref-to-same-trait-object-with-separate-params.stderr
@@ -54,8 +54,8 @@ LL | let z = NuisanceFoo::foo(x);
| ~~~~~~~~~~~~~~~~~~~
help: disambiguate the method for candidate #3
|
-LL | let z = FinalFoo::foo(x);
- | ~~~~~~~~~~~~~~~~
+LL | let z = FinalFoo::foo(&x);
+ | ~~~~~~~~~~~~~~~~~
error[E0308]: mismatched types
--> $DIR/method-deref-to-same-trait-object-with-separate-params.rs:139:24