summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_error_codes/src/error_codes/E0201.md
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0201.md')
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0201.md45
1 files changed, 45 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0201.md b/compiler/rustc_error_codes/src/error_codes/E0201.md
new file mode 100644
index 000000000..0e1a7b7b7
--- /dev/null
+++ b/compiler/rustc_error_codes/src/error_codes/E0201.md
@@ -0,0 +1,45 @@
+Two associated items (like methods, associated types, associated functions,
+etc.) were defined with the same identifier.
+
+Erroneous code example:
+
+```compile_fail,E0201
+struct Foo(u8);
+
+impl Foo {
+ fn bar(&self) -> bool { self.0 > 5 }
+ fn bar() {} // error: duplicate associated function
+}
+
+trait Baz {
+ type Quux;
+ fn baz(&self) -> bool;
+}
+
+impl Baz for Foo {
+ type Quux = u32;
+
+ fn baz(&self) -> bool { true }
+
+ // error: duplicate method
+ fn baz(&self) -> bool { self.0 > 5 }
+
+ // error: duplicate associated type
+ type Quux = u32;
+}
+```
+
+Note, however, that items with the same name are allowed for inherent `impl`
+blocks that don't overlap:
+
+```
+struct Foo<T>(T);
+
+impl Foo<u8> {
+ fn bar(&self) -> bool { self.0 > 5 }
+}
+
+impl Foo<bool> {
+ fn bar(&self) -> bool { self.0 }
+}
+```