@@ -77,17 +77,30 @@ impl RegionErrorNamingCtx {
77
77
}
78
78
}
79
79
80
+ /// Get the name of `region` if it has previously been named.
80
81
crate fn get ( & self , region : & RegionVid ) -> Option < & RegionName > {
81
82
self . renctx . get ( region)
82
83
}
83
84
85
+ /// Give `region` the name `name`.
84
86
crate fn insert ( & mut self , region : RegionVid , name : RegionName ) {
85
87
self . renctx . insert ( region, name) ;
86
88
}
89
+
90
+ /// Creates a synthetic region named `'N`, where `N` is the next value of the counter. Then,
91
+ /// increment the counter.
92
+ ///
93
+ /// The name is not memoized. A separate call to `insert` should be made later. (Currently,
94
+ /// this happens at the end of `give_region_a_name`).
95
+ crate fn synthesize_region_name ( & mut self ) -> Symbol {
96
+ let c = self . counter ;
97
+ self . counter += 1 ;
98
+
99
+ Symbol :: intern ( & format ! ( "'{:?}" , c) )
100
+ }
87
101
}
88
102
89
103
impl RegionName {
90
- #[ allow( dead_code) ]
91
104
crate fn was_named ( & self ) -> bool {
92
105
match self . source {
93
106
RegionNameSource :: NamedEarlyBoundRegion ( ..) |
@@ -103,12 +116,6 @@ impl RegionName {
103
116
}
104
117
}
105
118
106
- #[ allow( dead_code) ]
107
- crate fn was_synthesized ( & self ) -> bool {
108
- !self . was_named ( )
109
- }
110
-
111
- #[ allow( dead_code) ]
112
119
crate fn name ( & self ) -> Symbol {
113
120
self . name
114
121
}
@@ -298,7 +305,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
298
305
} else {
299
306
bug ! ( "Closure is not defined by a closure expr" ) ;
300
307
} ;
301
- let region_name = self . synthesize_region_name ( renctx ) ;
308
+ let region_name = renctx . synthesize_region_name ( ) ;
302
309
303
310
let closure_kind_ty = substs. as_closure ( ) . kind_ty ( def_id, tcx) ;
304
311
let note = match closure_kind_ty. to_opt_closure_kind ( ) {
@@ -478,7 +485,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
478
485
// This counter value will already have been used, so this function will increment
479
486
// it so the next value will be used next and return the region name that would
480
487
// have been used.
481
- name : self . synthesize_region_name ( renctx ) ,
488
+ name : renctx . synthesize_region_name ( ) ,
482
489
source : RegionNameSource :: CannotMatchHirTy ( span, type_name) ,
483
490
} )
484
491
} else {
@@ -533,7 +540,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
533
540
hir:: TyKind :: Rptr ( _lifetime, referent_hir_ty) ,
534
541
) => {
535
542
if region. to_region_vid ( ) == needle_fr {
536
- let region_name = self . synthesize_region_name ( renctx ) ;
543
+ let region_name = renctx . synthesize_region_name ( ) ;
537
544
538
545
// Just grab the first character, the `&`.
539
546
let source_map = tcx. sess . source_map ( ) ;
@@ -621,7 +628,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
621
628
| hir:: LifetimeName :: Error
622
629
| hir:: LifetimeName :: Static
623
630
| hir:: LifetimeName :: Underscore => {
624
- let region_name = self . synthesize_region_name ( renctx ) ;
631
+ let region_name = renctx . synthesize_region_name ( ) ;
625
632
let ampersand_span = lifetime. span ;
626
633
Some ( RegionName {
627
634
name : region_name,
@@ -713,7 +720,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
713
720
let upvar_index = self . get_upvar_index_for_region ( tcx, fr) ?;
714
721
let ( upvar_name, upvar_span) =
715
722
self . get_upvar_name_and_span_for_region ( tcx, upvars, upvar_index) ;
716
- let region_name = self . synthesize_region_name ( renctx ) ;
723
+ let region_name = renctx . synthesize_region_name ( ) ;
717
724
718
725
Some ( RegionName {
719
726
name : region_name,
@@ -776,7 +783,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
776
783
// This counter value will already have been used, so this function will increment it
777
784
// so the next value will be used next and return the region name that would have been
778
785
// used.
779
- name : self . synthesize_region_name ( renctx ) ,
786
+ name : renctx . synthesize_region_name ( ) ,
780
787
source : RegionNameSource :: AnonRegionFromOutput (
781
788
return_span,
782
789
mir_description. to_string ( ) ,
@@ -831,16 +838,8 @@ impl<'tcx> RegionInferenceContext<'tcx> {
831
838
) ;
832
839
833
840
Some ( RegionName {
834
- name : self . synthesize_region_name ( renctx ) ,
841
+ name : renctx . synthesize_region_name ( ) ,
835
842
source : RegionNameSource :: AnonRegionFromYieldTy ( yield_span, type_name) ,
836
843
} )
837
844
}
838
-
839
- /// Creates a synthetic region named `'1`, incrementing the counter.
840
- fn synthesize_region_name ( & self , renctx : & mut RegionErrorNamingCtx ) -> Symbol {
841
- let c = renctx. counter ;
842
- renctx. counter += 1 ;
843
-
844
- Symbol :: intern ( & format ! ( "'{:?}" , c) )
845
- }
846
845
}
0 commit comments