"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[..]);
}
}