From 3a9a0bc968d9bb97c80f18b4323b3ad75cc8bbad Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 14 Jul 2019 14:19:00 +0200 Subject: Add another test for assoc type resolution --- crates/ra_hir/src/ty/tests.rs | 52 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 6 deletions(-) (limited to 'crates/ra_hir/src/ty') diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index d5f7a4d25..9d412ff61 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs @@ -2508,15 +2508,55 @@ struct S; impl Iterable for S { type Item = u32; } fn test() { let x: ::Item = 1; - let y: T::Item = no_matter; + let y: ::Item = no_matter; + let z: T::Item = no_matter; } "#), @r###" -[108; 181) '{ ...ter; }': () -[118; 119) 'x': i32 -[145; 146) '1': i32 -[156; 157) 'y': {unknown} -[169; 178) 'no_matter': {unknown}"### + ⋮ + ⋮[108; 227) '{ ...ter; }': () + ⋮[118; 119) 'x': i32 + ⋮[145; 146) '1': i32 + ⋮[156; 157) 'y': {unknown} + ⋮[183; 192) 'no_matter': {unknown} + ⋮[202; 203) 'z': {unknown} + ⋮[215; 224) 'no_matter': {unknown} + "### + ); +} + +#[test] +fn infer_return_associated_type() { + assert_snapshot_matches!( + infer(r#" +trait Iterable { + type Item; +} +struct S; +impl Iterable for S { type Item = u32; } +fn foo1(t: T) -> T::Item {} +fn foo2(t: T) -> ::Item {} +fn test() { + let x = foo1(S); + let y = foo2(S); +} +"#), + @r###" + ⋮ + ⋮[106; 107) 't': T + ⋮[123; 125) '{}': () + ⋮[147; 148) 't': T + ⋮[178; 180) '{}': () + ⋮[191; 236) '{ ...(S); }': () + ⋮[201; 202) 'x': {unknown} + ⋮[205; 209) 'foo1': fn foo1(T) -> {unknown} + ⋮[205; 212) 'foo1(S)': {unknown} + ⋮[210; 211) 'S': S + ⋮[222; 223) 'y': {unknown} + ⋮[226; 230) 'foo2': fn foo2(T) -> {unknown} + ⋮[226; 233) 'foo2(S)': {unknown} + ⋮[231; 232) 'S': S + "### ); } -- cgit v1.2.3