@@ -46,22 +46,17 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
4646 } ;
4747
4848 // Determine whether the sub and sup consist of both anonymous (elided) regions.
49- let ( ty_sup, ty_sub, scope_def_id_sup, scope_def_id_sub, bregion_sup, bregion_sub) =
50- if let ( Some ( anon_reg_sup) , Some ( anon_reg_sub) ) =
51- ( self . is_suitable_anonymous_region ( sup) , self . is_suitable_anonymous_region ( sub) ) {
52- let ( def_id_sup, br_sup, def_id_sub, br_sub) = ( anon_reg_sup. def_id ,
53- anon_reg_sup. boundregion ,
54- anon_reg_sub. def_id ,
55- anon_reg_sub. boundregion ) ;
56- if let ( Some ( anonarg_sup) , Some ( anonarg_sub) ) =
57- ( self . find_anon_type ( sup, & br_sup) , self . find_anon_type ( sub, & br_sub) ) {
58- ( anonarg_sup, anonarg_sub, def_id_sup, def_id_sub, br_sup, br_sub)
59- } else {
60- return false ;
61- }
62- } else {
63- return false ;
64- } ;
49+ let anon_reg_sup = or_false ! ( self . is_suitable_anonymous_region( sup) ) ;
50+
51+ let anon_reg_sub = or_false ! ( self . is_suitable_anonymous_region( sub) ) ;
52+ let scope_def_id_sup = anon_reg_sup. def_id ;
53+ let bregion_sup = anon_reg_sup. boundregion ;
54+ let scope_def_id_sub = anon_reg_sub. def_id ;
55+ let bregion_sub = anon_reg_sub. boundregion ;
56+
57+ let ty_sup = or_false ! ( self . find_anon_type( sup, & bregion_sup) ) ;
58+
59+ let ty_sub = or_false ! ( self . find_anon_type( sub, & bregion_sub) ) ;
6560
6661 let ( main_label, label1, label2) = if let ( Some ( sup_arg) , Some ( sub_arg) ) =
6762 ( self . find_arg_with_anonymous_region ( sup, sup) ,
@@ -105,7 +100,6 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
105100 return false ;
106101 } ;
107102
108-
109103 struct_span_err ! ( self . tcx. sess, span, E0623 , "lifetime mismatch" )
110104 . span_label ( ty_sup. span , main_label)
111105 . span_label ( ty_sub. span , format ! ( "" ) )
0 commit comments