diff src/jscomp.sml @ 974:b851675a2c3d

Compiled an 'option' pattern-match
author Adam Chlipala <adamc@hcoop.net>
date Tue, 22 Sep 2009 14:15:29 -0400
parents e30c2409c9d0
children 68eda5b0636d
line wrap: on
line diff
--- a/src/jscomp.sml	Tue Sep 22 13:41:23 2009 -0400
+++ b/src/jscomp.sml	Tue Sep 22 14:15:29 2009 -0400
@@ -463,15 +463,16 @@
                               | PCon (Option, PConVar n, SOME p) =>
                                 (case IM.find (someTs, n) of
                                      NONE => raise Fail "Jscomp: Not in someTs"
-                                   | SOME t => strcat [str ("{c:\"s\",n:"
-                                                            ^ (if isNullable t then
-                                                                   "true"
-                                                               else
-                                                                   "false")
-                                                            ^ ",p:"),
-                                                       jsPat p,
-                                                       str "}"])
-                              | PCon (_, pc, NONE) => strcat [str "{c:\"0\",n:",
+                                   | SOME t =>
+                                     strcat [str ("{c:\"s\",n:"
+                                                  ^ (if isNullable t then
+                                                         "true"
+                                                     else
+                                                         "false")
+                                                  ^ ",p:"),
+                                             jsPat p,
+                                             str "}"])
+                              | PCon (_, pc, NONE) => strcat [str "{c:\"c\",v:",
                                                               patCon pc,
                                                               str "}"]
                               | PCon (_, pc, SOME p) => strcat [str "{c:\"1\",n:",
@@ -560,7 +561,6 @@
 
                                                 val old = e
                                                 val (e, st) = jsExp mode [] (e, st)
-                                                val new = e
                                                 val e = deStrcat 0 e
                                                 
                                                 val sc = "urfuncs[" ^ Int.toString n ^ "] = " ^ e ^ ";\n"
@@ -791,7 +791,7 @@
                                 val (ps, st) =
                                     foldr (fn ((p, e), (ps, st)) =>
                                               let
-                                                  val (e, st) = jsE inner (e, st)
+                                                  val (e, st) = jsE (inner + E.patBindsN p) (e, st)
                                               in
                                                   (strcat [str "cons({p:",
                                                            jsPat p,
@@ -805,7 +805,7 @@
                                           (str "null", st) pes
                             in
                                 (strcat [str "{c:\"m\",e:",
-                                         e,
+                                         e',
                                          str ",p:",
                                          ps,
                                          str "}"], st)