diff --git a/bin/js b/bin/js index d0e3fb09..99c497e6 120000 --- a/bin/js +++ b/bin/js @@ -1 +1 @@ -js-1.8.5-Linux-i686 \ No newline at end of file +js-24.6.0-Linux-x86_64 \ No newline at end of file diff --git a/bin/js-24.6.0-Linux-i686 b/bin/js-24.6.0-Linux-i686 new file mode 100755 index 00000000..402d302b Binary files /dev/null and b/bin/js-24.6.0-Linux-i686 differ diff --git a/bin/js-24.6.0-Linux-x86_64 b/bin/js-24.6.0-Linux-x86_64 new file mode 100755 index 00000000..687d941a Binary files /dev/null and b/bin/js-24.6.0-Linux-x86_64 differ diff --git a/src/js/spiderMonkey.ml b/src/js/spiderMonkey.ml index 18249c14..3a4b74b0 100644 --- a/src/js/spiderMonkey.ml +++ b/src/js/spiderMonkey.ml @@ -88,10 +88,13 @@ let rec stmt (v : json_type) : stmt = (* NOTE(jpolitz): We simply take the first handler --- multiple handlers are Spidermonkey-specific. JS only specifies one or zero catch blocks. *) - (match (list (get "handlers" v)) with - | [] -> None - | [handler] -> catch handler - | _ -> pos_error v "More than one catch handler provided"), + (match (try_get "handlers" v) with + | None -> catch (get "handler" v) (* New Spidermonkey *) + | Some(handlers) -> + (match (list handlers) with + | [] -> None + | [handler] -> catch handler (* Old Spidermonkey *) + | _ -> pos_error v "More than one catch handler provided")), maybe block (get "finalizer" v)) | "While" -> While (p, expr (get "test" v), stmt (get "body" v)) | "DoWhile" -> DoWhile (p, stmt (get "body" v), expr (get "test" v)) @@ -282,4 +285,3 @@ let parse_spidermonkey (cin : in_channel) (name : string) : Js_syntax.program = (lexbuf.Lexing.lex_curr_p, lexbuf.Lexing.lex_curr_p))) (Lexing.lexeme lexbuf))) | _ -> raise (Failure "Unexpected error in parse_spidermonkey") - diff --git a/tests/json_print.js b/tests/json_print.js index f68deaaa..4f713f65 100644 --- a/tests/json_print.js +++ b/tests/json_print.js @@ -1,8 +1,8 @@ -if (arguments.length != 1) { +if (scriptArgs.length != 1) { print("usage: js json_print.js "); } else { - var file = read(arguments[0]); - var result = Reflect.parse(file, {loc : true, source: arguments[0]}); + var file = read(scriptArgs[0]); + var result = Reflect.parse(file, {loc : true, source: scriptArgs[0]}); print(JSON.stringify( result, function(key,value) { diff --git a/tests/desugar.sh b/tests/jsparser.sh similarity index 100% rename from tests/desugar.sh rename to tests/jsparser.sh diff --git a/tests/unit-tests/regexp-exec.js b/tests/unit-tests/regexp-exec.js index cb01396c..21fdbae0 100644 --- a/tests/unit-tests/regexp-exec.js +++ b/tests/unit-tests/regexp-exec.js @@ -9,9 +9,9 @@ var l = []; l.push(a[0]); foo(); })(); -if (l[0] === "foo" && +if (l[0] === "baz" && l[1] === "bar" && - l[2] === "baz") { + l[2] === "foo") { console.log("passed"); }