@@ -151,7 +151,7 @@ export re_bound, re_free, re_scope, re_static, re_infer;
151
151
export ReVar , ReSkolemized ;
152
152
export br_self, br_anon, br_named, br_cap_avoid, br_fresh;
153
153
export get, type_has_params, type_needs_infer, type_has_regions;
154
- export type_is_region_ptr;
154
+ export type_contains_err , type_is_region_ptr;
155
155
export type_id;
156
156
export tbox_has_flag;
157
157
export ty_var_id;
@@ -475,6 +475,7 @@ enum tbox_flag {
475
475
has_self = 2 ,
476
476
needs_infer = 4 ,
477
477
has_regions = 8 ,
478
+ has_ty_err = 16 ,
478
479
479
480
// a meta-flag: subst may be required if the type has parameters, a self
480
481
// type, or references bound regions
@@ -508,6 +509,7 @@ pure fn type_has_params(t: t) -> bool { tbox_has_flag(get(t), has_params) }
508
509
pure fn type_has_self ( t : t ) -> bool { tbox_has_flag ( get ( t) , has_self) }
509
510
pure fn type_needs_infer ( t : t ) -> bool { tbox_has_flag ( get ( t) , needs_infer) }
510
511
pure fn type_has_regions ( t : t ) -> bool { tbox_has_flag ( get ( t) , has_regions) }
512
+ pure fn type_contains_err ( t : t ) -> bool { tbox_has_flag ( get ( t) , has_ty_err) }
511
513
pure fn type_def_id ( t : t ) -> Option < ast:: def_id > { get ( t) . o_def_id }
512
514
pure fn type_id ( t : t ) -> uint { get ( t) . id }
513
515
@@ -1059,7 +1061,8 @@ fn mk_t_with_id(cx: ctxt, +st: sty, o_def_id: Option<ast::def_id>) -> t {
1059
1061
}
1060
1062
& ty_nil | & ty_bot | & ty_bool | & ty_int( _) | & ty_float( _) | & ty_uint( _) |
1061
1063
& ty_estr( _) | & ty_type | & ty_opaque_closure_ptr( _) |
1062
- & ty_opaque_box | & ty_err => ( ) ,
1064
+ & ty_opaque_box => ( ) ,
1065
+ & ty_err => flags |= has_ty_err as uint ,
1063
1066
& ty_param( _) => flags |= has_params as uint ,
1064
1067
& ty_infer( _) => flags |= needs_infer as uint ,
1065
1068
& ty_self => flags |= has_self as uint ,
0 commit comments