@@ -63,7 +63,7 @@ impl<'a> Validator<'a> {
6363 ItemEnum :: Struct ( x) => self . check_struct ( x) ,
6464 ItemEnum :: StructField ( x) => self . check_struct_field ( x) ,
6565 ItemEnum :: Enum ( x) => self . check_enum ( x) ,
66- ItemEnum :: Variant ( x) => self . check_variant ( x) ,
66+ ItemEnum :: Variant ( x) => self . check_variant ( x, id ) ,
6767 ItemEnum :: Function ( x) => self . check_function ( x) ,
6868 ItemEnum :: Trait ( x) => self . check_trait ( x) ,
6969 ItemEnum :: TraitAlias ( x) => self . check_trait_alias ( x) ,
@@ -135,9 +135,23 @@ impl<'a> Validator<'a> {
135135 x. impls . iter ( ) . for_each ( |i| self . add_impl_id ( i) ) ;
136136 }
137137
138- fn check_variant ( & mut self , x : & ' a Variant ) {
138+ fn check_variant ( & mut self , x : & ' a Variant , id : & ' a Id ) {
139139 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+ }
141155 Variant :: Tuple ( tys) => tys. iter ( ) . flatten ( ) . for_each ( |t| self . add_field_id ( t) ) ,
142156 Variant :: Struct { fields, fields_stripped : _ } => {
143157 fields. iter ( ) . for_each ( |f| self . add_field_id ( f) )
@@ -198,15 +212,15 @@ impl<'a> Validator<'a> {
198212 }
199213
200214 fn check_macro ( & mut self , _: & ' a str ) {
201- // TODO
215+ // nop
202216 }
203217
204218 fn check_proc_macro ( & mut self , _: & ' a ProcMacro ) {
205- // TODO
219+ // nop
206220 }
207221
208222 fn check_primitive_type ( & mut self , _: & ' a str ) {
209- // TODO
223+ // nop
210224 }
211225
212226 fn check_generics ( & mut self , x : & ' a Generics ) {
0 commit comments