@@ -3279,6 +3279,7 @@ fn impl_trait() {
3279
3279
infer( r#"
3280
3280
trait Trait<T> {
3281
3281
fn foo(&self) -> T;
3282
+ fn foo2(&self) -> i64;
3282
3283
}
3283
3284
fn bar() -> impl Trait<u64> {}
3284
3285
@@ -3289,26 +3290,36 @@ fn test(x: impl Trait<u64>, y: &impl Trait<u64>) {
3289
3290
x.foo();
3290
3291
y.foo();
3291
3292
z.foo();
3293
+ x.foo2();
3294
+ y.foo2();
3295
+ z.foo2();
3292
3296
}
3293
3297
"# ) ,
3294
3298
@r###"
3295
3299
⋮
3296
3300
⋮[30; 34) 'self': &Self
3297
- ⋮[72; 74) '{}': ()
3298
- ⋮[84; 85) 'x': impl Trait<u64>
3299
- ⋮[104; 105) 'y': &impl Trait<u64>
3300
- ⋮[125; 200) '{ ...o(); }': ()
3301
- ⋮[131; 132) 'x': impl Trait<u64>
3302
- ⋮[138; 139) 'y': &impl Trait<u64>
3303
- ⋮[149; 150) 'z': impl Trait<u64>
3304
- ⋮[153; 156) 'bar': fn bar() -> impl Trait<u64>
3305
- ⋮[153; 158) 'bar()': impl Trait<u64>
3306
- ⋮[164; 165) 'x': impl Trait<u64>
3307
- ⋮[164; 171) 'x.foo()': {unknown}
3308
- ⋮[177; 178) 'y': &impl Trait<u64>
3309
- ⋮[177; 184) 'y.foo()': {unknown}
3310
- ⋮[190; 191) 'z': impl Trait<u64>
3311
- ⋮[190; 197) 'z.foo()': {unknown}
3301
+ ⋮[55; 59) 'self': &Self
3302
+ ⋮[99; 101) '{}': ()
3303
+ ⋮[111; 112) 'x': impl Trait<u64>
3304
+ ⋮[131; 132) 'y': &impl Trait<u64>
3305
+ ⋮[152; 269) '{ ...2(); }': ()
3306
+ ⋮[158; 159) 'x': impl Trait<u64>
3307
+ ⋮[165; 166) 'y': &impl Trait<u64>
3308
+ ⋮[176; 177) 'z': impl Trait<u64>
3309
+ ⋮[180; 183) 'bar': fn bar() -> impl Trait<u64>
3310
+ ⋮[180; 185) 'bar()': impl Trait<u64>
3311
+ ⋮[191; 192) 'x': impl Trait<u64>
3312
+ ⋮[191; 198) 'x.foo()': {unknown}
3313
+ ⋮[204; 205) 'y': &impl Trait<u64>
3314
+ ⋮[204; 211) 'y.foo()': {unknown}
3315
+ ⋮[217; 218) 'z': impl Trait<u64>
3316
+ ⋮[217; 224) 'z.foo()': {unknown}
3317
+ ⋮[230; 231) 'x': impl Trait<u64>
3318
+ ⋮[230; 238) 'x.foo2()': i64
3319
+ ⋮[244; 245) 'y': &impl Trait<u64>
3320
+ ⋮[244; 252) 'y.foo2()': i64
3321
+ ⋮[258; 259) 'z': impl Trait<u64>
3322
+ ⋮[258; 266) 'z.foo2()': i64
3312
3323
"###
3313
3324
) ;
3314
3325
}
@@ -3319,6 +3330,7 @@ fn dyn_trait() {
3319
3330
infer( r#"
3320
3331
trait Trait<T> {
3321
3332
fn foo(&self) -> T;
3333
+ fn foo2(&self) -> i64;
3322
3334
}
3323
3335
fn bar() -> dyn Trait<u64> {}
3324
3336
@@ -3329,26 +3341,36 @@ fn test(x: dyn Trait<u64>, y: &dyn Trait<u64>) {
3329
3341
x.foo();
3330
3342
y.foo();
3331
3343
z.foo();
3344
+ x.foo2();
3345
+ y.foo2();
3346
+ z.foo2();
3332
3347
}
3333
3348
"# ) ,
3334
3349
@r###"
3335
3350
⋮
3336
3351
⋮[30; 34) 'self': &Self
3337
- ⋮[71; 73) '{}': ()
3338
- ⋮[83; 84) 'x': dyn Trait<u64>
3339
- ⋮[102; 103) 'y': &dyn Trait<u64>
3340
- ⋮[122; 197) '{ ...o(); }': ()
3341
- ⋮[128; 129) 'x': dyn Trait<u64>
3342
- ⋮[135; 136) 'y': &dyn Trait<u64>
3343
- ⋮[146; 147) 'z': dyn Trait<u64>
3344
- ⋮[150; 153) 'bar': fn bar() -> dyn Trait<u64>
3345
- ⋮[150; 155) 'bar()': dyn Trait<u64>
3346
- ⋮[161; 162) 'x': dyn Trait<u64>
3347
- ⋮[161; 168) 'x.foo()': {unknown}
3348
- ⋮[174; 175) 'y': &dyn Trait<u64>
3349
- ⋮[174; 181) 'y.foo()': {unknown}
3350
- ⋮[187; 188) 'z': dyn Trait<u64>
3351
- ⋮[187; 194) 'z.foo()': {unknown}
3352
+ ⋮[55; 59) 'self': &Self
3353
+ ⋮[98; 100) '{}': ()
3354
+ ⋮[110; 111) 'x': dyn Trait<u64>
3355
+ ⋮[129; 130) 'y': &dyn Trait<u64>
3356
+ ⋮[149; 266) '{ ...2(); }': ()
3357
+ ⋮[155; 156) 'x': dyn Trait<u64>
3358
+ ⋮[162; 163) 'y': &dyn Trait<u64>
3359
+ ⋮[173; 174) 'z': dyn Trait<u64>
3360
+ ⋮[177; 180) 'bar': fn bar() -> dyn Trait<u64>
3361
+ ⋮[177; 182) 'bar()': dyn Trait<u64>
3362
+ ⋮[188; 189) 'x': dyn Trait<u64>
3363
+ ⋮[188; 195) 'x.foo()': {unknown}
3364
+ ⋮[201; 202) 'y': &dyn Trait<u64>
3365
+ ⋮[201; 208) 'y.foo()': {unknown}
3366
+ ⋮[214; 215) 'z': dyn Trait<u64>
3367
+ ⋮[214; 221) 'z.foo()': {unknown}
3368
+ ⋮[227; 228) 'x': dyn Trait<u64>
3369
+ ⋮[227; 235) 'x.foo2()': i64
3370
+ ⋮[241; 242) 'y': &dyn Trait<u64>
3371
+ ⋮[241; 249) 'y.foo2()': i64
3372
+ ⋮[255; 256) 'z': dyn Trait<u64>
3373
+ ⋮[255; 263) 'z.foo2()': i64
3352
3374
"###
3353
3375
) ;
3354
3376
}
0 commit comments