summaryrefslogtreecommitdiff
path: root/src/monoize.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index b17fe805..8e3bfaba 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -115,6 +115,8 @@ fun fooifyExp name env =
| L'.TFfi ("Basis", "float") => (L'.EFfiApp ("Basis", name ^ "ifyFloat", [e]), loc)
| L'.TRecord [] => (L'.EPrim (Prim.String ""), loc)
+ | L'.TNamed _ => (L'.EPrim (Prim.String ""), loc)
+
| _ => (E.errorAt loc "Don't know how to encode attribute type";
Print.eprefaces' [("Type", MonoPrint.p_typ MonoEnv.empty tAll)];
dummyExp)
@@ -453,7 +455,12 @@ fun monoDecl env (all as (d, loc)) =
in
case d of
L.DCon _ => NONE
- | L.DDatatype _ => raise Fail "Monoize DDatatype"
+ | L.DDatatype (x, n, xncs) =>
+ let
+ val d = (L'.DDatatype (x, n, map (fn (x, n, to) => (x, n, Option.map (monoType env) to)) xncs), loc)
+ in
+ SOME (Env.declBinds env all, d)
+ end
| L.DVal (x, n, t, e, s) => SOME (Env.pushENamed env x n t (SOME e) s,
(L'.DVal (x, n, monoType env t, monoExp (env, St.empty) e, s), loc))
| L.DValRec vis =>