Skip to content

Commit

Permalink
Rollup merge of #104422 - compiler-errors:fix-suggest_associated_call…
Browse files Browse the repository at this point in the history
…_syntax, r=BoxyUwU

Fix suggest associated call syntax

Fixes #104412
  • Loading branch information
matthiaskrgr authored Nov 15, 2022
2 parents 5e753ca + 540e12f commit ce263b7
Show file tree
Hide file tree
Showing 6 changed files with 239 additions and 145 deletions.
316 changes: 171 additions & 145 deletions compiler/rustc_hir_typeck/src/method/suggest.rs

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/test/ui/suggestions/dont-suggest-ufcs-for-const.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fn main() {
1_u32.MAX();
//~^ ERROR no method named `MAX` found for type `u32` in the current scope
}
15 changes: 15 additions & 0 deletions src/test/ui/suggestions/dont-suggest-ufcs-for-const.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
error[E0599]: no method named `MAX` found for type `u32` in the current scope
--> $DIR/dont-suggest-ufcs-for-const.rs:2:11
|
LL | 1_u32.MAX();
| ------^^^--
| | |
| | this is an associated function, not a method
| help: use associated function syntax instead: `u32::MAX()`
|
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
= note: the candidate is defined in an impl for the type `u32`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0599`.
15 changes: 15 additions & 0 deletions src/test/ui/suggestions/suggest-assoc-fn-call-deref.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// run-rustfix

#![allow(unused)]

struct Foo<T>(T);

impl<T> Foo<T> {
fn test() -> i32 { 1 }
}

fn main() {
let x = Box::new(Foo(1i32));
Foo::<i32>::test();
//~^ ERROR no method named `test` found for struct `Box<Foo<i32>>` in the current scope
}
15 changes: 15 additions & 0 deletions src/test/ui/suggestions/suggest-assoc-fn-call-deref.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// run-rustfix

#![allow(unused)]

struct Foo<T>(T);

impl<T> Foo<T> {
fn test() -> i32 { 1 }
}

fn main() {
let x = Box::new(Foo(1i32));
x.test();
//~^ ERROR no method named `test` found for struct `Box<Foo<i32>>` in the current scope
}
19 changes: 19 additions & 0 deletions src/test/ui/suggestions/suggest-assoc-fn-call-deref.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
error[E0599]: no method named `test` found for struct `Box<Foo<i32>>` in the current scope
--> $DIR/suggest-assoc-fn-call-deref.rs:13:7
|
LL | x.test();
| --^^^^--
| | |
| | this is an associated function, not a method
| help: use associated function syntax instead: `Foo::<i32>::test()`
|
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
note: the candidate is defined in an impl for the type `Foo<T>`
--> $DIR/suggest-assoc-fn-call-deref.rs:8:5
|
LL | fn test() -> i32 { 1 }
| ^^^^^^^^^^^^^^^^

error: aborting due to previous error

For more information about this error, try `rustc --explain E0599`.

0 comments on commit ce263b7

Please sign in to comment.