1
- // #[warn(deprecated_mode)];
2
1
#[ warn( deprecated_pattern) ] ;
3
2
4
3
use std:: { map, smallintmap} ;
@@ -158,7 +157,7 @@ export resolved_mode;
158
157
export arg_mode;
159
158
export unify_mode;
160
159
export set_default_mode;
161
- export variant_info ;
160
+ export VariantInfo , VariantInfo_ ;
162
161
export walk_ty, maybe_walk_ty;
163
162
export occurs_check;
164
163
export param_ty;
@@ -404,7 +403,7 @@ type ctxt =
404
403
needs_unwind_cleanup_cache : HashMap < t , bool > ,
405
404
kind_cache : HashMap < t , Kind > ,
406
405
ast_ty_to_ty_cache : HashMap < @ast:: Ty , ast_ty_to_ty_cache_entry > ,
407
- enum_var_cache : HashMap < def_id , @~[ variant_info ] > ,
406
+ enum_var_cache : HashMap < def_id , @~[ VariantInfo ] > ,
408
407
trait_method_cache : HashMap < def_id , @~[ method ] > ,
409
408
ty_param_bounds : HashMap < ast:: node_id , param_bounds > ,
410
409
inferred_modes : HashMap < ast:: node_id , ast:: mode > ,
@@ -3938,19 +3937,28 @@ fn struct_ctor_id(cx: ctxt, struct_did: ast::def_id) -> Option<ast::def_id> {
3938
3937
}
3939
3938
3940
3939
// Enum information
3941
- type variant_info = @{ args : ~[ t ] , ctor_ty : t , name : ast:: ident ,
3942
- id : ast:: def_id , disr_val : int } ;
3940
+ struct VariantInfo_ {
3941
+ args : ~[ t ] ,
3942
+ ctor_ty : t ,
3943
+ name : ast:: ident ,
3944
+ id : ast:: def_id ,
3945
+ disr_val : int ,
3946
+ vis : visibility
3947
+ }
3948
+
3949
+ type VariantInfo = @VariantInfo_ ;
3943
3950
3944
3951
fn substd_enum_variants ( cx : ctxt ,
3945
3952
id : ast:: def_id ,
3946
- substs : & substs ) -> ~[ variant_info ] {
3953
+ substs : & substs ) -> ~[ VariantInfo ] {
3947
3954
do vec:: map ( * enum_variants ( cx, id) ) |variant_info| {
3948
3955
let substd_args = vec:: map ( variant_info. args ,
3949
3956
|aty| subst ( cx, substs, * aty) ) ;
3950
3957
3951
3958
let substd_ctor_ty = subst ( cx, substs, variant_info. ctor_ty ) ;
3952
3959
3953
- @{ args: substd_args, ctor_ty: substd_ctor_ty, ..* * variant_info}
3960
+ @VariantInfo_ { args : substd_args, ctor_ty : substd_ctor_ty,
3961
+ ..* * variant_info}
3954
3962
}
3955
3963
}
3956
3964
@@ -4061,7 +4069,7 @@ fn item_path(cx: ctxt, id: ast::def_id) -> ast_map::path {
4061
4069
}
4062
4070
4063
4071
fn enum_is_univariant ( cx : ctxt , id : ast:: def_id ) -> bool {
4064
- vec :: len ( * enum_variants ( cx, id) ) == 1 u
4072
+ enum_variants ( cx, id) . len ( ) == 1
4065
4073
}
4066
4074
4067
4075
fn type_is_empty ( cx : ctxt , t : t ) -> bool {
@@ -4071,7 +4079,7 @@ fn type_is_empty(cx: ctxt, t: t) -> bool {
4071
4079
}
4072
4080
}
4073
4081
4074
- fn enum_variants ( cx : ctxt , id : ast:: def_id ) -> @~[ variant_info ] {
4082
+ fn enum_variants ( cx : ctxt , id : ast:: def_id ) -> @~[ VariantInfo ] {
4075
4083
match cx. enum_var_cache . find ( id) {
4076
4084
Some ( variants) => return variants,
4077
4085
_ => { /* fallthrough */ }
@@ -4111,11 +4119,12 @@ fn enum_variants(cx: ctxt, id: ast::def_id) -> @~[variant_info] {
4111
4119
}
4112
4120
_ => disr_val += 1
4113
4121
}
4114
- @{ args: arg_tys,
4122
+ @VariantInfo_ { args : arg_tys,
4115
4123
ctor_ty : ctor_ty,
4116
4124
name : variant. node . name ,
4117
4125
id : ast_util:: local_def ( variant. node . id ) ,
4118
- disr_val: disr_val
4126
+ disr_val : disr_val,
4127
+ vis : variant. node . vis
4119
4128
}
4120
4129
}
4121
4130
ast:: struct_variant_kind( _) => {
@@ -4137,13 +4146,13 @@ fn enum_variants(cx: ctxt, id: ast::def_id) -> @~[variant_info] {
4137
4146
4138
4147
// Returns information about the enum variant with the given ID:
4139
4148
fn enum_variant_with_id ( cx : ctxt , enum_id : ast:: def_id ,
4140
- variant_id : ast:: def_id ) -> variant_info {
4149
+ variant_id : ast:: def_id ) -> VariantInfo {
4141
4150
let variants = enum_variants ( cx, enum_id) ;
4142
- let mut i = 0 u ;
4143
- while i < vec :: len :: < variant_info > ( * variants ) {
4151
+ let mut i = 0 ;
4152
+ while i < variants . len ( ) {
4144
4153
let variant = variants[ i] ;
4145
4154
if variant. id == variant_id { return variant; }
4146
- i += 1 u ;
4155
+ i += 1 ;
4147
4156
}
4148
4157
cx. sess . bug ( ~"enum_variant_with_id ( ) : no variant exists with that ID ") ;
4149
4158
}
0 commit comments