summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rewrites.ml8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/rewrites.ml b/src/rewrites.ml
index 5f529e48..574356d4 100644
--- a/src/rewrites.ml
+++ b/src/rewrites.ml
@@ -1601,6 +1601,14 @@ let rewrite_defs_early_return env (Defs defs) =
rewrap (E_block (Util.butlast es @ [add_final_return true (Util.last es)]))
| E_if (c, t, e) ->
rewrap (E_if (c, add_final_return true t, add_final_return true e))
+ | E_case (e, pes) ->
+ let add_final_return_pexp = function
+ | Pat_aux (Pat_exp (p, e), a) ->
+ Pat_aux (Pat_exp (p, add_final_return true e), a)
+ | Pat_aux (Pat_when (p, g, e), a) ->
+ Pat_aux (Pat_when (p, g, add_final_return true e), a)
+ in
+ rewrap (E_case (e, List.map add_final_return_pexp pes))
| E_let (lb, exp) ->
rewrap (E_let (lb, add_final_return true exp))
| E_var (lexp, e1, e2) ->