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

Use structured suggestion for disambiguating method calls #67127

Merged
merged 2 commits into from
Dec 20, 2019

Conversation

estebank
Copy link
Contributor

@estebank estebank commented Dec 7, 2019

Fix #65635.

@rust-highfive
Copy link
Collaborator

r? @varkor

(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 Dec 7, 2019
| --^^^--
| | |
| | multiple `foo` found
| help: disambiguate the method call for candidate #2: `T::foo(&x)`
Copy link
Member

Choose a reason for hiding this comment

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

Why is there only one disambiguation suggestion here?

Copy link
Contributor Author

@estebank estebank Dec 13, 2019

Choose a reason for hiding this comment

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

The code for this is


trait T {
    fn foo(&self);
}

impl<'a> dyn T + 'a {
    fn foo(&self) {}
}

impl T for i32 {
    fn foo(&self) {}
}

fn main() {
    let x: &dyn T = &0i32;
    x.foo(); //~ ERROR multiple applicable items in scope [E0034]
}

I'm not sure what the appropriate syntax would be to call (&dyn T)::foo. Also note that we were already not suggesting it.

Copy link
Member

Choose a reason for hiding this comment

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

Also note that we were already not suggesting it.

I did notice this. I think we ought to open a new issue — if the user can't specify (&dyn T)::foo, we should at least explain this in the diagnostic. But this PR looks good as it is.

@varkor
Copy link
Member

varkor commented Dec 17, 2019

@bors r+

@bors
Copy link
Contributor

bors commented Dec 17, 2019

📌 Commit 8c4f1d5 has been approved by varkor

@bors
Copy link
Contributor

bors commented Dec 17, 2019

🌲 The tree is currently closed for pull requests below priority 100, this pull request will be tested once the tree is reopened

@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 Dec 17, 2019
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this pull request Dec 18, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
tmandry added a commit to tmandry/rust that referenced this pull request Dec 18, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this pull request Dec 19, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
Centril added a commit to Centril/rust that referenced this pull request Dec 19, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
Centril added a commit to Centril/rust that referenced this pull request Dec 19, 2019
Rollup of 7 pull requests

Successful merges:

 - rust-lang#66670 (Normalize ident)
 - rust-lang#66755 (Remove a const-if-hack in RawVec)
 - rust-lang#67127 (Use structured suggestion for disambiguating method calls)
 - rust-lang#67281 (add string.insert benchmarks)
 - rust-lang#67328 (Remove now-redundant range check on u128 -> f32 casts)
 - rust-lang#67392 (Fix unresolved type span inside async object)
 - rust-lang#67421 (Fix internal documentation typo)

Failed merges:

r? @ghost
Centril added a commit to Centril/rust that referenced this pull request Dec 19, 2019
Rollup of 7 pull requests

Successful merges:

 - rust-lang#66670 (Normalize ident)
 - rust-lang#66755 (Remove a const-if-hack in RawVec)
 - rust-lang#67127 (Use structured suggestion for disambiguating method calls)
 - rust-lang#67281 (add string.insert benchmarks)
 - rust-lang#67328 (Remove now-redundant range check on u128 -> f32 casts)
 - rust-lang#67392 (Fix unresolved type span inside async object)
 - rust-lang#67421 (Fix internal documentation typo)

Failed merges:

r? @ghost
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this pull request Dec 19, 2019
Rollup of 7 pull requests

Successful merges:

 - rust-lang#66670 (Normalize ident)
 - rust-lang#66755 (Remove a const-if-hack in RawVec)
 - rust-lang#67127 (Use structured suggestion for disambiguating method calls)
 - rust-lang#67281 (add string.insert benchmarks)
 - rust-lang#67328 (Remove now-redundant range check on u128 -> f32 casts)
 - rust-lang#67392 (Fix unresolved type span inside async object)
 - rust-lang#67421 (Fix internal documentation typo)

Failed merges:

r? @ghost
Centril added a commit to Centril/rust that referenced this pull request Dec 20, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
Centril added a commit to Centril/rust that referenced this pull request Dec 20, 2019
…=varkor

Use structured suggestion for disambiguating method calls

Fix rust-lang#65635.
bors added a commit that referenced this pull request Dec 20, 2019
Rollup of 7 pull requests

Successful merges:

 - #66755 (Remove a const-if-hack in RawVec)
 - #67127 (Use structured suggestion for disambiguating method calls)
 - #67219 (Fix up Command Debug output when arg0 is specified.)
 - #67285 (Indicate origin of where type parameter for uninferred types )
 - #67328 (Remove now-redundant range check on u128 -> f32 casts)
 - #67367 (Move command line option definitions into a dedicated file)
 - #67442 (Remove `SOCK_CLOEXEC` dummy variable on platforms that don't use it.)

Failed merges:

r? @ghost
@bors bors merged commit 8c4f1d5 into rust-lang:master Dec 20, 2019
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.
Projects
None yet
5 participants