From 8e82c21bf3479d338fcb8f378095daa8e698de1e Mon Sep 17 00:00:00 2001 From: Xuefeng Wu Date: Mon, 4 May 2015 19:27:02 +0800 Subject: [PATCH] more friend error message for in fn arg --- src/librustc_resolve/lib.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 38ab0a8c5ed0..6f8e70dad2e3 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2361,8 +2361,18 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { "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[..]); } }