diff options
Diffstat (limited to 'crates/ra_hir/src/ty/tests.rs')
-rw-r--r-- | crates/ra_hir/src/ty/tests.rs | 82 |
1 files changed, 52 insertions, 30 deletions
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index 93c62b0d4..41cea9564 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs | |||
@@ -3279,6 +3279,7 @@ fn impl_trait() { | |||
3279 | infer(r#" | 3279 | infer(r#" |
3280 | trait Trait<T> { | 3280 | trait Trait<T> { |
3281 | fn foo(&self) -> T; | 3281 | fn foo(&self) -> T; |
3282 | fn foo2(&self) -> i64; | ||
3282 | } | 3283 | } |
3283 | fn bar() -> impl Trait<u64> {} | 3284 | fn bar() -> impl Trait<u64> {} |
3284 | 3285 | ||
@@ -3289,26 +3290,36 @@ fn test(x: impl Trait<u64>, y: &impl Trait<u64>) { | |||
3289 | x.foo(); | 3290 | x.foo(); |
3290 | y.foo(); | 3291 | y.foo(); |
3291 | z.foo(); | 3292 | z.foo(); |
3293 | x.foo2(); | ||
3294 | y.foo2(); | ||
3295 | z.foo2(); | ||
3292 | } | 3296 | } |
3293 | "#), | 3297 | "#), |
3294 | @r###" | 3298 | @r###" |
3295 | ⋮ | 3299 | ⋮ |
3296 | ⋮[30; 34) 'self': &Self | 3300 | ⋮[30; 34) 'self': &Self |
3297 | ⋮[72; 74) '{}': () | 3301 | ⋮[55; 59) 'self': &Self |
3298 | ⋮[84; 85) 'x': impl Trait<u64> | 3302 | ⋮[99; 101) '{}': () |
3299 | ⋮[104; 105) 'y': &impl Trait<u64> | 3303 | ⋮[111; 112) 'x': impl Trait<u64> |
3300 | ⋮[125; 200) '{ ...o(); }': () | 3304 | ⋮[131; 132) 'y': &impl Trait<u64> |
3301 | ⋮[131; 132) 'x': impl Trait<u64> | 3305 | ⋮[152; 269) '{ ...2(); }': () |
3302 | ⋮[138; 139) 'y': &impl Trait<u64> | 3306 | ⋮[158; 159) 'x': impl Trait<u64> |
3303 | ⋮[149; 150) 'z': impl Trait<u64> | 3307 | ⋮[165; 166) 'y': &impl Trait<u64> |
3304 | ⋮[153; 156) 'bar': fn bar() -> impl Trait<u64> | 3308 | ⋮[176; 177) 'z': impl Trait<u64> |
3305 | ⋮[153; 158) 'bar()': impl Trait<u64> | 3309 | ⋮[180; 183) 'bar': fn bar() -> impl Trait<u64> |
3306 | ⋮[164; 165) 'x': impl Trait<u64> | 3310 | ⋮[180; 185) 'bar()': impl Trait<u64> |
3307 | ⋮[164; 171) 'x.foo()': {unknown} | 3311 | ⋮[191; 192) 'x': impl Trait<u64> |
3308 | ⋮[177; 178) 'y': &impl Trait<u64> | 3312 | ⋮[191; 198) 'x.foo()': {unknown} |
3309 | ⋮[177; 184) 'y.foo()': {unknown} | 3313 | ⋮[204; 205) 'y': &impl Trait<u64> |
3310 | ⋮[190; 191) 'z': impl Trait<u64> | 3314 | ⋮[204; 211) 'y.foo()': {unknown} |
3311 | ⋮[190; 197) 'z.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 | infer(r#" | 3330 | infer(r#" |
3320 | trait Trait<T> { | 3331 | trait Trait<T> { |
3321 | fn foo(&self) -> T; | 3332 | fn foo(&self) -> T; |
3333 | fn foo2(&self) -> i64; | ||
3322 | } | 3334 | } |
3323 | fn bar() -> dyn Trait<u64> {} | 3335 | fn bar() -> dyn Trait<u64> {} |
3324 | 3336 | ||
@@ -3329,26 +3341,36 @@ fn test(x: dyn Trait<u64>, y: &dyn Trait<u64>) { | |||
3329 | x.foo(); | 3341 | x.foo(); |
3330 | y.foo(); | 3342 | y.foo(); |
3331 | z.foo(); | 3343 | z.foo(); |
3344 | x.foo2(); | ||
3345 | y.foo2(); | ||
3346 | z.foo2(); | ||
3332 | } | 3347 | } |
3333 | "#), | 3348 | "#), |
3334 | @r###" | 3349 | @r###" |
3335 | ⋮ | 3350 | ⋮ |
3336 | ⋮[30; 34) 'self': &Self | 3351 | ⋮[30; 34) 'self': &Self |
3337 | ⋮[71; 73) '{}': () | 3352 | ⋮[55; 59) 'self': &Self |
3338 | ⋮[83; 84) 'x': dyn Trait<u64> | 3353 | ⋮[98; 100) '{}': () |
3339 | ⋮[102; 103) 'y': &dyn Trait<u64> | 3354 | ⋮[110; 111) 'x': dyn Trait<u64> |
3340 | ⋮[122; 197) '{ ...o(); }': () | 3355 | ⋮[129; 130) 'y': &dyn Trait<u64> |
3341 | ⋮[128; 129) 'x': dyn Trait<u64> | 3356 | ⋮[149; 266) '{ ...2(); }': () |
3342 | ⋮[135; 136) 'y': &dyn Trait<u64> | 3357 | ⋮[155; 156) 'x': dyn Trait<u64> |
3343 | ⋮[146; 147) 'z': dyn Trait<u64> | 3358 | ⋮[162; 163) 'y': &dyn Trait<u64> |
3344 | ⋮[150; 153) 'bar': fn bar() -> dyn Trait<u64> | 3359 | ⋮[173; 174) 'z': dyn Trait<u64> |
3345 | ⋮[150; 155) 'bar()': dyn Trait<u64> | 3360 | ⋮[177; 180) 'bar': fn bar() -> dyn Trait<u64> |
3346 | ⋮[161; 162) 'x': dyn Trait<u64> | 3361 | ⋮[177; 182) 'bar()': dyn Trait<u64> |
3347 | ⋮[161; 168) 'x.foo()': {unknown} | 3362 | ⋮[188; 189) 'x': dyn Trait<u64> |
3348 | ⋮[174; 175) 'y': &dyn Trait<u64> | 3363 | ⋮[188; 195) 'x.foo()': {unknown} |
3349 | ⋮[174; 181) 'y.foo()': {unknown} | 3364 | ⋮[201; 202) 'y': &dyn Trait<u64> |
3350 | ⋮[187; 188) 'z': dyn Trait<u64> | 3365 | ⋮[201; 208) 'y.foo()': {unknown} |
3351 | ⋮[187; 194) 'z.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 | } |