From 56ac810880fa48e9992dffba050f2f3acad0018c Mon Sep 17 00:00:00 2001 From: Thomas Bauereiss Date: Fri, 14 Aug 2020 16:16:44 +0100 Subject: Consider case expressions in early return rewrite --- src/rewrites.ml | 8 ++++++++ 1 file changed, 8 insertions(+) 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) -> -- cgit v1.2.3