aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/tests/coercion.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_ty/src/tests/coercion.rs')
-rw-r--r--crates/ra_hir_ty/src/tests/coercion.rs40
1 files changed, 26 insertions, 14 deletions
diff --git a/crates/ra_hir_ty/src/tests/coercion.rs b/crates/ra_hir_ty/src/tests/coercion.rs
index b6fce9377..5594ed394 100644
--- a/crates/ra_hir_ty/src/tests/coercion.rs
+++ b/crates/ra_hir_ty/src/tests/coercion.rs
@@ -587,25 +587,37 @@ pub trait CoerceUnsized<T> {}
587 587
588impl<T: Unsize<U>, U> CoerceUnsized<&U> for &T {} 588impl<T: Unsize<U>, U> CoerceUnsized<&U> for &T {}
589 589
590trait Foo {} 590trait Foo<T, U> {}
591trait Bar: Foo {} 591trait Bar<U, T, X>: Foo<T, U> {}
592struct S; 592trait Baz<T, X>: Bar<usize, T, X> {}
593impl Foo for S {} 593
594impl Bar for S {} 594struct S<T, X>;
595impl<T, X> Foo<T, usize> for S<T, X> {}
596impl<T, X> Bar<usize, T, X> for S<T, X> {}
597impl<T, X> Baz<T, X> for S<T, X> {}
595 598
596fn test() { 599fn test() {
597 let obj: &dyn Bar = &S; 600 let obj: &dyn Baz<i8, i16> = &S;
598 let obj: &dyn Foo = obj; 601 let obj: &dyn Bar<_, _, _> = obj;
602 let obj: &dyn Foo<_, _> = obj;
603 let obj2: &dyn Baz<i8, i16> = &S;
604 let _: &dyn Foo<_, _> = obj2;
599} 605}
600"#, true), 606"#, true),
601 @r###" 607 @r###"
602 [240; 300) '{ ...obj; }': () 608 [388; 573) '{ ...bj2; }': ()
603 [250; 253) 'obj': &dyn Bar 609 [398; 401) 'obj': &dyn Baz<i8, i16>
604 [266; 268) '&S': &S 610 [423; 425) '&S': &S<i8, i16>
605 [267; 268) 'S': S 611 [424; 425) 'S': S<i8, i16>
606 [278; 281) 'obj': &dyn Foo 612 [435; 438) 'obj': &dyn Bar<usize, i8, i16>
607 [294; 297) 'obj': &dyn Bar 613 [460; 463) 'obj': &dyn Baz<i8, i16>
608 [294; 297): expected &dyn Foo, got &dyn Bar 614 [473; 476) 'obj': &dyn Foo<i8, usize>
615 [495; 498) 'obj': &dyn Bar<usize, i8, i16>
616 [508; 512) 'obj2': &dyn Baz<i8, i16>
617 [534; 536) '&S': &S<i8, i16>
618 [535; 536) 'S': S<i8, i16>
619 [546; 547) '_': &dyn Foo<i8, usize>
620 [566; 570) 'obj2': &dyn Baz<i8, i16>
609 "### 621 "###
610 ); 622 );
611} 623}