@@ -63,7 +63,7 @@ impl<'a> Validator<'a> {
63
63
ItemEnum :: Struct ( x) => self . check_struct ( x) ,
64
64
ItemEnum :: StructField ( x) => self . check_struct_field ( x) ,
65
65
ItemEnum :: Enum ( x) => self . check_enum ( x) ,
66
- ItemEnum :: Variant ( x) => self . check_variant ( x) ,
66
+ ItemEnum :: Variant ( x) => self . check_variant ( x, id ) ,
67
67
ItemEnum :: Function ( x) => self . check_function ( x) ,
68
68
ItemEnum :: Trait ( x) => self . check_trait ( x) ,
69
69
ItemEnum :: TraitAlias ( x) => self . check_trait_alias ( x) ,
@@ -135,9 +135,23 @@ impl<'a> Validator<'a> {
135
135
x. impls . iter ( ) . for_each ( |i| self . add_impl_id ( i) ) ;
136
136
}
137
137
138
- fn check_variant ( & mut self , x : & ' a Variant ) {
138
+ fn check_variant ( & mut self , x : & ' a Variant , id : & ' a Id ) {
139
139
match x {
140
- Variant :: Plain ( _discriminant) => { } // TODO: Check discriminant value parses
140
+ Variant :: Plain ( discr) => {
141
+ if let Some ( discr) = discr {
142
+ if let ( Err ( _) , Err ( _) ) =
143
+ ( discr. value . parse :: < i128 > ( ) , discr. value . parse :: < u128 > ( ) )
144
+ {
145
+ self . fail (
146
+ id,
147
+ ErrorKind :: Custom ( format ! (
148
+ "Failed to parse discriminant value `{}`" ,
149
+ discr. value
150
+ ) ) ,
151
+ ) ;
152
+ }
153
+ }
154
+ }
141
155
Variant :: Tuple ( tys) => tys. iter ( ) . flatten ( ) . for_each ( |t| self . add_field_id ( t) ) ,
142
156
Variant :: Struct { fields, fields_stripped : _ } => {
143
157
fields. iter ( ) . for_each ( |f| self . add_field_id ( f) )
@@ -198,15 +212,15 @@ impl<'a> Validator<'a> {
198
212
}
199
213
200
214
fn check_macro ( & mut self , _: & ' a str ) {
201
- // TODO
215
+ // nop
202
216
}
203
217
204
218
fn check_proc_macro ( & mut self , _: & ' a ProcMacro ) {
205
- // TODO
219
+ // nop
206
220
}
207
221
208
222
fn check_primitive_type ( & mut self , _: & ' a str ) {
209
- // TODO
223
+ // nop
210
224
}
211
225
212
226
fn check_generics ( & mut self , x : & ' a Generics ) {
0 commit comments