diff options
Diffstat (limited to 'src/elab_util.sml')
-rw-r--r-- | src/elab_util.sml | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/elab_util.sml b/src/elab_util.sml index ac2e1a99..a3754153 100644 --- a/src/elab_util.sml +++ b/src/elab_util.sml @@ -308,16 +308,18 @@ fun mapfoldB {kind = fk, con = fc, exp = fe, bind} = fn k' => (EFold k', loc)) - | ECase (e, pes, t) => + | ECase (e, pes, {disc, result}) => S.bind2 (mfe ctx e, fn e' => S.bind2 (ListUtil.mapfold (fn (p, e) => S.map2 (mfe ctx e, fn e' => (p, e'))) pes, fn pes' => - S.map2 (mfc ctx t, - fn t' => - (ECase (e', pes', t'), loc)))) + S.bind2 (mfc ctx disc, + fn disc' => + S.map2 (mfc ctx result, + fn result' => + (ECase (e', pes', {disc = disc', result = result'}), loc))))) | EError => S.return2 eAll in |