Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from
Nov 11, 2022

Conversation

chenyukang
Copy link
Member

Fixes #103474

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Oct 25, 2022
@rust-highfive
Copy link
Collaborator

r? @estebank

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 25, 2022
@chenyukang chenyukang changed the title Suggest calling the method of the same name when method not found Suggest calling the instance method of the same name when method not found Oct 25, 2022
@@ -381,11 +381,13 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
}

fn suggest_self_or_self_ref(&mut self, err: &mut Diagnostic, path: &[Segment], span: Span) {
let is_assoc_fn = self.self_type_is_available();
if !self.self_type_is_available() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This probably causes a regression in the suggestions for the code:

struct Foo {
    i: i32,
}

impl Foo {
    fn needs_self() {
        this.i
    }
}

Which currently looks like:

error[[E0425]](https://doc.rust-lang.org/stable/error-index.html#E0425): cannot find value `this` in this scope
 --> src/lib.rs:7:9
  |
7 |         this.i
  |         ^^^^ not found in this scope
  |
help: you might have meant to use `self` here instead
  |
7 |         self.i
  |         ~~~~
help: if you meant to use `self`, you are also missing a `self` receiver argument
  |
6 |     fn needs_self(&self) {
  |                   +++++

Can you check that it still works? Also useful to commit a test for it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This testcase still works, I didn't change the meaning of suggest_self_or_self_ref, I moved the check from L388 to beginning of this function, removed a variable is_assoc_fn.

I will add this code into tests.

@estebank
Copy link
Contributor

@bors r+

@bors
Copy link
Contributor

bors commented Nov 10, 2022

📌 Commit 2716449 has been approved by estebank

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 10, 2022
Manishearth added a commit to Manishearth/rust that referenced this pull request Nov 11, 2022
…tebank

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

Fixes rust-lang#103474
Manishearth added a commit to Manishearth/rust that referenced this pull request Nov 11, 2022
…tebank

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

Fixes rust-lang#103474
bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 11, 2022
…earth

Rollup of 8 pull requests

Successful merges:

 - rust-lang#95292 (Allow specialized const trait impls.)
 - rust-lang#100386 (Make `Sized` coinductive, again)
 - rust-lang#102215 (Implement the `+whole-archive` modifier for `wasm-ld`)
 - rust-lang#103468 (Fix unused lint and parser caring about spaces to won't produce invalid code)
 - rust-lang#103531 (Suggest calling the instance method of the same name when method not found)
 - rust-lang#103960 (piece of diagnostic migrate)
 - rust-lang#104051 (update Miri)
 - rust-lang#104129 (rustdoc: use javascript to layout notable traits popups)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit f00897e into rust-lang:master Nov 11, 2022
@rustbot rustbot added this to the 1.67.0 milestone Nov 11, 2022
Aaron1011 pushed a commit to Aaron1011/rust that referenced this pull request Jan 6, 2023
…tebank

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

Fixes rust-lang#103474
Aaron1011 pushed a commit to Aaron1011/rust that referenced this pull request Jan 6, 2023
…earth

Rollup of 8 pull requests

Successful merges:

 - rust-lang#95292 (Allow specialized const trait impls.)
 - rust-lang#100386 (Make `Sized` coinductive, again)
 - rust-lang#102215 (Implement the `+whole-archive` modifier for `wasm-ld`)
 - rust-lang#103468 (Fix unused lint and parser caring about spaces to won't produce invalid code)
 - rust-lang#103531 (Suggest calling the instance method of the same name when method not found)
 - rust-lang#103960 (piece of diagnostic migrate)
 - rust-lang#104051 (update Miri)
 - rust-lang#104129 (rustdoc: use javascript to layout notable traits popups)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

When a function name within a method is not found, suggest calling the method of the same name
6 participants