summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorSon HO2023-12-13 11:10:10 +0100
committerGitHub2023-12-13 11:10:10 +0100
commitc6247e0c103cc1dc95c2a63ae01602c4a1208dc4 (patch)
tree9b3d6aa74163ee8f26e62bf864121f9cf256a88a /compiler
parent22009543d86895b9f680d3a4abdea00302ad5f1e (diff)
parent07fc9c784e311ab082b89a63f5ca5b0c7568fc4c (diff)
Merge pull request #52 from AeneasVerif/son/matches
Make the otherwise branch in the LLBC match statements optional
Diffstat (limited to '')
-rw-r--r--compiler/InterpreterStatements.ml5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/InterpreterStatements.ml b/compiler/InterpreterStatements.ml
index 66b8492a..30b7b333 100644
--- a/compiler/InterpreterStatements.ml
+++ b/compiler/InterpreterStatements.ml
@@ -1125,7 +1125,10 @@ and eval_switch (config : config) (switch : switch) : st_cm_fun =
let dv = Option.get adt.variant_id in
(* Find the branch, evaluate and continue *)
match List.find_opt (fun (svl, _) -> List.mem dv svl) stgts with
- | None -> eval_statement config otherwise cf ctx
+ | None -> (
+ match otherwise with
+ | None -> raise (Failure "No otherwise branch")
+ | Some otherwise -> eval_statement config otherwise cf ctx)
| Some (_, tgt) -> eval_statement config tgt cf ctx)
| VSymbolic sv ->
(* Expand the symbolic value - may lead to branching *)