File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff 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]
9591004fn method_resolution_non_parameter_type ( ) {
9601005 check_types (
You can’t perform that action at this time.
0 commit comments