Detect mismatched suffix on discriminant values
diff --git a/syntax/discriminant.rs b/syntax/discriminant.rs
index 4caa42b..d683eef 100644
--- a/syntax/discriminant.rs
+++ b/syntax/discriminant.rs
@@ -30,7 +30,14 @@
 
     pub fn insert(&mut self, expr: &Expr) -> Result<Discriminant> {
         let (discriminant, repr) = expr_to_discriminant(expr)?;
-        self.repr = self.repr.or(repr);
+        match (self.repr, repr) {
+            (None, _) => self.repr = repr,
+            (Some(prev), Some(repr)) if prev != repr => {
+                let msg = format!("expected {}, found {}", prev, repr);
+                return Err(Error::new(Span::call_site(), msg));
+            }
+            _ => {}
+        }
         insert(self, discriminant)
     }