suggest qualifying bare associated constants
This commit is contained in:
parent
8e68090723
commit
8b12d5f42f
@ -227,20 +227,27 @@ fn make_base_error(
|
|||||||
&& let Some(FnCtxt::Assoc(_)) = fn_kind.ctxt()
|
&& let Some(FnCtxt::Assoc(_)) = fn_kind.ctxt()
|
||||||
&& let Some(items) = self.diagnostic_metadata.current_impl_items
|
&& let Some(items) = self.diagnostic_metadata.current_impl_items
|
||||||
&& let Some(item) = items.iter().find(|i| {
|
&& let Some(item) = items.iter().find(|i| {
|
||||||
if let AssocItemKind::Fn(_) = &i.kind && i.ident.name == item_str.name
|
if let AssocItemKind::Fn(..) | AssocItemKind::Const(..) = &i.kind
|
||||||
|
&& i.ident.name == item_str.name
|
||||||
{
|
{
|
||||||
debug!(?item_str.name);
|
debug!(?item_str.name);
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
})
|
})
|
||||||
&& let AssocItemKind::Fn(fn_) = &item.kind
|
|
||||||
{
|
{
|
||||||
debug!(?fn_);
|
let self_sugg = match &item.kind {
|
||||||
let self_sugg = if fn_.sig.decl.has_self() { "self." } else { "Self::" };
|
AssocItemKind::Fn(fn_) if fn_.sig.decl.has_self() => "self.",
|
||||||
|
_ => "Self::",
|
||||||
|
};
|
||||||
|
|
||||||
Some((
|
Some((
|
||||||
item_span.shrink_to_lo(),
|
item_span.shrink_to_lo(),
|
||||||
"consider using the associated function",
|
match &item.kind {
|
||||||
|
AssocItemKind::Fn(..) => "consider using the associated function",
|
||||||
|
AssocItemKind::Const(..) => "consider using the associated constant",
|
||||||
|
_ => unreachable!("item kind was filtered above"),
|
||||||
|
},
|
||||||
self_sugg.to_string()
|
self_sugg.to_string()
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
|
11
tests/ui/suggestions/assoc-const-without-self.rs
Normal file
11
tests/ui/suggestions/assoc-const-without-self.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
struct Foo;
|
||||||
|
|
||||||
|
impl Foo {
|
||||||
|
const A_CONST: usize = 1;
|
||||||
|
|
||||||
|
fn foo() -> usize {
|
||||||
|
A_CONST //~ ERROR cannot find value `A_CONST` in this scope
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
14
tests/ui/suggestions/assoc-const-without-self.stderr
Normal file
14
tests/ui/suggestions/assoc-const-without-self.stderr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
error[E0425]: cannot find value `A_CONST` in this scope
|
||||||
|
--> $DIR/assoc-const-without-self.rs:7:9
|
||||||
|
|
|
||||||
|
LL | A_CONST
|
||||||
|
| ^^^^^^^ not found in this scope
|
||||||
|
|
|
||||||
|
help: consider using the associated constant
|
||||||
|
|
|
||||||
|
LL | Self::A_CONST
|
||||||
|
| ++++++
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0425`.
|
Loading…
Reference in New Issue
Block a user