Mention what item is using an invalid Self
type
This commit is contained in:
parent
611e7b9cea
commit
018c319b21
14 changed files with 117 additions and 20 deletions
|
@ -1914,6 +1914,8 @@ impl<'a> Resolver<'a> {
|
|||
};
|
||||
}
|
||||
(msg, None)
|
||||
} else if ident.name == kw::SelfUpper {
|
||||
("`Self` is only available in impls, traits, and type definitions".to_string(), None)
|
||||
} else if ident.name.as_str().chars().next().map_or(false, |c| c.is_ascii_uppercase()) {
|
||||
// Check whether the name refers to an item in the value namespace.
|
||||
let binding = if let Some(ribs) = ribs {
|
||||
|
|
|
@ -332,6 +332,16 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
|
|||
span,
|
||||
"`Self` is only available in impls, traits, and type definitions".to_string(),
|
||||
);
|
||||
if let Some(item_kind) = self.diagnostic_metadata.current_item {
|
||||
err.span_label(
|
||||
item_kind.ident.span,
|
||||
format!(
|
||||
"`Self` not allowed in {} {}",
|
||||
item_kind.kind.article(),
|
||||
item_kind.kind.descr()
|
||||
),
|
||||
);
|
||||
}
|
||||
return (err, Vec::new());
|
||||
}
|
||||
if is_self_value(path, ns) {
|
||||
|
@ -389,6 +399,15 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
|
|||
);
|
||||
}
|
||||
}
|
||||
} else if let Some(item_kind) = self.diagnostic_metadata.current_item {
|
||||
err.span_label(
|
||||
item_kind.ident.span,
|
||||
format!(
|
||||
"`self` not allowed in {} {}",
|
||||
item_kind.kind.article(),
|
||||
item_kind.kind.descr()
|
||||
),
|
||||
);
|
||||
}
|
||||
return (err, Vec::new());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue