Rollup merge of #103531 - chenyukang:yukang/fix-103474, r=estebank

Suggest calling the instance method of the same name when method not found

Fixes #103474
This commit is contained in:
Manish Goregaokar 2022-11-11 12:12:30 -05:00 committed by GitHub
commit f00897e2f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 88 additions and 16 deletions

View file

@ -0,0 +1,28 @@
struct S {}
impl S {
fn first(&self) {}
fn second(&self) {
first()
//~^ ERROR cannot find function `first` in this scope
}
fn third(&self) {
no_method_err()
//~^ ERROR cannot find function `no_method_err` in this scope
}
}
// https://github.com/rust-lang/rust/pull/103531#discussion_r1004728080
struct Foo {
i: i32,
}
impl Foo {
fn needs_self() {
this.i
//~^ ERROR cannot find value `this` in this scope
}
}
fn main() {}

View file

@ -0,0 +1,35 @@
error[E0425]: cannot find value `this` in this scope
--> $DIR/issue-103474.rs:23:9
|
LL | this.i
| ^^^^ not found in this scope
|
help: you might have meant to use `self` here instead
|
LL | self.i
| ~~~~
help: if you meant to use `self`, you are also missing a `self` receiver argument
|
LL | fn needs_self(&self) {
| +++++
error[E0425]: cannot find function `first` in this scope
--> $DIR/issue-103474.rs:6:9
|
LL | first()
| ^^^^^ not found in this scope
|
help: consider using the associated function
|
LL | self.first()
| +++++
error[E0425]: cannot find function `no_method_err` in this scope
--> $DIR/issue-103474.rs:11:9
|
LL | no_method_err()
| ^^^^^^^^^^^^^ not found in this scope
error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0425`.

View file

@ -85,7 +85,7 @@ LL | static_method();
help: consider using the associated function
|
LL | Self::static_method();
| ~~~~~~~~~~~~~~~~~~~
| ++++++
error[E0425]: cannot find function `purr` in this scope
--> $DIR/issue-2356.rs:54:9
@ -114,7 +114,7 @@ LL | grow_older();
help: consider using the associated function
|
LL | Self::grow_older();
| ~~~~~~~~~~~~~~~~
| ++++++
error[E0425]: cannot find function `shave` in this scope
--> $DIR/issue-2356.rs:74:5

View file

@ -10,6 +10,10 @@ error[E0425]: cannot find function `sleep` in this scope
LL | sleep();
| ^^^^^ not found in this scope
|
help: consider using the associated function
|
LL | self.sleep();
| +++++
help: consider importing this function
|
LL | use std::thread::sleep;

View file

@ -7,13 +7,18 @@ LL | foo();
help: consider using the associated function
|
LL | Self::foo();
| ~~~~~~~~~
| ++++++
error[E0425]: cannot find function `bar` in this scope
--> $DIR/assoc_fn_without_self.rs:17: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:18:9
@ -24,7 +29,7 @@ LL | baz(2, 3);
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:14:13