about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNixon Enraght-Moony <nixon.emoony@gmail.com>2022-09-14 15:41:54 +0100
committerNixon Enraght-Moony <nixon.emoony@gmail.com>2022-09-14 16:14:15 +0100
commitf69a6c2a8018ac69db62446996e815893b70dfcd (patch)
tree38a21084f1bcb2ced7e7ba03718ac9570c759ec5
parent6e21a28ddaf31bf5c6c78d83d051214d2212e803 (diff)
downloadrust-f69a6c2a8018ac69db62446996e815893b70dfcd.tar.gz
rust-f69a6c2a8018ac69db62446996e815893b70dfcd.zip
jsondoclint: Fix TODO's
-rw-r--r--src/tools/jsondoclint/src/validator.rs26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/tools/jsondoclint/src/validator.rs b/src/tools/jsondoclint/src/validator.rs
index 3226ea4f334..a0e77127dc2 100644
--- a/src/tools/jsondoclint/src/validator.rs
+++ b/src/tools/jsondoclint/src/validator.rs
@@ -63,7 +63,7 @@ impl<'a> Validator<'a> {
                 ItemEnum::Struct(x) => self.check_struct(x),
                 ItemEnum::StructField(x) => self.check_struct_field(x),
                 ItemEnum::Enum(x) => self.check_enum(x),
-                ItemEnum::Variant(x) => self.check_variant(x),
+                ItemEnum::Variant(x) => self.check_variant(x, id),
                 ItemEnum::Function(x) => self.check_function(x),
                 ItemEnum::Trait(x) => self.check_trait(x),
                 ItemEnum::TraitAlias(x) => self.check_trait_alias(x),
@@ -135,9 +135,23 @@ impl<'a> Validator<'a> {
         x.impls.iter().for_each(|i| self.add_impl_id(i));
     }
 
-    fn check_variant(&mut self, x: &'a Variant) {
+    fn check_variant(&mut self, x: &'a Variant, id: &'a Id) {
         match x {
-            Variant::Plain(_discriminant) => {} // TODO: Check discriminant value parses
+            Variant::Plain(discr) => {
+                if let Some(discr) = discr {
+                    if let (Err(_), Err(_)) =
+                        (discr.value.parse::<i128>(), discr.value.parse::<u128>())
+                    {
+                        self.fail(
+                            id,
+                            ErrorKind::Custom(format!(
+                                "Failed to parse discriminant value `{}`",
+                                discr.value
+                            )),
+                        );
+                    }
+                }
+            }
             Variant::Tuple(tys) => tys.iter().flatten().for_each(|t| self.add_field_id(t)),
             Variant::Struct { fields, fields_stripped: _ } => {
                 fields.iter().for_each(|f| self.add_field_id(f))
@@ -198,15 +212,15 @@ impl<'a> Validator<'a> {
     }
 
     fn check_macro(&mut self, _: &'a str) {
-        // TODO
+        // nop
     }
 
     fn check_proc_macro(&mut self, _: &'a ProcMacro) {
-        // TODO
+        // nop
     }
 
     fn check_primitive_type(&mut self, _: &'a str) {
-        // TODO
+        // nop
     }
 
     fn check_generics(&mut self, x: &'a Generics) {