diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-06-16 17:52:44 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-06-16 17:52:44 -0400 |
commit | 8c2eb37e99b79153a98fbdebce39b4064dcdb2e9 (patch) | |
tree | 03a63951b832edfdb7a5c7cb9c05345c0f097248 /src/jscomp.sml | |
parent | 4dce690086c8d6132c22d5c47a0561a4b1261293 (diff) |
Fix a variable capture bug in nested JavaScript; some more list stuff
Diffstat (limited to 'src/jscomp.sml')
-rw-r--r-- | src/jscomp.sml | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/jscomp.sml b/src/jscomp.sml index 9f0a7a1b..79ae814e 100644 --- a/src/jscomp.sml +++ b/src/jscomp.sml @@ -980,12 +980,18 @@ fun process file = jsE inner (e, st)) | EJavaScript (_, e) => let + val locals = List.tabulate + (varDepth e, + fn i => str ("var _" ^ Int.toString (len + inner + i) ^ ";")) + val (e, st) = jsE inner (e, st) in foundJavaScript := true; - (strcat [str "cs(function(){return ", - compact inner e, - str "})"], + (strcat (str "cs(function(){" + :: locals + @ [str "return ", + compact inner e, + str "})"]), st) end |