parent
0fd7ce99b0
commit
c4a4926083
@ -224,14 +224,21 @@ fn make_base_error(
|
||||
&& let FnKind::Fn(_, _, sig, ..) = fn_kind
|
||||
&& let Some(items) = self.diagnostic_metadata.current_impl_items
|
||||
&& let Some(item) = items.iter().find(|i| {
|
||||
if let AssocItemKind::Fn(..) | AssocItemKind::Const(..) = &i.kind
|
||||
&& i.ident.name == item_str.name
|
||||
// don't suggest if the item is in Fn signature arguments
|
||||
// issue #112590
|
||||
if i.ident.name == item_str.name
|
||||
// Don't suggest if the item is in Fn signature arguments (#112590).
|
||||
&& !sig.span.contains(item_span)
|
||||
{
|
||||
debug!(?item_str.name);
|
||||
return true
|
||||
return match &i.kind {
|
||||
AssocItemKind::Fn(fn_)
|
||||
if !sig.decl.has_self() && fn_.sig.decl.has_self() => {
|
||||
// Ensure that we only suggest `self.` if `self` is available,
|
||||
// you can't call `fn foo(&self)` from `fn bar()` (#115992).
|
||||
false
|
||||
}
|
||||
AssocItemKind::Fn(_) | AssocItemKind::Const(..) => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
false
|
||||
})
|
||||
|
@ -17,4 +17,12 @@ fn c() {
|
||||
bar(); //~ ERROR cannot find function `bar` in this scope
|
||||
baz(2, 3); //~ ERROR cannot find function `baz` in this scope
|
||||
}
|
||||
fn d(&self) {
|
||||
fn c() {
|
||||
foo(); //~ ERROR cannot find function `foo` in this scope
|
||||
}
|
||||
foo(); //~ ERROR cannot find function `foo` in this scope
|
||||
bar(); //~ ERROR cannot find function `bar` in this scope
|
||||
baz(2, 3); //~ ERROR cannot find function `baz` in this scope
|
||||
}
|
||||
}
|
||||
|
@ -14,11 +14,6 @@ error[E0425]: cannot find function `bar` in this scope
|
||||
|
|
||||
LL | bar();
|
||||
| ^^^ not found in this scope
|
||||
|
|
||||
help: consider using the associated function
|
||||
|
|
||||
LL | self.bar();
|
||||
| +++++
|
||||
|
||||
error[E0425]: cannot find function `baz` in this scope
|
||||
--> $DIR/assoc_fn_without_self.rs:18:9
|
||||
@ -37,6 +32,45 @@ error[E0425]: cannot find function `foo` in this scope
|
||||
LL | foo();
|
||||
| ^^^ not found in this scope
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error[E0425]: cannot find function `foo` in this scope
|
||||
--> $DIR/assoc_fn_without_self.rs:24:9
|
||||
|
|
||||
LL | foo();
|
||||
| ^^^ not found in this scope
|
||||
|
|
||||
help: consider using the associated function
|
||||
|
|
||||
LL | Self::foo();
|
||||
| ++++++
|
||||
|
||||
error[E0425]: cannot find function `bar` in this scope
|
||||
--> $DIR/assoc_fn_without_self.rs:25:9
|
||||
|
|
||||
LL | bar();
|
||||
| ^^^ not found in this scope
|
||||
|
|
||||
help: consider using the associated function
|
||||
|
|
||||
LL | self.bar();
|
||||
| +++++
|
||||
|
||||
error[E0425]: cannot find function `baz` in this scope
|
||||
--> $DIR/assoc_fn_without_self.rs:26:9
|
||||
|
|
||||
LL | baz(2, 3);
|
||||
| ^^^ not found in this scope
|
||||
|
|
||||
help: consider using the associated function
|
||||
|
|
||||
LL | Self::baz(2, 3);
|
||||
| ++++++
|
||||
|
||||
error[E0425]: cannot find function `foo` in this scope
|
||||
--> $DIR/assoc_fn_without_self.rs:22:13
|
||||
|
|
||||
LL | foo();
|
||||
| ^^^ not found in this scope
|
||||
|
||||
error: aborting due to 8 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0425`.
|
||||
|
Loading…
Reference in New Issue
Block a user