@@ -46,22 +46,17 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
46
46
} ;
47
47
48
48
// 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) ) ;
65
60
66
61
let ( main_label, label1, label2) = if let ( Some ( sup_arg) , Some ( sub_arg) ) =
67
62
( self . find_arg_with_anonymous_region ( sup, sup) ,
@@ -105,7 +100,6 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
105
100
return false ;
106
101
} ;
107
102
108
-
109
103
struct_span_err ! ( self . tcx. sess, span, E0623 , "lifetime mismatch" )
110
104
. span_label ( ty_sup. span , main_label)
111
105
. span_label ( ty_sub. span , format ! ( "" ) )
0 commit comments