summaryrefslogtreecommitdiff
path: root/src/cjr_print.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/cjr_print.sml')
-rw-r--r--src/cjr_print.sml25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/cjr_print.sml b/src/cjr_print.sml
index 8ca7c09d..905c4e10 100644
--- a/src/cjr_print.sml
+++ b/src/cjr_print.sml
@@ -520,6 +520,31 @@ fun p_exp' par env (e, loc) =
newline,
string "})"]
end
+ | ESome (t, e) =>
+ (case #1 t of
+ TDatatype _ => p_exp' par env e
+ | TFfi ("Basis", "string") => p_exp' par env e
+ | _ => box [string "({",
+ newline,
+ p_typ env t,
+ space,
+ string "*tmp",
+ space,
+ string "=",
+ space,
+ string "lw_malloc(ctx, sizeof(",
+ p_typ env t,
+ string "));",
+ newline,
+ string "*tmp",
+ space,
+ string "=",
+ p_exp' par env e,
+ string ";",
+ newline,
+ string "tmp;",
+ newline,
+ string "})"])
| EFfi (m, x) => box [string "lw_", string m, string "_", string x]
| EError (e, t) =>