@@ -322,37 +322,39 @@ impl<'tcx> RegionInferenceContext<'tcx> {
322
322
fn check_free_region (
323
323
& self ,
324
324
infcx : & InferCtxt < ' _ , ' _ , ' tcx > ,
325
- fr : RegionVid ,
326
- fr_definition : & RegionDefinition < ' tcx > ,
325
+ longer_fr : RegionVid ,
326
+ longer_definition : & RegionDefinition < ' tcx > ,
327
327
) {
328
328
let inferred_values = self . inferred_values . as_ref ( ) . unwrap ( ) ;
329
- let fr_name = fr_definition. name . unwrap ( ) ;
330
- let fr_value = inferred_values. iter ( fr. index ( ) ) ;
329
+ let longer_name = longer_definition. name . unwrap ( ) ;
330
+ let longer_value = inferred_values. iter ( longer_fr. index ( ) ) ;
331
+
332
+ // Find every region `shorter` such that `longer: shorter`
333
+ // (because `longer` includes `end(shorter)`).
334
+ for shorter_fr in longer_value. take_while ( |& i| i < self . num_universal_regions ) {
335
+ let shorter_fr = RegionVid :: new ( shorter_fr) ;
331
336
332
- // Find every region `o` such that `fr: o`
333
- // (because `fr` includes `end(o)`).
334
- for outlived_fr in fr_value. take_while ( |& i| i < self . num_universal_regions ) {
335
337
// `fr` includes `end(fr)`, that's not especially
336
338
// interesting.
337
- if fr . index ( ) == outlived_fr {
339
+ if longer_fr == shorter_fr {
338
340
continue ;
339
341
}
340
342
341
- let outlived_fr_definition = & self . definitions [ RegionVid :: new ( outlived_fr ) ] ;
342
- let outlived_fr_name = outlived_fr_definition . name . unwrap ( ) ;
343
+ let shorter_definition = & self . definitions [ shorter_fr ] ;
344
+ let shorter_name = shorter_definition . name . unwrap ( ) ;
343
345
344
346
// Check that `o <= fr`. If not, report an error.
345
347
if !self . free_region_map
346
- . sub_free_regions ( outlived_fr_name , fr_name )
348
+ . sub_free_regions ( shorter_name , longer_name )
347
349
{
348
350
// FIXME: worst error msg ever
349
- let blame_span = self . blame_span ( fr , RegionVid :: new ( outlived_fr ) ) ;
351
+ let blame_span = self . blame_span ( longer_fr , shorter_fr ) ;
350
352
infcx. tcx . sess . span_err (
351
353
blame_span,
352
354
& format ! (
353
355
"free region `{}` does not outlive `{}`" ,
354
- fr_name ,
355
- outlived_fr_name
356
+ longer_name ,
357
+ shorter_name
356
358
) ,
357
359
) ;
358
360
}
0 commit comments