summaryrefslogtreecommitdiffstats
path: root/tests/ui/methods/disambiguate-multiple-impl.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/ui/methods/disambiguate-multiple-impl.rs37
1 files changed, 37 insertions, 0 deletions
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
+}