diff options
| author | Thomas Bauereiss | 2020-08-14 16:16:44 +0100 |
|---|---|---|
| committer | Thomas Bauereiss | 2020-09-02 16:28:05 +0100 |
| commit | 56ac810880fa48e9992dffba050f2f3acad0018c (patch) | |
| tree | be4538bc9d4013ae8f535e40603136bcaf2bc418 | |
| parent | c16e6137e954e9a4cd24fb81dbafcfef27206837 (diff) | |
Consider case expressions in early return rewrite
| -rw-r--r-- | src/rewrites.ml | 8 |
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) -> |
