diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-05-17 13:25:57 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-05-17 13:25:57 -0400 |
commit | cb6e88183a8c126118de373bfd98f3bef5e714a2 (patch) | |
tree | a3bf9deae6a78fff3abf976b31a5b8b427695edb /src/corify.sml | |
parent | 48105ce953be28a0858abdb28cff5c2fe443e376 (diff) |
Corify FFI datatypes properly; eliminate nested JavaScript markers
Diffstat (limited to 'src/corify.sml')
-rw-r--r-- | src/corify.sml | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/corify.sml b/src/corify.sml index 6793cd32..a4979790 100644 --- a/src/corify.sml +++ b/src/corify.sml @@ -824,6 +824,9 @@ fun corifyDecl mods (all as (d, loc : EM.span), st) = ListUtil.foldlMap (fn ((x, n, xs, xnts), (ds', st, cmap, conmap)) => let + val k' = foldl (fn (_, k') => (L'.KArrow (k, k'), loc)) + k xs + val dk = ElabUtil.classifyDatatype xnts val (st, n') = St.bindCon st x n val (xnts, (ds', st, cmap, conmap)) = @@ -885,12 +888,14 @@ fun corifyDecl mods (all as (d, loc : EM.span), st) = ((x', n, to), (d :: ds', st, cmap, conmap)) end) (ds', st, cmap, conmap) xnts + + val d = (L'.DCon (x, n', k', (L'.CFfi (m, x), loc)), loc) in - ((x, n', xs, xnts), (ds', st, cmap, conmap)) + ((x, n', xs, xnts), (d :: ds', st, cmap, conmap)) end) ([], st, cmap, conmap) dts in - (ds' @ (L'.DDatatype dts, loc) :: ds, + (List.revAppend (ds', ds), cmap, conmap, st, |