Skip to content

Commit d03cfe1

Browse files
committed
Add test from #7273
1 parent 48ae948 commit d03cfe1

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

crates/hir_ty/src/tests/method_resolution.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,51 @@ fn test() { foo.call(); }
955955
);
956956
}
957957

958+
#[test]
959+
fn super_trait_impl_return_trait_method_resolution() {
960+
check_infer(
961+
r#"
962+
trait Base {
963+
fn foo(self) -> usize;
964+
}
965+
966+
trait Super : Base {}
967+
968+
fn base1() -> impl Base { loop {} }
969+
fn super1() -> impl Super { loop {} }
970+
971+
fn test(base2: impl Base, super2: impl Super) {
972+
base1().foo();
973+
super1().foo();
974+
base2.foo();
975+
super2.foo();
976+
}
977+
"#,
978+
expect![[r#"
979+
24..28 'self': Self
980+
90..101 '{ loop {} }': !
981+
92..99 'loop {}': !
982+
97..99 '{}': ()
983+
128..139 '{ loop {} }': !
984+
130..137 'loop {}': !
985+
135..137 '{}': ()
986+
149..154 'base2': impl Base
987+
167..173 'super2': impl Super
988+
187..264 '{ ...o(); }': ()
989+
193..198 'base1': fn base1() -> impl Base
990+
193..200 'base1()': impl Base
991+
193..206 'base1().foo()': usize
992+
212..218 'super1': fn super1() -> impl Super
993+
212..220 'super1()': impl Super
994+
212..226 'super1().foo()': usize
995+
232..237 'base2': impl Base
996+
232..243 'base2.foo()': usize
997+
249..255 'super2': impl Super
998+
249..261 'super2.foo()': usize
999+
"#]],
1000+
);
1001+
}
1002+
9581003
#[test]
9591004
fn method_resolution_non_parameter_type() {
9601005
check_types(

0 commit comments

Comments
 (0)