diff options
Diffstat (limited to 'crates/ra_hir_ty/src/tests')
-rw-r--r-- | crates/ra_hir_ty/src/tests/regression.rs | 36 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/simple.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/tests/traits.rs | 5 |
3 files changed, 44 insertions, 1 deletions
diff --git a/crates/ra_hir_ty/src/tests/regression.rs b/crates/ra_hir_ty/src/tests/regression.rs index 09d684ac2..8b3aa8564 100644 --- a/crates/ra_hir_ty/src/tests/regression.rs +++ b/crates/ra_hir_ty/src/tests/regression.rs | |||
@@ -1,7 +1,8 @@ | |||
1 | use super::infer; | ||
2 | use insta::assert_snapshot; | 1 | use insta::assert_snapshot; |
3 | use test_utils::covers; | 2 | use test_utils::covers; |
4 | 3 | ||
4 | use super::infer; | ||
5 | |||
5 | #[test] | 6 | #[test] |
6 | fn bug_484() { | 7 | fn bug_484() { |
7 | assert_snapshot!( | 8 | assert_snapshot!( |
@@ -331,3 +332,36 @@ pub fn main_loop() { | |||
331 | "### | 332 | "### |
332 | ); | 333 | ); |
333 | } | 334 | } |
335 | |||
336 | #[test] | ||
337 | fn issue_2669() { | ||
338 | assert_snapshot!( | ||
339 | infer( | ||
340 | r#"trait A {} | ||
341 | trait Write {} | ||
342 | struct Response<T> {} | ||
343 | |||
344 | trait D { | ||
345 | fn foo(); | ||
346 | } | ||
347 | |||
348 | impl<T:A> D for Response<T> { | ||
349 | fn foo() { | ||
350 | end(); | ||
351 | fn end<W: Write>() { | ||
352 | let _x: T = loop {}; | ||
353 | } | ||
354 | } | ||
355 | }"# | ||
356 | ), | ||
357 | @r###" | ||
358 | [147; 262) '{ ... }': () | ||
359 | [161; 164) 'end': fn end<{unknown}>() -> () | ||
360 | [161; 166) 'end()': () | ||
361 | [199; 252) '{ ... }': () | ||
362 | [221; 223) '_x': ! | ||
363 | [230; 237) 'loop {}': ! | ||
364 | [235; 237) '{}': () | ||
365 | "### | ||
366 | ) | ||
367 | } | ||
diff --git a/crates/ra_hir_ty/src/tests/simple.rs b/crates/ra_hir_ty/src/tests/simple.rs index 3e5e163e3..f7e042c12 100644 --- a/crates/ra_hir_ty/src/tests/simple.rs +++ b/crates/ra_hir_ty/src/tests/simple.rs | |||
@@ -20,6 +20,7 @@ fn test() { | |||
20 | mod prelude {} | 20 | mod prelude {} |
21 | 21 | ||
22 | mod boxed { | 22 | mod boxed { |
23 | #[lang = "owned_box"] | ||
23 | pub struct Box<T: ?Sized> { | 24 | pub struct Box<T: ?Sized> { |
24 | inner: *mut T, | 25 | inner: *mut T, |
25 | } | 26 | } |
@@ -1518,6 +1519,7 @@ fn test() { | |||
1518 | [167; 179) 'GLOBAL_CONST': u32 | 1519 | [167; 179) 'GLOBAL_CONST': u32 |
1519 | [189; 191) 'id': u32 | 1520 | [189; 191) 'id': u32 |
1520 | [194; 210) 'Foo::A..._CONST': u32 | 1521 | [194; 210) 'Foo::A..._CONST': u32 |
1522 | [126; 128) '99': u32 | ||
1521 | "### | 1523 | "### |
1522 | ); | 1524 | ); |
1523 | } | 1525 | } |
@@ -1549,6 +1551,8 @@ fn test() { | |||
1549 | [233; 246) 'GLOBAL_STATIC': u32 | 1551 | [233; 246) 'GLOBAL_STATIC': u32 |
1550 | [256; 257) 'w': u32 | 1552 | [256; 257) 'w': u32 |
1551 | [260; 277) 'GLOBAL...IC_MUT': u32 | 1553 | [260; 277) 'GLOBAL...IC_MUT': u32 |
1554 | [118; 120) '99': u32 | ||
1555 | [161; 163) '99': u32 | ||
1552 | "### | 1556 | "### |
1553 | ); | 1557 | ); |
1554 | } | 1558 | } |
diff --git a/crates/ra_hir_ty/src/tests/traits.rs b/crates/ra_hir_ty/src/tests/traits.rs index 0bc72644a..4b268510c 100644 --- a/crates/ra_hir_ty/src/tests/traits.rs +++ b/crates/ra_hir_ty/src/tests/traits.rs | |||
@@ -27,6 +27,7 @@ fn test() { | |||
27 | //- /std.rs crate:std | 27 | //- /std.rs crate:std |
28 | #[prelude_import] use future::*; | 28 | #[prelude_import] use future::*; |
29 | mod future { | 29 | mod future { |
30 | #[lang = "future_trait"] | ||
30 | trait Future { | 31 | trait Future { |
31 | type Output; | 32 | type Output; |
32 | } | 33 | } |
@@ -56,6 +57,7 @@ fn test() { | |||
56 | //- /std.rs crate:std | 57 | //- /std.rs crate:std |
57 | #[prelude_import] use future::*; | 58 | #[prelude_import] use future::*; |
58 | mod future { | 59 | mod future { |
60 | #[lang = "future_trait"] | ||
59 | trait Future { | 61 | trait Future { |
60 | type Output; | 62 | type Output; |
61 | } | 63 | } |
@@ -198,6 +200,7 @@ fn test() { | |||
198 | 200 | ||
199 | #[prelude_import] use ops::*; | 201 | #[prelude_import] use ops::*; |
200 | mod ops { | 202 | mod ops { |
203 | #[lang = "neg"] | ||
201 | pub trait Neg { | 204 | pub trait Neg { |
202 | type Output; | 205 | type Output; |
203 | } | 206 | } |
@@ -230,6 +233,7 @@ fn test() { | |||
230 | 233 | ||
231 | #[prelude_import] use ops::*; | 234 | #[prelude_import] use ops::*; |
232 | mod ops { | 235 | mod ops { |
236 | #[lang = "not"] | ||
233 | pub trait Not { | 237 | pub trait Not { |
234 | type Output; | 238 | type Output; |
235 | } | 239 | } |
@@ -506,6 +510,7 @@ fn test() { | |||
506 | 510 | ||
507 | #[prelude_import] use ops::*; | 511 | #[prelude_import] use ops::*; |
508 | mod ops { | 512 | mod ops { |
513 | #[lang = "index"] | ||
509 | pub trait Index<Idx> { | 514 | pub trait Index<Idx> { |
510 | type Output; | 515 | type Output; |
511 | } | 516 | } |