diff options
| author | roife <roifewu@gmail.com> | 2023-12-13 11:42:45 +0800 |
|---|---|---|
| committer | roife <roifewu@gmail.com> | 2023-12-13 11:42:45 +0800 |
| commit | 5070534d323b5fe202a32450bc424201bab097fa (patch) | |
| tree | 6c443bc66e14d20fadbbc1118b3458f29453f57f | |
| parent | 59aa791fe6cd5bc24411f09283ad9af2ddad80f3 (diff) | |
| download | rust-5070534d323b5fe202a32450bc424201bab097fa.tar.gz rust-5070534d323b5fe202a32450bc424201bab097fa.zip | |
fix: testcases in `generate_delegate_trait`
| -rw-r--r-- | crates/ide-assists/src/handlers/generate_delegate_trait.rs | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/crates/ide-assists/src/handlers/generate_delegate_trait.rs b/crates/ide-assists/src/handlers/generate_delegate_trait.rs index 0728c587ee0..0d34502add9 100644 --- a/crates/ide-assists/src/handlers/generate_delegate_trait.rs +++ b/crates/ide-assists/src/handlers/generate_delegate_trait.rs @@ -1032,28 +1032,29 @@ struct B<T> { } trait Trait<T> { - fn f(a: T); + fn f(&self, a: T) -> T; } impl<T1, T2> Trait<T1> for B<T2> { - fn f(a: T1) -> T2 { self.a } + fn f(&self, a: T1) -> T1 { a } } struct A {} struct S { - b$0 : B<A>, -}"#, + b :$0 B<A>, +} +"#, r#" struct B<T> { a: T } trait Trait<T> { - fn f(a: T); + fn f(&self, a: T) -> T; } impl<T1, T2> Trait<T1> for B<T2> { - fn f(a: T1) -> T2 { self.a } + fn f(&self, a: T1) -> T1 { a } } struct A {} @@ -1062,10 +1063,11 @@ struct S { } impl<T1> Trait<T1> for S { - fn f(a: T1) -> A { - <B<A> as Trait<T1>>::f(a) + fn f(&self, a: T1) -> T1 { + <B<A> as Trait<T1>>::f(&self.b, a) } -}"#, +} +"#, ); } @@ -1088,7 +1090,8 @@ impl<T, T0> Trait<T> for B<T0> { struct S<T> { b : $0B<T>, -}"#, +} +"#, r#" struct B<T> { a: T @@ -1110,7 +1113,8 @@ impl<T, T1> Trait<T> for S<T1> { fn f(&self, a: T) -> T { <B<T1> as Trait<T>>::f(&self.b, a) } -}"#, +} +"#, ); } @@ -1133,7 +1137,8 @@ impl<'a, T, T0> Trait<T> for B<'a, T0> { struct S<'a, T> { b : $0B<'a, T>, -}"#, +} +"#, r#" struct B<'a, T> { a: &'a T @@ -1155,7 +1160,8 @@ impl<'a, T, T1> Trait<T> for S<'a, T1> { fn f(&self, a: T) -> T { <B<'a, T1> as Trait<T>>::f(&self.b, a) } -}"#, +} +"#, ); } @@ -1179,7 +1185,8 @@ impl<T, T0> Trait<T> for B<T, T0> { struct S<T> { b :$0 B<i32, T>, -}"#, +} +"#, r#" struct B<T1, T2> { a: T1, @@ -1202,7 +1209,8 @@ impl<T1> Trait<i32> for S<T1> { fn f(&self, a: i32) -> i32 { <B<i32, T1> as Trait<i32>>::f(&self.b, a) } -}"#, +} +"#, ); } @@ -1225,7 +1233,8 @@ impl<T> Trait<T> for B<T> { struct S<T> { b : $0B<T>, -}"#, +} +"#, r#" struct B<T> { a: T @@ -1247,7 +1256,8 @@ impl<T0> Trait<T0> for S<T0> { fn f(&self, a: T0) -> T0 { <B<T0> as Trait<T0>>::f(&self.b, a) } -}"#, +} +"#, ); } |
