]> git.lizzy.rs Git - rust.git/commitdiff
more friend error message for in fn arg
authorXuefeng Wu <xfwu@thoughtworks.com>
Mon, 4 May 2015 11:27:02 +0000 (19:27 +0800)
committerXuefeng Wu <benewu@gmail.com>
Sat, 16 May 2015 09:21:43 +0000 (17:21 +0800)
src/librustc_resolve/lib.rs

index 38ab0a8c5ed0d1740163f3400ac9a2673f81d513..6f8e70dad2e39ab9373f740e2f63a74c3e9a3fce 100644 (file)
@@ -2361,8 +2361,18 @@ fn resolve_type(&mut self, ty: &Ty) {
                             "type name"
                         };
 
-                        let msg = format!("use of undeclared {} `{}`", kind,
-                                          path_names_to_string(path, 0));
+                        let self_type_name = special_idents::type_self.name;
+                        let is_invalid_self_type_name =
+                            path.segments.len() > 0 &&
+                            maybe_qself.is_none() &&
+                            path.segments[0].identifier.name == self_type_name;
+                        let msg = if is_invalid_self_type_name {
+                            "expected type name, found keyword `Self`".to_string()
+                        } else {
+                            format!("use of undeclared {} `{}`",
+                                kind, path_names_to_string(path, 0))
+                        };
+
                         self.resolve_error(ty.span, &msg[..]);
                     }
                 }