@@ -945,27 +945,14 @@ impl<'tcx> InferCtxt<'tcx> {
945945 ( & ty:: Infer ( ty:: TyVar ( a_vid) ) , & ty:: Infer ( ty:: TyVar ( b_vid) ) ) => {
946946 return Err ( ( a_vid, b_vid) ) ;
947947 }
948- // We don't silently want to constrain hidden types here, so we assert that either one side is
949- // an infer var, so it'll get constrained to whatever the other side is, or there are no opaque
950- // types involved.
951- // We don't expect this to actually get hit, but if it does, we now at least know how to write
952- // a test for it.
953- ( _, ty:: Infer ( ty:: TyVar ( _) ) ) => { }
954- ( ty:: Infer ( ty:: TyVar ( _) ) , _) => { }
955- _ if r_a != r_b && ( r_a, r_b) . has_opaque_types ( ) => {
956- span_bug ! (
957- cause. span( ) ,
958- "opaque types got hidden types registered from within subtype predicate: {r_a:?} vs {r_b:?}"
959- )
960- }
961948 _ => { }
962949 }
963950
964951 self . enter_forall ( predicate, |ty:: SubtypePredicate { a_is_expected, a, b } | {
965952 if a_is_expected {
966- Ok ( self . at ( cause, param_env) . sub ( DefineOpaqueTypes :: Yes , a, b) )
953+ Ok ( self . at ( cause, param_env) . sub ( DefineOpaqueTypes :: No , a, b) )
967954 } else {
968- Ok ( self . at ( cause, param_env) . sup ( DefineOpaqueTypes :: Yes , b, a) )
955+ Ok ( self . at ( cause, param_env) . sup ( DefineOpaqueTypes :: No , b, a) )
969956 }
970957 } )
971958 }
0 commit comments