@@ -105,6 +105,12 @@ impl of to_str for ty::mt {
105
105
}
106
106
}
107
107
108
+ impl of to_str for ty:: region {
109
+ fn to_str ( cx : infer_ctxt ) -> str {
110
+ util:: ppaux:: region_to_str ( cx. tcx , self )
111
+ }
112
+ }
113
+
108
114
impl < V : copy to_str > of to_str for bound < V > {
109
115
fn to_str ( cx : infer_ctxt ) -> str {
110
116
alt self {
@@ -756,11 +762,15 @@ impl resolve_methods for infer_ctxt {
756
762
ret self . resolve_var ( self . vb , { |t| type_is_bot ( t) } , vid) ;
757
763
}
758
764
765
+ fn resolve_region_var ( rid : int ) -> fres < ty:: region > {
766
+ ret self . resolve_var ( self . rb , { |_t| false } , rid) ;
767
+ }
768
+
759
769
fn resolve_ty ( typ : ty:: t ) -> fres < ty:: t > {
760
770
alt ty:: get ( typ) . struct {
761
771
ty:: ty_var ( vid) { self . resolve_ty_var ( vid) }
762
772
ty:: ty_rptr ( ty:: re_var ( rid) , base_ty) {
763
- alt self . resolve_region ( rid as int ) {
773
+ alt self . resolve_region_var ( rid as int ) {
764
774
err ( terr) { err ( terr) }
765
775
ok ( region) {
766
776
self . rok ( ty:: mk_rptr ( self . tcx , region, base_ty) )
@@ -825,25 +835,12 @@ impl resolve_methods for infer_ctxt {
825
835
// FIXME: These should be integrated with the two functions above instead
826
836
// of being such blatant lazy duplicates.
827
837
828
- fn resolve_region ( rid : int ) -> fres < ty:: region > {
829
- let { root: _ , bounds } = self . get_region ( rid as uint ) ;
830
-
831
- // See comments in resolve_ty above re. nonobviousness.
832
-
833
- alt bounds {
834
- { ub : _, lb : some ( r) } |
835
- { ub: some ( r) , lb: _ } |
836
- { ub: _, lb: some ( r) } { ok ( r) }
837
- { ub: none, lb: none } { self . rerr ( rid) }
838
- }
839
- }
840
-
841
838
fn subst_regions ( unresolved : @mutable option < int > ,
842
839
regions_seen : std:: list:: list < int > ,
843
840
rid : int ) -> ty:: region {
844
841
// Should really return a fixup_result instead of a t, but fold_ty
845
842
// doesn't allow returning anything but a t.
846
- alt self . resolve_region ( rid) {
843
+ alt self . resolve_region_var ( rid) {
847
844
err ( rid) {
848
845
* unresolved = some ( rid) ;
849
846
ret ty:: re_var ( rid as uint ) ;
0 commit comments