From a197bcec71950ad23a094fe1961d2528e2441435 Mon Sep 17 00:00:00 2001 From: tslil Date: Mon, 27 Apr 2026 11:29:30 +0100 Subject: enforce arm match uniqueness again --- src/checker_set.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/checker_set.rs') diff --git a/src/checker_set.rs b/src/checker_set.rs index 5410dfe..db47c14 100644 --- a/src/checker_set.rs +++ b/src/checker_set.rs @@ -307,6 +307,9 @@ impl CheckerState { } }; + // for each arm, recurse with a concrete value (if we have one) + // otherwise fall back to hypothetical elements; in the former + // case record the end result let mut computed_output = None; for arm in arms { let SetField { field_set, .. } = self.lookup_variant_field(&arm.tag)?; @@ -326,6 +329,11 @@ impl CheckerState { { new_context.add_element(binding_name, inner.clone().into(), binding_set)?; let output = new_context.check_element(arm.body.clone().into(), set)?; + if matches!(computed_output, Some(_)) { + panic!( + "invariant violation: we somehow matched multiple arms in case analysis" + ) + } computed_output = Some(output); } else { new_context.add_element( -- cgit v1.3.1