From 35d1c038967b9d69f2e501e24fec8351f3948779 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Mon, 16 Sep 2019 21:46:51 +0200 Subject: Add test for `::Item` --- crates/ra_hir/src/ty/tests.rs | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index dc4e8683d..fdcb3c37f 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs @@ -2685,6 +2685,7 @@ fn test() { #[test] fn infer_project_associated_type() { + // y, z, a don't yet work because of https://github.com/rust-lang/chalk/issues/234 assert_snapshot!( infer(r#" trait Iterable { @@ -2696,16 +2697,19 @@ fn test() { let x: ::Item = 1; let y: ::Item = no_matter; let z: T::Item = no_matter; + let a: ::Item = no_matter; } "#), @r###" - [108; 227) '{ ...ter; }': () + [108; 261) '{ ...ter; }': () [118; 119) 'x': u32 [145; 146) '1': u32 [156; 157) 'y': {unknown} [183; 192) 'no_matter': {unknown} [202; 203) 'z': {unknown} [215; 224) 'no_matter': {unknown} + [234; 235) 'a': {unknown} + [249; 258) 'no_matter': {unknown} "### ); } @@ -2721,9 +2725,11 @@ struct S; impl Iterable for S { type Item = u32; } fn foo1(t: T) -> T::Item {} fn foo2(t: T) -> ::Item {} +fn foo3(t: T) -> ::Item {} fn test() { let x = foo1(S); let y = foo2(S); + let z = foo3(S); } "#), @r###" @@ -2731,15 +2737,21 @@ fn test() { [123; 125) '{}': () [147; 148) 't': T [178; 180) '{}': () - [191; 236) '{ ...(S); }': () - [201; 202) 'x': u32 - [205; 209) 'foo1': fn foo1(T) -> ::Item - [205; 212) 'foo1(S)': u32 - [210; 211) 'S': S - [222; 223) 'y': u32 - [226; 230) 'foo2': fn foo2(T) -> ::Item - [226; 233) 'foo2(S)': u32 - [231; 232) 'S': S + [202; 203) 't': T + [221; 223) '{}': () + [234; 300) '{ ...(S); }': () + [244; 245) 'x': u32 + [248; 252) 'foo1': fn foo1(T) -> ::Item + [248; 255) 'foo1(S)': u32 + [253; 254) 'S': S + [265; 266) 'y': u32 + [269; 273) 'foo2': fn foo2(T) -> ::Item + [269; 276) 'foo2(S)': u32 + [274; 275) 'S': S + [286; 287) 'z': u32 + [290; 294) 'foo3': fn foo3(T) -> ::Item + [290; 297) 'foo3(S)': u32 + [295; 296) 'S': S "### ); } -- cgit v1.2.3