From cb6984217f12acd1da6eb7f244effe2c9f9f11f8 Mon Sep 17 00:00:00 2001 From: Young-Flash <871946895@qq.com> Date: Sat, 9 Dec 2023 17:49:40 +0800 Subject: [PATCH] chore: add test case for type with generic --- ...ggest-assoc-fn-call-without-receiver.fixed | 14 ++++++ .../suggest-assoc-fn-call-without-receiver.rs | 14 ++++++ ...gest-assoc-fn-call-without-receiver.stderr | 44 +++++++++++++++++-- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.fixed b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.fixed index 6e679134d636c..61f06d802b68f 100644 --- a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.fixed +++ b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.fixed @@ -7,10 +7,24 @@ impl A { fn test(_a: Self, _b: i32) {} } +struct B { + _b: T +} +impl B { + fn hello(_a: i32) {} + fn test(_a: Self, _b: i32) {} +} + fn main() { let _a = A {}; A::hello(1); //~^ ERROR no method named `hello` found A::test(_a, 1); //~^ ERROR no method named `test` found + + let _b = B {_b: ""}; + B::<&str>::hello(1); + //~^ ERROR no method named `hello` found + B::<&str>::test(_b, 1); + //~^ ERROR no method named `test` found } diff --git a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.rs b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.rs index 67c2cc1bed561..07e614f0c15e5 100644 --- a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.rs +++ b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.rs @@ -7,10 +7,24 @@ impl A { fn test(_a: Self, _b: i32) {} } +struct B { + _b: T +} +impl B { + fn hello(_a: i32) {} + fn test(_a: Self, _b: i32) {} +} + fn main() { let _a = A {}; _a.hello(1); //~^ ERROR no method named `hello` found _a.test(1); //~^ ERROR no method named `test` found + + let _b = B {_b: ""}; + _b.hello(1); + //~^ ERROR no method named `hello` found + _b.test(1); + //~^ ERROR no method named `test` found } diff --git a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.stderr b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.stderr index ed227cbab3967..793595784d937 100644 --- a/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.stderr +++ b/tests/ui/suggestions/suggest-assoc-fn-call-without-receiver.stderr @@ -1,5 +1,5 @@ error[E0599]: no method named `hello` found for struct `A` in the current scope - --> $DIR/suggest-assoc-fn-call-without-receiver.rs:12:8 + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:20:8 | LL | struct A {} | -------- method `hello` not found for this struct @@ -18,7 +18,7 @@ LL | fn hello(_a: i32) {} | ^^^^^^^^^^^^^^^^^ error[E0599]: no method named `test` found for struct `A` in the current scope - --> $DIR/suggest-assoc-fn-call-without-receiver.rs:14:8 + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:22:8 | LL | struct A {} | -------- method `test` not found for this struct @@ -36,6 +36,44 @@ note: the candidate is defined in an impl for the type `A` LL | fn test(_a: Self, _b: i32) {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 2 previous errors +error[E0599]: no method named `hello` found for struct `B<&str>` in the current scope + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:26:8 + | +LL | struct B { + | ----------- method `hello` not found for this struct +... +LL | _b.hello(1); + | ---^^^^^--- + | | | + | | this is an associated function, not a method + | help: use associated function syntax instead: `B::<&str>::hello(1)` + | + = 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 `B` + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:14:5 + | +LL | fn hello(_a: i32) {} + | ^^^^^^^^^^^^^^^^^ + +error[E0599]: no method named `test` found for struct `B<&str>` in the current scope + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:28:8 + | +LL | struct B { + | ----------- method `test` not found for this struct +... +LL | _b.test(1); + | ---^^^^--- + | | | + | | this is an associated function, not a method + | help: use associated function syntax instead: `B::<&str>::test(_b, 1)` + | + = 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 `B` + --> $DIR/suggest-assoc-fn-call-without-receiver.rs:15:5 + | +LL | fn test(_a: Self, _b: i32) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0599`.