]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc_resolve/error_codes.rs
Auto merge of #63462 - matthewjasper:hygienic-builtin-derives, r=petrochenkov
[rust.git] / src / librustc_resolve / error_codes.rs
index 7cd26dce1447c9d93657a3d87498458f0eb3ce52..1faaf97e981c14fed761bb802019e1098eb264b4 100644 (file)
@@ -1,6 +1,4 @@
-#![allow(non_snake_case)]
-
-use syntax::{register_diagnostic, register_diagnostics, register_long_diagnostics};
+use syntax::{register_diagnostics, register_long_diagnostics};
 
 // Error messages for EXXXX errors.  Each message should start and end with a
 // new line, and be wrapped to 80 characters.  In vim you can `:set tw=80` and
@@ -528,15 +526,25 @@ fn bar(&self, y: T) {
 Erroneous code example:
 
 ```compile_fail,E0403
-fn foo<T, T>(s: T, u: T) {} // error: the name `T` is already used for a type
-                            //        parameter in this type parameter list
+fn f<T, T>(s: T, u: T) {} // error: the name `T` is already used for a generic
+                          //        parameter in this item's generic parameters
 ```
 
 Please verify that none of the type parameters are misspelled, and rename any
 clashing parameters. Example:
 
 ```
-fn foo<T, Y>(s: T, u: Y) {} // ok!
+fn f<T, Y>(s: T, u: Y) {} // ok!
+```
+
+Type parameters in an associated item also cannot shadow parameters from the
+containing item:
+
+```compile_fail,E0403
+trait Foo<T> {
+    fn do_something(&self) -> T;
+    fn do_something_else<T: Clone>(&self, bar: T);
+}
 ```
 "##,