summaryrefslogtreecommitdiff
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
commit8d4ec5e3186b939a3c4d4a04e0e834836dd2c779 (patch)
treea3bf9deae6a78fff3abf976b31a5b8b427695edb /src/corify.sml
parentfd44d539abb06cf86fd8fe76369c056b8f892a26 (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,