@@ -1032,28 +1032,29 @@ struct B<T> {
10321032}
10331033
10341034trait Trait<T> {
1035- fn f(a: T);
1035+ fn f(&self, a: T) -> T ;
10361036}
10371037
10381038impl<T1, T2> Trait<T1> for B<T2> {
1039- fn f(a: T1) -> T2 { self. a }
1039+ fn f(&self, a: T1) -> T1 { a }
10401040}
10411041
10421042struct A {}
10431043struct S {
1044- b$0 : B<A>,
1045- }"# ,
1044+ b :$0 B<A>,
1045+ }
1046+ "# ,
10461047 r#"
10471048struct B<T> {
10481049 a: T
10491050}
10501051
10511052trait Trait<T> {
1052- fn f(a: T);
1053+ fn f(&self, a: T) -> T ;
10531054}
10541055
10551056impl<T1, T2> Trait<T1> for B<T2> {
1056- fn f(a: T1) -> T2 { self. a }
1057+ fn f(&self, a: T1) -> T1 { a }
10571058}
10581059
10591060struct A {}
@@ -1062,10 +1063,11 @@ struct S {
10621063}
10631064
10641065impl<T1> Trait<T1> for S {
1065- fn f(a: T1) -> A {
1066- <B<A> as Trait<T1>>::f(a)
1066+ fn f(&self, a: T1) -> T1 {
1067+ <B<A> as Trait<T1>>::f(&self.b, a)
10671068 }
1068- }"# ,
1069+ }
1070+ "# ,
10691071 ) ;
10701072 }
10711073
@@ -1088,7 +1090,8 @@ impl<T, T0> Trait<T> for B<T0> {
10881090
10891091struct S<T> {
10901092 b : $0B<T>,
1091- }"# ,
1093+ }
1094+ "# ,
10921095 r#"
10931096struct B<T> {
10941097 a: T
@@ -1110,7 +1113,8 @@ impl<T, T1> Trait<T> for S<T1> {
11101113 fn f(&self, a: T) -> T {
11111114 <B<T1> as Trait<T>>::f(&self.b, a)
11121115 }
1113- }"# ,
1116+ }
1117+ "# ,
11141118 ) ;
11151119 }
11161120
@@ -1133,7 +1137,8 @@ impl<'a, T, T0> Trait<T> for B<'a, T0> {
11331137
11341138struct S<'a, T> {
11351139 b : $0B<'a, T>,
1136- }"# ,
1140+ }
1141+ "# ,
11371142 r#"
11381143struct B<'a, T> {
11391144 a: &'a T
@@ -1155,7 +1160,8 @@ impl<'a, T, T1> Trait<T> for S<'a, T1> {
11551160 fn f(&self, a: T) -> T {
11561161 <B<'a, T1> as Trait<T>>::f(&self.b, a)
11571162 }
1158- }"# ,
1163+ }
1164+ "# ,
11591165 ) ;
11601166 }
11611167
@@ -1179,7 +1185,8 @@ impl<T, T0> Trait<T> for B<T, T0> {
11791185
11801186struct S<T> {
11811187 b :$0 B<i32, T>,
1182- }"# ,
1188+ }
1189+ "# ,
11831190 r#"
11841191struct B<T1, T2> {
11851192 a: T1,
@@ -1202,7 +1209,8 @@ impl<T1> Trait<i32> for S<T1> {
12021209 fn f(&self, a: i32) -> i32 {
12031210 <B<i32, T1> as Trait<i32>>::f(&self.b, a)
12041211 }
1205- }"# ,
1212+ }
1213+ "# ,
12061214 ) ;
12071215 }
12081216
@@ -1225,7 +1233,8 @@ impl<T> Trait<T> for B<T> {
12251233
12261234struct S<T> {
12271235 b : $0B<T>,
1228- }"# ,
1236+ }
1237+ "# ,
12291238 r#"
12301239struct B<T> {
12311240 a: T
@@ -1247,7 +1256,8 @@ impl<T0> Trait<T0> for S<T0> {
12471256 fn f(&self, a: T0) -> T0 {
12481257 <B<T0> as Trait<T0>>::f(&self.b, a)
12491258 }
1250- }"# ,
1259+ }
1260+ "# ,
12511261 ) ;
12521262 }
12531263
0 commit comments