aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/corify.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-05-17 13:25:57 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-05-17 13:25:57 -0400
commitcb6e88183a8c126118de373bfd98f3bef5e714a2 (patch)
treea3bf9deae6a78fff3abf976b31a5b8b427695edb /src/corify.sml
parent48105ce953be28a0858abdb28cff5c2fe443e376 (diff)
Corify FFI datatypes properly; eliminate nested JavaScript markers
Diffstat (limited to 'src/corify.sml')
-rw-r--r--src/corify.sml9
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,