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)
}