Bug 1377007 - Tests: Parsing ECMA2-level tests with binjs;r?jorendorff,arai draft
authorDavid Teller <dteller@mozilla.com>
Tue, 19 Sep 2017 20:50:21 +0200
changeset 712443 0e47c1a7a52d71ed92144ce176d16902ae4df601
parent 712442 73a3b6751eafc6f72d7024c6f65ed5bf2f0eb225
child 712444 0164bc0c41a51427539ca47a09217e0bd37c4e9d
push id93334
push userdteller@mozilla.com
push dateSat, 16 Dec 2017 14:44:32 +0000
reviewersjorendorff, arai
bugs1377007
milestone59.0a1
Bug 1377007 - Tests: Parsing ECMA2-level tests with binjs;r?jorendorff,arai MozReview-Commit-ID: 2DysquT2BdD
.eslintignore
js/src/jsapi-tests/binast/parser/tester/StrictEquality-001.binjs
js/src/jsapi-tests/binast/parser/tester/StrictEquality-001.js
js/src/jsapi-tests/binast/parser/tester/apply-001-n.binjs
js/src/jsapi-tests/binast/parser/tester/apply-001-n.js
js/src/jsapi-tests/binast/parser/tester/boolean-001.binjs
js/src/jsapi-tests/binast/parser/tester/boolean-001.js
js/src/jsapi-tests/binast/parser/tester/boolean-002.binjs
js/src/jsapi-tests/binast/parser/tester/boolean-002.js
js/src/jsapi-tests/binast/parser/tester/call-1.binjs
js/src/jsapi-tests/binast/parser/tester/call-1.js
js/src/jsapi-tests/binast/parser/tester/constructor-001.binjs
js/src/jsapi-tests/binast/parser/tester/constructor-001.js
js/src/jsapi-tests/binast/parser/tester/date-002.binjs
js/src/jsapi-tests/binast/parser/tester/date-002.js
js/src/jsapi-tests/binast/parser/tester/date-003.binjs
js/src/jsapi-tests/binast/parser/tester/date-003.js
js/src/jsapi-tests/binast/parser/tester/date-004.binjs
js/src/jsapi-tests/binast/parser/tester/date-004.js
js/src/jsapi-tests/binast/parser/tester/dowhile-001.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-001.js
js/src/jsapi-tests/binast/parser/tester/dowhile-002.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-002.js
js/src/jsapi-tests/binast/parser/tester/dowhile-003.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-003.js
js/src/jsapi-tests/binast/parser/tester/dowhile-004.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-004.js
js/src/jsapi-tests/binast/parser/tester/dowhile-005.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-005.js
js/src/jsapi-tests/binast/parser/tester/dowhile-006.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-006.js
js/src/jsapi-tests/binast/parser/tester/dowhile-007.binjs
js/src/jsapi-tests/binast/parser/tester/dowhile-007.js
js/src/jsapi-tests/binast/parser/tester/exception-001.binjs
js/src/jsapi-tests/binast/parser/tester/exception-001.js
js/src/jsapi-tests/binast/parser/tester/exception-002.binjs
js/src/jsapi-tests/binast/parser/tester/exception-002.js
js/src/jsapi-tests/binast/parser/tester/exception-003.binjs
js/src/jsapi-tests/binast/parser/tester/exception-003.js
js/src/jsapi-tests/binast/parser/tester/exception-004.binjs
js/src/jsapi-tests/binast/parser/tester/exception-004.js
js/src/jsapi-tests/binast/parser/tester/exception-005.binjs
js/src/jsapi-tests/binast/parser/tester/exception-005.js
js/src/jsapi-tests/binast/parser/tester/exception-006.binjs
js/src/jsapi-tests/binast/parser/tester/exception-006.js
js/src/jsapi-tests/binast/parser/tester/exception-007.binjs
js/src/jsapi-tests/binast/parser/tester/exception-007.js
js/src/jsapi-tests/binast/parser/tester/exception-008.binjs
js/src/jsapi-tests/binast/parser/tester/exception-008.js
js/src/jsapi-tests/binast/parser/tester/exception-009.binjs
js/src/jsapi-tests/binast/parser/tester/exception-009.js
js/src/jsapi-tests/binast/parser/tester/exception-010-n.binjs
js/src/jsapi-tests/binast/parser/tester/exception-010-n.js
js/src/jsapi-tests/binast/parser/tester/exception-011-n.binjs
js/src/jsapi-tests/binast/parser/tester/exception-011-n.js
js/src/jsapi-tests/binast/parser/tester/exec-002.binjs
js/src/jsapi-tests/binast/parser/tester/exec-002.js
js/src/jsapi-tests/binast/parser/tester/expression-001.binjs
js/src/jsapi-tests/binast/parser/tester/expression-001.js
js/src/jsapi-tests/binast/parser/tester/expression-002.binjs
js/src/jsapi-tests/binast/parser/tester/expression-002.js
js/src/jsapi-tests/binast/parser/tester/expression-003.binjs
js/src/jsapi-tests/binast/parser/tester/expression-003.js
js/src/jsapi-tests/binast/parser/tester/expression-004.binjs
js/src/jsapi-tests/binast/parser/tester/expression-004.js
js/src/jsapi-tests/binast/parser/tester/expression-005.binjs
js/src/jsapi-tests/binast/parser/tester/expression-005.js
js/src/jsapi-tests/binast/parser/tester/expression-006.binjs
js/src/jsapi-tests/binast/parser/tester/expression-006.js
js/src/jsapi-tests/binast/parser/tester/expression-007.binjs
js/src/jsapi-tests/binast/parser/tester/expression-007.js
js/src/jsapi-tests/binast/parser/tester/expression-008.binjs
js/src/jsapi-tests/binast/parser/tester/expression-008.js
js/src/jsapi-tests/binast/parser/tester/expression-009.binjs
js/src/jsapi-tests/binast/parser/tester/expression-009.js
js/src/jsapi-tests/binast/parser/tester/expression-010.binjs
js/src/jsapi-tests/binast/parser/tester/expression-010.js
js/src/jsapi-tests/binast/parser/tester/expression-011.binjs
js/src/jsapi-tests/binast/parser/tester/expression-011.js
js/src/jsapi-tests/binast/parser/tester/expression-012.binjs
js/src/jsapi-tests/binast/parser/tester/expression-012.js
js/src/jsapi-tests/binast/parser/tester/expression-013.binjs
js/src/jsapi-tests/binast/parser/tester/expression-013.js
js/src/jsapi-tests/binast/parser/tester/expression-014.binjs
js/src/jsapi-tests/binast/parser/tester/expression-014.js
js/src/jsapi-tests/binast/parser/tester/expression-015.binjs
js/src/jsapi-tests/binast/parser/tester/expression-015.js
js/src/jsapi-tests/binast/parser/tester/expression-016.binjs
js/src/jsapi-tests/binast/parser/tester/expression-016.js
js/src/jsapi-tests/binast/parser/tester/expression-017.binjs
js/src/jsapi-tests/binast/parser/tester/expression-017.js
js/src/jsapi-tests/binast/parser/tester/expression-019.binjs
js/src/jsapi-tests/binast/parser/tester/expression-019.js
js/src/jsapi-tests/binast/parser/tester/forin-001.binjs
js/src/jsapi-tests/binast/parser/tester/forin-001.js
js/src/jsapi-tests/binast/parser/tester/forin-002.binjs
js/src/jsapi-tests/binast/parser/tester/forin-002.js
js/src/jsapi-tests/binast/parser/tester/function-001.binjs
js/src/jsapi-tests/binast/parser/tester/function-001.js
js/src/jsapi-tests/binast/parser/tester/global-001.binjs
js/src/jsapi-tests/binast/parser/tester/global-001.js
js/src/jsapi-tests/binast/parser/tester/global-002.binjs
js/src/jsapi-tests/binast/parser/tester/global-002.js
js/src/jsapi-tests/binast/parser/tester/hex-001.binjs
js/src/jsapi-tests/binast/parser/tester/hex-001.js
js/src/jsapi-tests/binast/parser/tester/if-001.binjs
js/src/jsapi-tests/binast/parser/tester/if-001.js
js/src/jsapi-tests/binast/parser/tester/instanceof-001.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-001.js
js/src/jsapi-tests/binast/parser/tester/instanceof-002.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-002.js
js/src/jsapi-tests/binast/parser/tester/instanceof-003-n.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-003-n.js
js/src/jsapi-tests/binast/parser/tester/instanceof-003.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-003.js
js/src/jsapi-tests/binast/parser/tester/instanceof-004-n.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-004-n.js
js/src/jsapi-tests/binast/parser/tester/instanceof-005-n.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-005-n.js
js/src/jsapi-tests/binast/parser/tester/instanceof-006.binjs
js/src/jsapi-tests/binast/parser/tester/instanceof-006.js
js/src/jsapi-tests/binast/parser/tester/keywords-001.binjs
js/src/jsapi-tests/binast/parser/tester/keywords-001.js
js/src/jsapi-tests/binast/parser/tester/label-001.binjs
js/src/jsapi-tests/binast/parser/tester/label-001.js
js/src/jsapi-tests/binast/parser/tester/label-002.binjs
js/src/jsapi-tests/binast/parser/tester/label-002.js
js/src/jsapi-tests/binast/parser/tester/label-003.binjs
js/src/jsapi-tests/binast/parser/tester/label-003.js
js/src/jsapi-tests/binast/parser/tester/lexical-001.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-001.js
js/src/jsapi-tests/binast/parser/tester/lexical-002.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-002.js
js/src/jsapi-tests/binast/parser/tester/lexical-003.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-003.js
js/src/jsapi-tests/binast/parser/tester/lexical-004.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-004.js
js/src/jsapi-tests/binast/parser/tester/lexical-005.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-005.js
js/src/jsapi-tests/binast/parser/tester/lexical-006.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-006.js
js/src/jsapi-tests/binast/parser/tester/lexical-007.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-007.js
js/src/jsapi-tests/binast/parser/tester/lexical-008.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-008.js
js/src/jsapi-tests/binast/parser/tester/lexical-009.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-009.js
js/src/jsapi-tests/binast/parser/tester/lexical-011.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-011.js
js/src/jsapi-tests/binast/parser/tester/lexical-012.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-012.js
js/src/jsapi-tests/binast/parser/tester/lexical-013.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-013.js
js/src/jsapi-tests/binast/parser/tester/lexical-014.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-014.js
js/src/jsapi-tests/binast/parser/tester/lexical-015.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-015.js
js/src/jsapi-tests/binast/parser/tester/lexical-016.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-016.js
js/src/jsapi-tests/binast/parser/tester/lexical-017.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-017.js
js/src/jsapi-tests/binast/parser/tester/lexical-018.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-018.js
js/src/jsapi-tests/binast/parser/tester/lexical-019.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-019.js
js/src/jsapi-tests/binast/parser/tester/lexical-020.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-020.js
js/src/jsapi-tests/binast/parser/tester/lexical-021.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-021.js
js/src/jsapi-tests/binast/parser/tester/lexical-023.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-023.js
js/src/jsapi-tests/binast/parser/tester/lexical-024.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-024.js
js/src/jsapi-tests/binast/parser/tester/lexical-025.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-025.js
js/src/jsapi-tests/binast/parser/tester/lexical-026.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-026.js
js/src/jsapi-tests/binast/parser/tester/lexical-027.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-027.js
js/src/jsapi-tests/binast/parser/tester/lexical-028.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-028.js
js/src/jsapi-tests/binast/parser/tester/lexical-029.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-029.js
js/src/jsapi-tests/binast/parser/tester/lexical-030.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-030.js
js/src/jsapi-tests/binast/parser/tester/lexical-031.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-031.js
js/src/jsapi-tests/binast/parser/tester/lexical-032.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-032.js
js/src/jsapi-tests/binast/parser/tester/lexical-033.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-033.js
js/src/jsapi-tests/binast/parser/tester/lexical-034.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-034.js
js/src/jsapi-tests/binast/parser/tester/lexical-035.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-035.js
js/src/jsapi-tests/binast/parser/tester/lexical-036.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-036.js
js/src/jsapi-tests/binast/parser/tester/lexical-037.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-037.js
js/src/jsapi-tests/binast/parser/tester/lexical-038.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-038.js
js/src/jsapi-tests/binast/parser/tester/lexical-039.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-039.js
js/src/jsapi-tests/binast/parser/tester/lexical-040.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-040.js
js/src/jsapi-tests/binast/parser/tester/lexical-041.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-041.js
js/src/jsapi-tests/binast/parser/tester/lexical-042.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-042.js
js/src/jsapi-tests/binast/parser/tester/lexical-047.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-047.js
js/src/jsapi-tests/binast/parser/tester/lexical-048.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-048.js
js/src/jsapi-tests/binast/parser/tester/lexical-049.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-049.js
js/src/jsapi-tests/binast/parser/tester/lexical-050.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-050.js
js/src/jsapi-tests/binast/parser/tester/lexical-051.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-051.js
js/src/jsapi-tests/binast/parser/tester/lexical-052.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-052.js
js/src/jsapi-tests/binast/parser/tester/lexical-053.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-053.js
js/src/jsapi-tests/binast/parser/tester/lexical-054.binjs
js/src/jsapi-tests/binast/parser/tester/lexical-054.js
js/src/jsapi-tests/binast/parser/tester/match-001.binjs
js/src/jsapi-tests/binast/parser/tester/match-001.js
js/src/jsapi-tests/binast/parser/tester/match-002.binjs
js/src/jsapi-tests/binast/parser/tester/match-002.js
js/src/jsapi-tests/binast/parser/tester/match-003.binjs
js/src/jsapi-tests/binast/parser/tester/match-003.js
js/src/jsapi-tests/binast/parser/tester/match-004.binjs
js/src/jsapi-tests/binast/parser/tester/match-004.js
js/src/jsapi-tests/binast/parser/tester/multiline-001.binjs
js/src/jsapi-tests/binast/parser/tester/multiline-001.js
js/src/jsapi-tests/binast/parser/tester/number-001.binjs
js/src/jsapi-tests/binast/parser/tester/number-001.js
js/src/jsapi-tests/binast/parser/tester/number-002.binjs
js/src/jsapi-tests/binast/parser/tester/number-002.js
js/src/jsapi-tests/binast/parser/tester/number-003.binjs
js/src/jsapi-tests/binast/parser/tester/number-003.js
js/src/jsapi-tests/binast/parser/tester/octal-001.binjs
js/src/jsapi-tests/binast/parser/tester/octal-001.js
js/src/jsapi-tests/binast/parser/tester/octal-002.binjs
js/src/jsapi-tests/binast/parser/tester/octal-002.js
js/src/jsapi-tests/binast/parser/tester/octal-003.binjs
js/src/jsapi-tests/binast/parser/tester/octal-003.js
js/src/jsapi-tests/binast/parser/tester/properties-001.binjs
js/src/jsapi-tests/binast/parser/tester/properties-001.js
js/src/jsapi-tests/binast/parser/tester/properties-002.binjs
js/src/jsapi-tests/binast/parser/tester/properties-002.js
js/src/jsapi-tests/binast/parser/tester/regexp-enumerate-001.binjs
js/src/jsapi-tests/binast/parser/tester/regexp-enumerate-001.js
js/src/jsapi-tests/binast/parser/tester/regexp-literals-001.binjs
js/src/jsapi-tests/binast/parser/tester/regexp-literals-001.js
js/src/jsapi-tests/binast/parser/tester/regexp-literals-002.binjs
js/src/jsapi-tests/binast/parser/tester/regexp-literals-002.js
js/src/jsapi-tests/binast/parser/tester/regress-001.binjs
js/src/jsapi-tests/binast/parser/tester/regress-001.js
js/src/jsapi-tests/binast/parser/tester/regress-7635.binjs
js/src/jsapi-tests/binast/parser/tester/regress-7635.js
js/src/jsapi-tests/binast/parser/tester/split-001.binjs
js/src/jsapi-tests/binast/parser/tester/split-001.js
js/src/jsapi-tests/binast/parser/tester/split-002.binjs
js/src/jsapi-tests/binast/parser/tester/split-002.js
js/src/jsapi-tests/binast/parser/tester/split-003.binjs
js/src/jsapi-tests/binast/parser/tester/split-003.js
js/src/jsapi-tests/binast/parser/tester/statement-001.binjs
js/src/jsapi-tests/binast/parser/tester/statement-001.js
js/src/jsapi-tests/binast/parser/tester/statement-002.binjs
js/src/jsapi-tests/binast/parser/tester/statement-002.js
js/src/jsapi-tests/binast/parser/tester/statement-003.binjs
js/src/jsapi-tests/binast/parser/tester/statement-003.js
js/src/jsapi-tests/binast/parser/tester/statement-004.binjs
js/src/jsapi-tests/binast/parser/tester/statement-004.js
js/src/jsapi-tests/binast/parser/tester/statement-005.binjs
js/src/jsapi-tests/binast/parser/tester/statement-005.js
js/src/jsapi-tests/binast/parser/tester/statement-006.binjs
js/src/jsapi-tests/binast/parser/tester/statement-006.js
js/src/jsapi-tests/binast/parser/tester/statement-007.binjs
js/src/jsapi-tests/binast/parser/tester/statement-007.js
js/src/jsapi-tests/binast/parser/tester/statement-008.binjs
js/src/jsapi-tests/binast/parser/tester/statement-008.js
js/src/jsapi-tests/binast/parser/tester/statement-009.binjs
js/src/jsapi-tests/binast/parser/tester/statement-009.js
js/src/jsapi-tests/binast/parser/tester/string-001.binjs
js/src/jsapi-tests/binast/parser/tester/string-001.js
js/src/jsapi-tests/binast/parser/tester/string-002.binjs
js/src/jsapi-tests/binast/parser/tester/string-002.js
js/src/jsapi-tests/binast/parser/tester/switch-001.binjs
js/src/jsapi-tests/binast/parser/tester/switch-001.js
js/src/jsapi-tests/binast/parser/tester/switch-002.binjs
js/src/jsapi-tests/binast/parser/tester/switch-002.js
js/src/jsapi-tests/binast/parser/tester/switch-003.binjs
js/src/jsapi-tests/binast/parser/tester/switch-003.js
js/src/jsapi-tests/binast/parser/tester/switch-004.binjs
js/src/jsapi-tests/binast/parser/tester/switch-004.js
js/src/jsapi-tests/binast/parser/tester/try-001.binjs
js/src/jsapi-tests/binast/parser/tester/try-001.js
js/src/jsapi-tests/binast/parser/tester/try-003.binjs
js/src/jsapi-tests/binast/parser/tester/try-003.js
js/src/jsapi-tests/binast/parser/tester/try-004.binjs
js/src/jsapi-tests/binast/parser/tester/try-004.js
js/src/jsapi-tests/binast/parser/tester/try-005.binjs
js/src/jsapi-tests/binast/parser/tester/try-005.js
js/src/jsapi-tests/binast/parser/tester/try-006.binjs
js/src/jsapi-tests/binast/parser/tester/try-006.js
js/src/jsapi-tests/binast/parser/tester/try-007.binjs
js/src/jsapi-tests/binast/parser/tester/try-007.js
js/src/jsapi-tests/binast/parser/tester/try-008.binjs
js/src/jsapi-tests/binast/parser/tester/try-008.js
js/src/jsapi-tests/binast/parser/tester/try-009.binjs
js/src/jsapi-tests/binast/parser/tester/try-009.js
js/src/jsapi-tests/binast/parser/tester/try-010.binjs
js/src/jsapi-tests/binast/parser/tester/try-010.js
js/src/jsapi-tests/binast/parser/tester/try-012.binjs
js/src/jsapi-tests/binast/parser/tester/try-012.js
js/src/jsapi-tests/binast/parser/tester/unicode-001.binjs
js/src/jsapi-tests/binast/parser/tester/unicode-001.js
js/src/jsapi-tests/binast/parser/tester/while-001.binjs
js/src/jsapi-tests/binast/parser/tester/while-001.js
js/src/jsapi-tests/binast/parser/tester/while-002.binjs
js/src/jsapi-tests/binast/parser/tester/while-002.js
js/src/jsapi-tests/binast/parser/tester/while-003.binjs
js/src/jsapi-tests/binast/parser/tester/while-003.js
js/src/jsapi-tests/binast/parser/tester/while-004.binjs
js/src/jsapi-tests/binast/parser/tester/while-004.js
js/src/jsapi-tests/moz.build
js/src/jsapi-tests/testBinASTReader.cpp
--- a/.eslintignore
+++ b/.eslintignore
@@ -302,16 +302,17 @@ gfx/skia/**
 js/ductwork/**
 js/examples/**
 js/ipc/**
 js/public/**
 js/xpconnect/**
 js/src/devtools/**
 js/src/octane/**
 js/src/jit-test/**
+js/src/jsapi-tests/binast/**
 js/src/tests/**
 js/src/Y.js
 
 # Third-party
 media/webrtc/trunk/**
 
 # mobile/android/ exclusions
 mobile/android/tests/browser/chrome/tp5/**
new file mode 100644
index 0000000000000000000000000000000000000000..925b6d52d433c088dc5154744a079d04e936aeef
GIT binary patch
literal 7935
zc%1E7%W~5&6jdJ-*cA4#@Pb7drY{!E&~eg9Lm0x8lp&c8J4UtDL{r5MvfRh7uw}<@
z@E5S;1K6=*!IkoI5?OH_yFi;PlK5IWx{q_O<ZD}m9Y%_Fi(t3-mitYP+h`FXbmY4i
zXs=p(UEirYeup4?Q;o414Mef@5TR8VWk;tUVovc9BQJ=<Fvo)Wo`Q0R*8w`Ao;!;5
z6NW5I!}7U;qAsEy6$60il&VWSL60fn3eLmrq0)ii)N2-RgS=iTH>w9Ud$T9AH+vva
zth&0lPX*zaDY#S2!U?<w5)b}5qVh4sjEal(t*vcq-P+#Xc)sy$a*e^Svb+zor0}^}
zrIg<NcD3F;th}pd<=qvyQ7OMEeR%pWIP%xkIr0|B8`Z{sB@;J3l4vbr1&XK^=`q!U
zq*fYRYgVC9upVdX<jQ%6lOO<J)&&-%4K^zc$w01kP8l;coT_FxAR;8KEAN6l5SWVw
z353DI+)P*;nt*vTlqf-3WA20ej6=L%ft2uuzwb9EZBoJdw4h<@9`!K4h$tsR*{1<w
z<X9k1n=LWEt^|5ATqtMAzfi~J4J)1<*`@DTM*Uy(Tb<bLV#v1(2ul;>^L<9J7aNNO
ztru$KEGKIuhk822n6aa)_{q%}i?IPje)`(o42Jwb8itI<diL6HjBv`Z%%d2I;%{9P
z6PDbrw@kG=YdWm-%<?pQ<~+Qb@V0biJimf$ijUIgKv$0w(oHJbqME?R7wH+1=TwS>
z?yIg+Bv?Ssso^PyysU6;e3ZWA8KoK+0Xob#*I9ybNhe;%%$WTkuncl>>2|=&&~s#O
zDB3oXNYq6gxNZmWEz`Ux@;zm~O8NQBHC4(rnx)wFfdItOg`>-<5hgO<IT_MtdZ&5~
zp2io)eUy@kCAih}<mhw_k3#B(hx8IG7&48QvS`Q1VTD3^{c>egj?KFKPP2DFE_;q;
z9FUmwJ%#m_Q>1U=?$@>H_a&fL!qd9!&8c>GX5GFiq|LA#W>_;~c57Y1jTBbxzOUn5
z!Z}lxlj+#KKE%Ac?Gm>JmIgg>8FxfDkd2i6&)}7Na%od9DDDVk%CiJ}wBdO+zC&y*
u8xe&jUa%R6V<3Y0^+@bNDbb4vebUCHOP2!b`+fg7lfeH*KWUk-W&9rz$qDoT
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/StrictEquality-001.js
@@ -0,0 +1,73 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          StrictEquality-001.js
+ *  ECMA Section:       11.9.6.js
+ *  Description:
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               4 september 1998
+ */
+var SECTION = "StrictEquality-001 - 11.9.6";
+var VERSION = "ECMA_2";
+var TITLE   =  "The strict equality operator ( === )";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+
+// 1. If Type(x) is different from Type(y) return false
+
+StrictEquality( true, new Boolean(true), false );
+StrictEquality( new Boolean(), false, false );
+StrictEquality( "", new String(),    false );
+StrictEquality( new String("hi"), "hi", false );
+
+// 2. If Type(x) is not Number go to step 9.
+
+// 3. If x is NaN, return false
+StrictEquality( NaN, NaN,   false );
+StrictEquality( NaN, 0,     false );
+
+// 4. If y is NaN, return false.
+StrictEquality( 0,  NaN,    false );
+
+// 5. if x is the same number value as y, return true
+
+// 6. If x is +0 and y is -0, return true
+
+// 7. If x is -0 and y is +0, return true
+
+// 8. Return false.
+
+
+// 9.  If Type(x) is String, then return true if x and y are exactly
+//  the same sequence of characters ( same length and same characters
+//  in corresponding positions.) Otherwise return false.
+
+//  10. If Type(x) is Boolean, return true if x and y are both true or
+//  both false. otherwise return false.
+
+
+//  Return true if x and y refer to the same object.  Otherwise return
+//  false.
+
+// Return false.
+
+
+test();
+
+function StrictEquality( x, y, expect ) {
+  result = ( x === y );
+
+  new TestCase(
+    SECTION,
+    x +" === " + y,
+    expect,
+    result );
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..f94932cbb4a44f278460e80be0fb269addbe2dff
GIT binary patch
literal 4825
zc%0o>&yUhT6drc{8Ta5>FWl7VE(<2ckV?Xj>S9<Vv~2WX%xpWrWJ}x346ghu{%Kyk
z8;|}0zA2R!XbW2ktL|mty_q*N-}~l!Z&1Y8wMa!75^PpF%o#8|LVF0IbH|*ZTC@FD
zD{F@15~LKoF^WaGsQkE(&;g86!qe3+E+d>%$JPWEWJGL%axjR@?6V-@X?1K_!BlT?
z15AV<%m!l_g-6b7n&6^+N|?8bjYq*IxnR^DRBnRZg-=2$_!gz$hwzRu1b=Sv7@9Y-
zMFnBl^4y=XHC~GS5FDCb)q7ew-#@~xYfbV7!+e+*go~r)6${>y!B_wPzm4F>4G;tl
zp<3@vyLVbsyXAbT`11LSRIt4s+lGLXH;7?jhUG`J55cJ!Pva}%AnpC-&4r`XEXTN*
z&)cen!+!bqXH3#z)66-;jN)^PgaMK)F@x_MT~OPczvbVflDinoVO}V}n%Y#P#rL+n
zO=?|lzH29=ye7Bqfy29#hsVdoLpy?2^YrrF`(8YjyoHo#e%mdYXKGi=3e8*KQ0u4F
zPsL1u%tr2Vf!w8p>n_;2z)a|%+zBVljtf6`#|5e2dQ)$ynK0pj)WK=Bdt7=}dXhIC
z!tF<5TKfJ%c4S!$Wx={+0MQ9p3DcdHGl;2+Uvm)&u2CDaNoaEt2hj0pt}W6Rh|$4N
zL=~T>!9rUOc@1hU9r<|jWXJgJ_hMCW4Qx3&T~c19PKqpf4OOdmo1M%Ollr><4}jj0
zRquTVc&;`wK~oZwFy=%E-xh#tlglmXpae#i$~xvGM*n`n+#8GfcMZyNRRU+5)g9F(
z2{eJd#pL3{25+>31^iaO&vy07-MsCSu!*%gKL1d0&#=AOQx96WY4=9VHmt~f^9kk+
z%7`IU0C~O>RA6^fxmT)qq9`TZp7^Smc%74;648(1_@4}t`|Q|stk-sVFy<C>_8SAz
B7q<Wa
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/apply-001-n.js
@@ -0,0 +1,29 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+print("STATUS: f.apply crash test.");
+
+print("BUGNUMBER: 21836");
+
+function f ()
+{
+}
+
+var SECTION = "apply-001-n";
+var VERSION = "ECMA_1";
+startTest();
+var TITLE   = "f.apply(2,2) doesn't crash";
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DESCRIPTION = "f.apply(2,2) doesn't crash";
+EXPECTED = "error";
+
+new TestCase( SECTION,  "f.apply(2,2) doesn't crash",     "error",    eval("f.apply(2,2)") );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..a724010a7b3799aefaa8ad782dab6ceca9bd139e
GIT binary patch
literal 7700
zc%0o?OK;Oa5Ozy>REUSf4LF2b5uy)?141DZNdu&c(yF$4;8JbvA#uC)M(YhB{1ko!
zzk|QPl^Yk-pTO=q4>wt_U3Z;^=HhrC-|o!Ld^0;PvtAcNrQ8AJRrV-pQ*>%ATb6Z1
zyn$71w07(_woAHTl{e&=GWJ7O`T4}M?($LP`1AureRPCj8(fSiVm=8Zls9<~trI`+
z&SU-NLzdF82$fL2XZeB8#sKjt4G#k5fA)b&xB#6_HXSnR2kpvj-fq`xPGh%K-Wax(
zH-;c_EL-+9eFhX^3HJrz-VEM-sVIU01ur)@x7LrtS=jMY3Oky4LqbyhE^;dL*L)Rv
zP~W#rDfA}q*s-?`UoC<j|ISa3LT;zwH0wsR_>^~4BePuZQo;xubYY#5X!_c7qspy+
z?NSIsu0xw42B%zBxic8IE0t117*D3k87^-E$g9Ft-X1bUnFAryNLZK%%M%e0ZTAF9
zm{*vGyuDBPIe+A>KpoN~?OB=RVSQgxSZUP{5FNxeCytV{cx12`J~NB@?GBq>R{*`3
zEL1S$6)?8wC?#8mIk%niDBVIi>FLk>=xJ3tg9}};7bEBJh<CI|X$)Fo9ZLEN>}wr9
zZ}E2SPCcw3tQ<-eaPN_i!CM49o~ekbIQw*V4{c|^(fXhlW}C1n&L&64;4+H`N={~M
zpxi^gSsD3l7^?OA&ZvcPxHraecX<0Kbx04ZIn2wUgGtzxR}W0w6RU#)5A%Jg6k8P|
zrY33cD`zW~j8`V?`rG{MTC^*!6mgUm^b5*C1e+usyHvy{6;WoSs(X_ESqYUAtv?}h
z&M!rM$Gh5r7@aTcd8^KP3geOt)?&=x%@TC+$$85C;#!<Zf~TA#&KN<8#iDmkUJ-AB
z*W#;(=lSmO$juW(N>6ZWh`F5_M!gWE|8$Y4G9@y04iziH-KFBiCg0}rG_@@jjm$s2
z6uHVC3PbRo&BcYUPH`8w?<^3{q&PuwJd=%Y#Ba2o&RWzQ)dY4yj)GK<GH9#CrD5Vs
zL`kcLLd5|~!GJr($~0S<EUx??<)i{2Gcx0A-Vw1Ce=8-IUQ3MdjCc4y@_a=xDkn9s
zu?~g4x#Cs|30|@Yrzt|44owE5W`<;EQR?A>5Ll*CxS>4p2Osz##=*+chK_kO_s-;c
rtNwza<<Qt(X1-zReL!Du(b$nXg^s}~zF;Jtr#5I0pD7;_l;->ojUC2I
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/boolean-001.js
@@ -0,0 +1,47 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          boolean-001.js
+   Description:        Corresponds to ecma/Boolean/15.6.4.2-4-n.js
+
+   The toString function is not generic; it generates
+   a runtime error if its this value is not a Boolean
+   object.  Therefore it cannot be transferred to other
+   kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               june 27, 1997
+*/
+var SECTION = "boolean-001.js";
+var VERSION = "JS1_4";
+var TITLE   = "Boolean.prototype.toString()";
+startTest();
+writeHeaderToLog( SECTION +" "+ TITLE );
+
+var exception = "No exception thrown";
+var result = "Failed";
+
+var TO_STRING = Boolean.prototype.toString;
+
+try {
+  var s = new String("Not a Boolean");
+  s.toString = TO_STRING;
+  s.toString();
+} catch ( e ) {
+  result = "Passed!";
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "Assigning Boolean.prototype.toString to a String object "+
+  "(threw " +exception +")",
+  "Passed!",
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..a52b8a39dfdd3439994c3e4fee0861d161194ac1
GIT binary patch
literal 7749
zc%0o?PjAyO6!*qpOb7(x2A6OfLTm*gA)!!d?K;t^Y9~^5;4*oQ+h+6P$Z;v<qwsC`
z7+g6ZaTuQg+v%UIb(}0qva(*PIQGx)J-_#R&o3q$co>z<K7w}nfRY}CXJ8coa7^qG
zsMMSL);p_1JOs>bImg6~&&ofZ0&tJdGQ-OcA$8y}M!TqkA%)B#u7t8@&ptSHT>B!{
zFFs`@4vSC;<=DV+9X16BFR9zeWlq;YRKmINY$mkNsN?p^>wMg*RonGe)7&19ncHKK
zFqS3XH5`U0#1ifc#DfLA2hvakBj~;?m0oY1_=~X9f2r(b<t+(G^-`oX=+9yedRY5t
zWo6LY{KdZY>gdff*zvqLI|{wq^>(9{i4}Qpf=b|)TOK8hu#tzh<kVJo^LeJWt$p<<
z@_lYXi$R9YxT;bxG#yvkqzW;fEtM-ed<dbm7Tn<DK7*9Ck<T<5=BC2xOa(}L1A*eF
zRpucdA5wnIANVMuZPFmUMV;hfeP2;HX~l6N9fgDwN6AS%@K=nw3{a=nXY>0Cpck`^
za)!JH!WJ)#Xz$1_YUd(Kw^2%V`coV`ZOCBgAWz7W$vHgcFPg-df*Pz($xwlPqqFB7
zKF-5wfE9$5!l(jn4>}mx%V5X9Dq_mVj(0^BveWofJ8JFeb=f6sj<U(|3F<Jw(<J9I
zHd2a^ZdF2h8z*YL+zEqpn(Q;9xb=y%wYu?1HHCAv>1dX8<-G%w&MD|a*T!5dm0c@h
z#@r(9W#xPg$ZVB`SAQ$ctHrqDJ`qM~qG3)Ih~Scdb|UJI&nlWsNL2SF`!fR?k<K5H
zH;XG!clfKGD`uywdETpQp4_M;fwyE8?y1?iq+sX#3-g$}#Z5Soh%mXpnjv-+dj-#&
zxdPHcc9U=JUnILHlNgWCD89C>Le}Y5F&y|v29F0te<_l#Q&?D$>aLV5N?gp<d0tyC
z4k^B}6i#>meIMD+3W?zBGu$PvI!i<|F+q@!q#23I_*di`@tf?Y^A<HnH4wWbN1<4b
z%FtKytHH#Xh;CLD`icXVirG9U*5=tN%f8D0(MieyG9fd*<u3xZ;!j3o)74;vSGxhG
z5d^-X4V99aH(8&eVRmh;7!JH*`%Tk+&N?$?m^2gAI?K`t7kt1HHNi6~6MyrGk3tlz
z>}u$UM|0<l?zC!2QhW8#c8x-EE_~S1$A`WTqwz6ybsd6JeAkFPYi&N)-6_WZF`pik
GVek)i5!6Ni
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/boolean-002.js
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          boolean-001.js
+   Description:        Corresponds to ecma/Boolean/15.6.4.3-4-n.js
+
+   15.6.4.3 Boolean.prototype.valueOf()
+   Returns this boolean value.
+
+   The valueOf function is not generic; it generates
+   a runtime error if its this value is not a Boolean
+   object.  Therefore it cannot be transferred to other
+   kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               09 september 1998
+*/
+var SECTION = "boolean-002.js";
+var VERSION = "JS1_4";
+var TITLE   = "Boolean.prototype.valueOf()";
+startTest();
+writeHeaderToLog( SECTION +" "+ TITLE );
+
+
+var exception = "No exception thrown";
+var result = "Failed";
+
+var VALUE_OF = Boolean.prototype.valueOf;
+
+try {
+  var s = new String("Not a Boolean");
+  s.valueOf = VALUE_0F;
+  s.valueOf();
+} catch ( e ) {
+  result = "Passed!";
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "Assigning Boolean.prototype.valueOf to a String object "+
+  "(threw " +exception +")",
+  "Passed!",
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..c695c8be4ef547bd7005592da25172bb4ad5f837
GIT binary patch
literal 6585
zc%1E6-EtB!6b>y~^+LV#mP<O;qRx2J*<q$oR2-yEVYqby8))pZVX~o>7w`d`@y18<
z3G^*I$pX79*|4l^shx5GY&JPR-#O<?ax5_(Iizfz6Kt11aW>$1h;|S{U1m>ErQZC|
zI%@UUh#;$^=2#B(METn@gdV{xE4;jeImKOvoRFS_ITn<;N|YTud+36?_M)s`FeSH2
z7UN13wGnlxm<tFmsoTUAv`-0F;#@oojP?Yl?x4H}<E>h?T|aGFrRkVenhFWaYN>Y(
zDhS7p5_gH6@shmz@S=wu=f$gKar0m0<ZQ*R62;Bh{|_KLwX@bHfvi<O9)Es)6M+14
zeL&uW@pir4sBHvBs7my9?DnK%ha=7e6O$1+lqtGVTx(xPoOm8+X$dUI5ZqKok@>h5
zk1E&^ELAI{X@sOj?;(tP0&~$Oo-lZrnF~9C3z!eaQi_+>nWr#*#UaG+VU+MTYp}tx
zPbyeHbD9LLP#5z_$T%5FU~WHG9nu$w)4{oj>Xm|?2Z}NlxdoP%FADM5vAK$kR8$7(
z*CbaNW#0qo7F1Ccdn6|7zJtDeH0!ny&jP%tGWU`|-7|lUqPU_sr`|z9e(#$VB`{j<
zNbee_mE(q4R9ZqfVIs1Ob-$3FKtS72U}BOskWZG;`DZZlQ?KGvUL{BurtL%%qz&N+
zc`83M={jo?Oplh=?X0$o-J4NuFXO7M!k9y_dr+AE2@V`9sxP5pNwj_J=m5GaKz#ug
zbD9E7m^0HTnoZ3Nw8R!9JQdD!G5IciJ89%i{$|j~(fTxUs05w%i~DzkvL!<Koi(AX
zcO^^*@ogfl6c$daX!Z5@+6ZyueE^xwV(k{dtWy&14(0up&Iq1|UVIZYiwah7H*~G1
z1R8eztkwYFM{(g+@37uQ5U|zV-hExW;f#nekHmdOkXoF!(@cm3CdCHgUq%v^(SqwC
zWVJUMjZI0{tWYPN@t-@G`<YJcCIICv#`p(Jd@R+NxGhOK8}84hqeXmo#dy{+^`m3A
Xy13LZQ?a?{7|TQ^CQjD*)AI0NYkpiu
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/call-1.js
@@ -0,0 +1,42 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          call-1.js
+   Section:            Function.prototype.call
+   Description:
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "call-1";
+var VERSION = "ECMA_2";
+var TITLE   = "Function.prototype.call";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+new TestCase( SECTION,
+	      "ConvertToString.call(this, this)",
+	      GLOBAL,
+	      ConvertToString.call(this, this));
+
+new TestCase( SECTION,
+	      "ConvertToString.call(Boolean, Boolean.prototype)",
+	      "false",
+	      ConvertToString.call(Boolean, Boolean.prototype));
+
+new TestCase( SECTION,
+	      "ConvertToString.call(Boolean, Boolean.prototype.valueOf())",
+	      "false",
+	      ConvertToString.call(Boolean, Boolean.prototype.valueOf()));
+
+test();
+
+function ConvertToString(obj) {
+  return obj +"";
+}
new file mode 100644
index 0000000000000000000000000000000000000000..0fb83e3759f878f95966ec2a96c440197bd6bf63
GIT binary patch
literal 7148
zc%1E7%~BIV5MDs>ztn@4+~N(&lAuRiLWPh+EDRJ$aj`6GvfC`9lbzJ;M99hK@>M+e
z0QwU4%;slFHj_=V#6aXirDx`w{(8Rd`B_^w8w_&x84x#jB)BI?-CDLRtH#}ywO1;?
zuWVNw-T=$a>OMB3fy_B;mh}jG+0o%AL{L&=un!I+f=J4J4dwQJ2i8~WyO*(kW0$2-
zSX^i*>RQyNvI`I$QgXqU^pt|oa6YN`oDQU*zL&d$_DZo(EghEaY};mM+aOV_if%ig
z5(Hry?i*pv0leqfa137YqLFowoD@w5J$=2k^=1&h`(KmpAgpL;VfJRi!2X<VU{8w2
zm9zr8iVelWhy3Ta^AN~ivkT;Hv{y^jgJLRSe5huD^GvAG^^H`6iHHJ%0Ap5>L_!_8
zX-}YQj}1bBFxDHYM>uE#m^5Vf&>l!4WEBEwV3;0-JT`g0>K!4XVup1xR04xjX$k6`
z$$oDY{7%oyDC|Cu;wdrl+81!7)es6;wql)`Y*d1{u6B!?SqBN12;Grfwi+;eiN-{I
zf_4vNfsr6MYLiU{K8KM$)KGI8>APr`JS;k+Gc3i*ySg;9%BvtmOvs`zWjIf@beU3Y
zZYuP0k0udbQ=tTt5`KX8yz8n;T_8bBv^B{eIOR(Js_#*sh}L8U_f>qsO}LBhc2{Y$
zn_8Rwg(tI<2~#-Ir;{@8GO6t5FR@`gx}9$fcwyS&Cz$auHhc_=Tzk?_W+vlp?pIb&
zljL&h8%$rKUctHJpC{(`rI^G_sHJCv>J4~PI3t!RA^I(azPlYG|LY_;wI2)%$^yuX
zq$@9v@fu;~McLz=0r5NV>aPQQT?I6Z_5uiqP9dPRK>^_<j|+&O?*@zLzB)`Bs4sw!
zyeWkAVo*r+CX<v=f3b9=?xF_f|7A3;jPM*POTG&iBW|fkO;G11$;iNb<}#Z8+OH0)
zGSOpYo7ANu5&0&gCJ29@5D`9yfLq2Hd%D&Df3V|IC4*7wH9SZeo-9mXSBAf9n?4;R
kx_}wZJR^28v$D+P%lyzbMEZvFz4;Y;sA9}7bFsPb7jDra4gdfE
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/constructor-001.js
@@ -0,0 +1,66 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/constructor-001.js
+ *  ECMA Section:       15.7.3.3
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/constructor-001";
+var VERSION = "ECMA_2";
+var TITLE   = "new RegExp()";
+
+startTest();
+
+/*
+ * for each test case, verify:
+ * - verify that [[Class]] property is RegExp
+ * - prototype property should be set to RegExp.prototype
+ * - source is set to the empty string
+ * - global property is set to false
+ * - ignoreCase property is set to false
+ * - multiline property is set to false
+ * - lastIndex property is set to 0
+ */
+
+RegExp.prototype.getClassProperty = Object.prototype.toString;
+var re = new RegExp();
+
+AddTestCase(
+  "RegExp.prototype.getClassProperty = Object.prototype.toString; " +
+  "(new RegExp()).getClassProperty()",
+  "[object RegExp]",
+  re.getClassProperty() );
+
+AddTestCase(
+  "(new RegExp()).source",
+  "(?:)",
+  re.source );
+
+AddTestCase(
+  "(new RegExp()).global",
+  false,
+  re.global );
+
+AddTestCase(
+  "(new RegExp()).ignoreCase",
+  false,
+  re.ignoreCase );
+
+AddTestCase(
+  "(new RegExp()).multiline",
+  false,
+  re.multiline );
+
+AddTestCase(
+  "(new RegExp()).lastIndex",
+  0,
+  re.lastIndex );
+
+test()
new file mode 100644
index 0000000000000000000000000000000000000000..f79e4756def10a0baceafd9b732d10b198773592
GIT binary patch
literal 8840
zc%0o?%Wl&^6m=gIidcZyAS6^TQ&qI(v4S*Go1`LD2&J(qu|iXOnhbSpYdj(3SNIvk
zf{#FA#|plJJL5bYXEJddI}ObuQD!{%&V8LZbDd{x&&Gv(6C<l|O5FxUEp1iPv<uhj
zYDbmYN&QvbbUm!)_rx=KoA|8oV@uQS!BhG0@^eH9y0CExn>M0|5!Vr-tl@uOyCRM?
zD(e?KvNBDUONA(6X~ZFHARxS?Vqu4oOM<Bo=b+Yb(>|lbX%ue5c)eUSD(`Cfz1~=U
zuO}odt1jlMgkg$oA?`D>+hg+XaO)7mPxtqqj|&|93N!m_)`T#s)}PRoKNsuD^YU3e
zEmz)xiIe)Xk1v<OkAD~EM{c)KF{<TMy!Z$vN|2Dd9(9?^x*p#3F*8UD=eARIZ25~v
zvG0Tb>J0R?z)rC%JQ$Zcq=;;LxKyk#VF=@-?%RZMpCQT&>@$UhnVGOUGy%~@n@jPN
z8gn1UI}~F421YS8+^X9cw@C!+>xv{pkBEb4H?%n(O2F<QS#5mDG)fvx7S+oI?F<!V
zEb<y~nosDHvm?EdjZ~CM(egw528=`4+qR^z5(I&ZJ4VFD)-pi+pT+rcQ-F$zJ-(Mz
zT=@_tYOX#Is<S3_I}+J9nu2TuV2#c6^79n=e#-f2(C+Yj5zN|l%`2^m9LomdWVRpi
zCnAfKbo?9aWHlu^ephy~WEa4<A4-SD6!KHUom5GK(A(uaX*y$A95*_IsfNR!PIlZL
zBtCBA0)0~IQ*v2knS1dG%2orG3bwIs)(I4oa`dS3<fIU}@Ir=gH87tNvkx--(^oKs
z6GWy*a3ECgTx0MbYB4B7Y}LRJf3$qJ`nyxPXgWJ7B4##=HfsA=<e-OmV_+f*&FE}V
z4eF51jDb5c47{<WIOp-0!M*7Ed^Q8Wn(h9X8E(bM{}@tu_ldayyNPj-&4xEp1e4XN
z6r-w`DKP4B1f!zvPy=NOxjITH(!9d+nDACa5&4n;3&Y++QLIOSD$Psr|Ir4>Kx9m!
zpBo&B`ho7?jvjEq-1cid7#{S@_9acT1PXal=sCEffv(iL5K~ZZ&TfgKTbR);ZO+3n
z2B%q;o+U4SHgmi3xb2uc)Zy#gdT<95<jhZvovE%z!pk)o1CH4^6B#!#d~-3t@8FKL
z<z|4%7=_U!erTEOXihN_nMquJvbikbiFFyBf8&|)TaHU|{77)f4PIrXmaDPctI~0X
zS(`>Owoe_Crbvdod=7Q1liLo#a1nXn3n|V24Q_c5qWR-lq3BU4&LR~bp8SeNNzg+g
z$6jiy`Ids^sB>7sX;f(%5-NG`Igw!~uZ)u+y!Sih#bl5|;`>SDY9~PgDN*|e+5<5m
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/date-002.js
@@ -0,0 +1,54 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          date-002.js
+   Corresponds To:     15.9.5.23-3-n.js
+   ECMA Section:       15.9.5.23
+   Description:        Date.prototype.setTime
+
+   1.  If the this value is not a Date object, generate a runtime error.
+   2.  Call ToNumber(time).
+   3.  Call TimeClip(Result(1)).
+   4.  Set the [[Value]] property of the this value to Result(2).
+   5.  Return the value of the [[Value]] property of the this value.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "date-002";
+var VERSION = "JS1_4";
+var TITLE   = "Date.prototype.setTime()";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var MYDATE = new MyDate();
+  result = MYDATE.setTime(0);
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "MYDATE = new MyDate(); MYDATE.setTime(0)" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyDate(value) {
+  this.value = value;
+  this.setTime = Date.prototype.setTime;
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..206cfa318f41de9cc31b42acb195b2a1bb5ff0f6
GIT binary patch
literal 8996
zc%0o?&2G~`5O&*8sKfz;!~uciW2%a#sGJ~;MAB5G3Q5&ORc~lxZ<D32ZLK$iyb5o_
z8*oM9#0l;^0JH1-xX#*foOK(TLoDyl?9S}$H{XnltnXU5RP147mQJYCrRYjq*EFr;
zm_w~xYaF-Uv<%0^TCpI;6fNShQb*UchcK!boPLHVK^+SpV#7idG2+-llsSF(v`b=}
z*Jb^LA#3wwIaG)urbcYSCIW&}Y9_WBxgeMdaW=Y|ZrWp%*xk~7Xm3?3?OL-@ER5QU
zg^`e;td{7j6NV|Wgt*Vh>d(k~z_mjRzueo~pA|TH3N^=bHiR%5zkW(n{<v9Fo>fm<
zs!VwgI*wbfKE7TBJN~{oJ953-wRXL##EMU$;}9Hj*QE|~*wDqhVqEh=sadOET#7vp
ztk+_&+7)Oi_Jk+xQgc+0Wlg7w83r_AoYr_-(C#rrSsQySM#IchSf8qZXt&R$cxjb+
z1nmO~C;T2-F>O0_r#q{YIIOR068|g{8_{84bNna)xqVl)@CDN->GoK7T`p*6x=_X<
zZvmxwhaT-6>Mm^PM#U|(`T)NP?QraUOLDPN90C`2gouUBRRH)uH)qE!0V)P|`CgQm
z@(FY_9DO2GXFci+B(m=`0onAy8XM~T^8|UGV*hN@;WWMoUTrzXrPf2XX@PPw-OGGL
zXi_X0KhJ4ml!^oVD~l}I93Zz}vwR$HzXl#;6mB_p|1fNJK1n@D7~{Llo3q<dZbaT9
zcC#<t4J=8CF?MhM8%vFfM)Kfvb1d*3baib$Ivue%NKGt~hP1_a>Y>9z4&ex=(tv}5
zMr@er1xd)K=4Sy>Pv0-D0aO5p_?rGZfP{|^*lfTiyz98~eC)iDy3OZI6~v5Q#X@}#
z3x9DDFIGfi<APQao*QrLg^_t@LxRkA_S!5Nv@^)oZqH^5u)Y;Rn*{!!Fsd@g=UmFc
zMjG8@_f!f{b<AP_>RAY&!sdvGn(BNtTc*PcBo*XEaf@@f6uB@^sZ7=XkK#lIA`_+`
z1wS6@2fB?1`k0sI#T(~@`MvG!w>pd%*Yon*$|~4;9ui1cM_Gwv4)`ru%8@9ZK{Qer
zBNI@YRVk=)3}6e_Qjhw!!H+taYv%j}QE)U*8A(f!v^8XDQo_2P@VUqXT#5>Q1A}a=
zHWf@qE!sWe1*XYjw8E3fOycUZ&Q&>{MCs)68_$gBMweMqgt^IgHf6q=Dq9b(af(@=
zhCFu6A=A1@h6H_y<<_H%4}Nn6xnK(^-~R<>c^u&TvtAJ!a-zx@alAPC15zwe4~U%k
x;2ux7VrWjh3&)U}z(mQH*GL)>n;u4^blja7J?DHj^*u=ZzX+vx5+IN=wSO<5WBdRB
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/date-003.js
@@ -0,0 +1,56 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          date-003.js
+   Corresponds To      15.9.5.3-1.js
+   ECMA Section:       15.9.5.3-1 Date.prototype.valueOf
+   Description:
+
+   The valueOf function returns a number, which is this time value.
+
+   The valueOf function is not generic; it generates a runtime error if
+   its this value is not a Date object.  Therefore it cannot be transferred
+   to other kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "date-003";
+var VERSION = "JS1_4";
+var TITLE   = "Date.prototype.valueOf";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var OBJ = new MyObject( new Date(0) );
+  result = OBJ.valueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "OBJ = new MyObject( new Date(0)); OBJ.valueOf()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyObject( value ) {
+  this.value = value;
+  this.valueOf = Date.prototype.valueOf;
+//  The following line causes an infinte loop
+//    this.toString = new Function( "return this+\"\";");
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..75e32116f50ba886aaca695cd325485fd07f71c1
GIT binary patch
literal 8655
zc%0o?PjAyO6wk&O4DA3y;(&yf8=EG!A#sAP($;pOQz;XTChdg0#B0scB-k#cUxjam
z#ElDl3v6d?)6{j+)ak-{XjMCY_WSpHzvq-_FK}VG)PcY$pJBg^LDyI{4CB&w2F7u{
zdD?p0vi$%WrG4>C$wh>gH@6I9lRZ_6E<XntflC)wq3r?;DDpia${GJB#x?SsNm;+x
zBP&U=d@MvE$3PyUBLUGRbq9JBT_K2tI1hBkhb9ywuU&q?##^<DRsYy5?ca=*_HTql
zWwpdy15t>9E5v;RZf{E7L#`d5@YTV=n`wcgU!mr3%{?IutM|`n%Ad<M<$3K>OP49{
zvx(Ez>(7O-<Dcc(k?U>Mtwv3Y6`!$*DhtTH0Q=OZg8=TeA+=B!YBg)^dw?M!%z7=#
zcIz@N#hKt}TxyOAaNY4zvBG9U5N0*r1{)_7U}`}^6&mKI!s=KBfZIJTg=AIcF&pn=
z=Hd5j6k^M7`0Z((gtLCENaFJtc>oV0hvTkf$Q_2N3$LhwQM*Iq`*K0M<Bf6_c?&4b
zC(PN=p)X-$8Kv5&_yE7o#+loDt|YNCIDv~h0my|;5di-0^6a=FK*fduKZ_PqK4lY4
z-y8`wX$Sj#iR?Q~K-NRBhPJ-=JOhMij!z2@#`Q(;YS*`~jSlb}mnkRH{g^)yTcjl8
zU)f1kHIea0vdWU513z3;kE{gh(}aDkq(SUE;4CSbF)WW89kHpl$DhttZVxk;+q6JG
zAA76%G{%$s%P%Zh4aQ8FMs$#O*rX&H$@Ewq8WWit$xyy$_@8A@m^jdBvO|!`gxeY-
zrb@kJK2ZVG?o?dRBTz(50C*!m6F25Gl!#xox#vc$T^VZK+2mQUpyklX+@8(mU_=GM
zoD}h&LJGevqJGFnwBrr`4EIw-iyWgGkSZ|hc?_fC=8(ga##o)C06Lp)?h}4_Pys~Z
zV4>I<ONzBPQ0Z)A|BuE!2azeM`O8sBG!IP=_RWyJZSTA@!{Ol_*Y=LKTU~RTHC1dY
zZPx|~pts=lhD7lks*uLon1a$2<&u%-KAro1@ucV3+||+kYb|V=1UDnv$eF625ms)>
zn(~x4T_WOUx^E!@c(GP^0+@|ZSRF(n%Vd>VqbG8cSbVNo6!)a+BNsn-ZuFMpk{mxW
z6uHrxCvCBstxeZYmsM*Lwp*Qj8xRgxKtOwP_WhgL<w=BnPkT#ob)cvbDw;a`U5Ao4
zM?_A&8&>lm1^ZA%fjaIKJS4JE@&a*Y<yUrcv!V6oH{lIm7((LvMXckJWT=!t{R0K~
B^Yj1!
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/date-004.js
@@ -0,0 +1,50 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          date-004.js
+   Corresponds To:     15.9.5.4-2-n.js
+   ECMA Section:       15.9.5.4-1 Date.prototype.getTime
+   Description:
+
+   1.  If the this value is not an object whose [[Class]] property is "Date",
+   generate a runtime error.
+   2.  Return this time value.
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "date-004";
+var VERSION = "JS1_4";
+var TITLE   = "Date.prototype.getTime";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var MYDATE = new MyDate();
+  result = MYDATE.getTime();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "MYDATE = new MyDate(); MYDATE.getTime()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyDate( value ) {
+  this.value = value;
+  this.getTime = Date.prototype.getTime;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..c606d8345fbfeb7256a42cccf4d6285fda744ecb
GIT binary patch
literal 7058
zc%1E7&2G~`5O&&7Kp??^3pYz#K&3z8h)keOg9wCxa9YF(ZS766>c(rWH>ADr9`Hmw
z0|$5oo&d4CP8`QsZyd)iRJ4ay9`DZ1eDlqCW^1vbk73Q~L*UllQqrSfV5}L2aZKDZ
zW53ycX+O3d;zPsQk!viB0#>_s*D!AIRaSia5ugYhV|V}^3@BiTcv6)+eGZHh<hirD
ze)1)iMY;%;s*r0S53xu=d`r`X9z$IOsZ{5I!PMx0QRMY%SGnA7)H}^LZEI&Nvv$Tx
z;<{}4u7wz+084eB03Oci6A-v$)JGU@?e0FB*BSklo=&!{OMO&tLQXWlpD&t6jdylY
zXm0Qqjr!}okN*Uazt0cID_q`bc3O=>V0<V^xxKwDd1;Oi>zlyD;22`)nhxRCctdCg
z3@|w0wiOC?<J6}x2sozpM8C8YMsg)cb%617tK8vm5rlamz0T#_L&`cZ(0N#z3u{vs
z0PPKhmLRV)x4C>odE8%cDWo0JBE5N^WU#(g6s+Ax9-wD2<3uQVO%Dl-VV4;c_4+J%
zu28f&J*Z@rf1!Sh7iKy;ic8}}MqMoW-Qx0ASU&3G>XE`epRZg?vaiigr^uNEL;Oq*
zQ2C!&J{LQw!1(p_f5G%~222-&bct{}!ar09AL{BGmv+%<WTUFAY(<AvRs{btf@S8&
zoo6c`9NT<u2(R87Rk@rk-4;C`dXDIo<85>`?0tRyJP6W9#?s>cMHTmqUuuj7NCCl;
znl{4tK}UsVNQs%Y2@~gJ8vVtC_AB1Vt|vXrNu)jgs^^K-`TDjex%)ODM|!L?bO}0k
zj`=bRt(<v6fOAq&gm*+ppAfzE2jsmNwiJ;SiKaY#X)1Ip3bN;<!lCc-)rq<t(ID-+
zCKhex@7_~bpbP6H|7V>G<61&Ub(tFri;kQ{4M|p+$+lXFEOCf#!%<1i#5FOT@m#Ef
zAnj}Njfbb2<7<+6D!mwU_{C7U)D5i}UWMIP%=*RFupAZ&C`_x^TZjdTo5M<xispmD
zjMTMF1w};Nj~7+hGwxY%oIo{vJ_0mstfAZHP6lIf9r$b*$!6Mt58Uya;^-`0v#wI5
w-(G1;r|zEsnkcKImd;)MeQxSRqxslpyHpJWCx6?<xChUGq86(pRh1O|1I>!&I{*Lx
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-001.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-001
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "dowhile-002";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while with a labeled continue statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+LabeledContinue( 0, 1 );
+LabeledContinue( 1, 1 );
+LabeledContinue( -1, 1 );
+LabeledContinue( 5, 5 );
+
+test();
+
+function LabeledContinue( limit, expect ) {
+  i = 0;
+woohoo:
+  do {
+    i++;
+    continue woohoo;
+  } while ( i < limit );
+
+  new TestCase(
+    SECTION,
+    "do while ( " + i +" < " + limit +" )",
+    expect,
+    i );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..9b80e1fcd76b00b0e9aae05ef5531336982e6ed0
GIT binary patch
literal 10101
zc%1E8Pm|L&6nC}@TZS3h10O&z9QeCSd+O|%rECbpGTW4C!uHTZN3oSevx?=)GJy+U
zfD;#H;KOj{!WZBGH_m*5PM>5aaT3`{96S4`>|ry0lAfgB`|0VuXWKIL8QHPB1iL$r
z1@8#lv(_xjYH|0uwYyh;)Yxt~+$Wa3rTf^726E^170Wsgz3k-h11u<RF>;?c3=1qN
z_p~Z^^c+}+)N{vmeTFWTS-QB;s;FyGkIJEf<d8j=c#^g$5n7#xd!t1MQc$n6vjOr(
zt=ioCy>4&CGJ7jllGN4EZTnObftgnK6ti$jpMt>U{VrwX*6rIrPwO21>YWaTeW&$_
z>?Pzx^W$pKJgEKAC<@K9&`_)XcJJ?F0p!1{1M&>Wn|sauS|Kpr)TG?p+|;~8eJZ;M
zBZgaq5f?ceR^x>P1rkfrgS8b3cI}xjNDu&~je&l>QZkeqL8@ZLMnm-o2SkMAh4dWA
zVTVFCNszU}(zdWR+5#4xP-zMBZstdj_XXJfAxMd6@_pW!-jg=g+lqm;yVS$td17(O
zl;G1N0yEN<mY|)koSauFx-pulWR*wYzf}WDXGd|zc;ZBzEc*Qb^8LttRAcXv!ag5*
zu1&J94zmmD42+@v1{0X}Khb^4c3Oe;_3r-#(-(7KIvb>K2&W_b$%OEeEdK`5Hhnf+
zqsgt@8ctSO68vu#Ec1+9{B;S06N6WV@ba<II>_b1VbO!ob5yLH45Qbh*w=^WUXY$L
zmS*=iCcDphQ#0D51_&0^bT+adaZG4Nlo$(}7<Udw)}Nhdzq@Ez8<RWCNu+zw)bUjB
zd~w^I+;N+d(`>Bgh!RRTTSo_pGAc|MGWk;>p{zQJJ`RGF<T}RzHbaqMWw6EGY5XAT
z3_Ci`IUS#JCVkGkoM-QCVJ~uh!{8_H^FLLAz@SH64#qt!Jn@Hh!^AmB_r!Oh_e88Q
zBwSi7raIlopK+#muFOoaJ&uq@)8Sq~{t1%{EHc`>loD+&lcw8cy8GoW=`8pc=IED-
zfup;E;KOlxM(4YPqkYO8b20bX7BsXmW!s3TcEG?Ll`Ii%!|+5^v!%>6n<u7-EJ2HT
zf{rCrjE&)(5$vVHP&uvaDCXM!C1wY4w-Feh9}>hviFg|^&i$LH1rHvVL*alX$~UZp
zCIwilPWmM!*589%)y1ngNXx9=11;8bWL9%mXir8>`edkF=xrs6UJG3{)V+(1jdH9|
zL4oXIEAlf!h#ad_M-g2sY>`<dgn}$mT5ak`eN?kjvX7dR50_PlsR9sq7~D7*=~uAv
zVN;h<$?0m5;o2$X%U{QYFV~EG8N?`wSNF%6Hl}Yh%(N*gVxBhw%bregE_yz|BC2H*
zw+>qkVsRDwG91drGR0Q_%LO&{Jca5k@}$2o&SY~!<<xgK8JCIqa!9`-vs^?L58~gH
pPcITwl%@t#h8+LS`2Ha>xc>hVdY(yGC=2~ejLl#z42k(j{0Dv;&PM<M
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-002.js
@@ -0,0 +1,71 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-002
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  Verify that code after a labeled break is not executed.  Verify that
+ *  a labeled break breaks you out of the whole labeled block, and not
+ *  just the current iteration statement.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "dowhile-002";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while with a labeled continue statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+LabeledContinue( 0, 1 );
+LabeledContinue( 1, 1 );
+LabeledContinue( -1, 1 );
+LabeledContinue( 5, 5 );
+
+test();
+
+// The labeled statement contains statements after the labeled break.
+// Verify that the statements after the break are not executed.
+
+function LabeledContinue( limit, expect ) {
+  i = 0;
+  result1 = "pass";
+  result2 = "pass";
+
+woohoo: {
+    do {
+      i++;
+      if ( ! (i < limit) ) {
+	break woohoo;
+	result1 = "fail: evaluated statement after a labeled break";
+      }
+    } while ( true );
+
+    result2 = "failed:  broke out of loop, but not out of labeled block";
+  }
+
+  new TestCase(
+    SECTION,
+    "do while ( " + i +" < " + limit +" )",
+    expect,
+    i );
+
+  new TestCase(
+    SECTION,
+    "breaking out of a do... while loop",
+    "pass",
+    result1 );
+
+
+  new TestCase(
+    SECTION,
+    "breaking out of a labeled do...while loop",
+    "pass",
+    result2 );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..57436770bd007f90b3e4420eb03ed8e7257e2be7
GIT binary patch
literal 11729
zc%1E8PjAyO6i>S`{th@JA(iuJH^B{+vaKsx(dZ`H4Q|Ly+}12jisRBvd<f3)9k_Ah
z&IjOv#DzNtG`;}BcGEU(?IcZ;{@Z$J6es@qz31P1&(BVpG#fh1q-zjpnFDNAF{mqX
zMN!J8cB*XW3(ty=imKUwN_w5Ylh%<%GI!S$WtF~_c6L7k7=f}5cc7{R3<xp}4yE<(
zE#(*)T0hn=`bx|T%fuWCX$mqB=>j;r<TYpzR6!7PI0MvsLR$nQqnf!)+l#quDZgJx
zuiI_ubsNNqRpih15P=xz9PS;^n?rclnRaHYhIE+R*myXM*}Za2JKdHz9(ETYpf!I^
z)|yAT7sarwxk4Z0vd_0(KbQqW{+pa3FVXf=zO<JM#f<kkDO0Hw=VhXWNG$;pIw(UO
zY6;b((ilycum~WqPGt+#*twGihL%NbTI}F+Nny8LXrwIA^<G!rL#0g+1~utb+D<jZ
zqy#ND4I@(_-cteKYLlT@L6x~p+gq5<`z~#TxMc2`)nT3ZWPOSWSi6l3fKMI5v8kjn
zy-i>pR)~U8wMGWVWk74afg*;SLi}bA5^{Eg=f(pbHDB~&R^KsSvS=b<T~Wlk0&GPj
z&}vVh{qh^A3LKn^^_jl6G$a-s8zWW94Tb;Co(Lx=%+BoBQB1~<3%bk&T{b^#2B(Y9
z&KGo97`p6^Ll>W&&o5oTY|`axV7eSkfG*yd?0k^tUVJ9W^FAgZ&!O8AoVHfbNmoMA
z$~V~^EH)-J!Y1cbHFLV#w8=kyA-qi6$;dVE)25-ajS=Ub2}44f(xCTsOTIrCkq7)1
zg-@SF8J}bKg3$-kHKso!4&N~v8}14tgP}=evl-S`a_gpg+#{3sChgy4fyn~$a*IBy
z8tm<0HUDFA&A(%kfyiod5>O{+z~odYOsR$}M>o+@Cp?x!hZthmSn%oba=nOQFD5Fa
zpcW;lTjX>^NMT(hkSj=^$z@INh3vi}SjhT7Ug>ftnxu3_6aMm`Tmg@0zKC>;=7@&1
zBln!|rvUFa<R}L#_G}AG%~p3pwML$s?~A%%7?bzWE+!5e8nvs;O5HNYE_(*XVirgy
z7ui;^DAVzf?c+k*3yi)N{1i(POI)*LrQeUa&#N>l!naMQfPL;i#t~g6Y~@C-!Z!s~
zc%OC{0!MK35pBoK?u+40VR}z=`(kX#$4>6Ez>+O+zQqI!i7A{R-=Yt6(`+RC?hVWX
zk0L6#WRWkj?X;;f^iO;?7<!}2i<FO@uz8^8=w)VvhYCzDn$pTpu!842_#rA&=E2N<
zvWc&aagPkl#&6%#;;mh`L9IXq>dgrUxYIGDB%FAMk;#qfp>kY4c)K|Z8l))}=p&Wj
zrb8g%W`Othx(j{X0+IY<C)dd6fE@Z})YYp!GLj4H?W^QdK<W92oc#9H<8!?B#Pk1G
Pid|5TXKP8W5fbk|Lod^R
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-003.js
@@ -0,0 +1,63 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-003
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  Test do while, when the while expression is a JavaScript Number object.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "dowhile-003";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while with a labeled continue statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( new DoWhileObject( 1, 1, 0 ));
+DoWhile( new DoWhileObject( 1000, 1000, 0 ));
+DoWhile( new DoWhileObject( 1001, 1001, 0 ));
+DoWhile( new DoWhileObject( 1002, 1001, 1 ));
+DoWhile( new DoWhileObject( -1, 1001, -1002 ));
+
+test();
+
+function DoWhileObject( value, iterations, endvalue ) {
+  this.value = value;
+  this.iterations = iterations;
+  this.endvalue = endvalue;
+}
+
+function DoWhile( object ) {
+  var i = 0;
+
+  do {
+    object.value =  --object.value;
+    i++;
+    if ( i > 1000 )
+      break;
+  } while( object.value );
+
+  new TestCase(
+    SECTION,
+    "loop iterations",
+    object.iterations,
+    i
+    );
+
+  new TestCase(
+    SECTION,
+    "object.value",
+    object.endvalue,
+    Number( object.value )
+    );
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..e2b7f4de99b53c54df059a4e92ca524cd9878d59
GIT binary patch
literal 9961
zc%1E8&2rN^6n07}FwERx0ei!+fB{<mRvlBIAq-_o?i~`!f(4`4N~)=18Cj-uhGEHu
zH4E7DE<6JZcm<w-xkqy1IEm~ej@%!nT{Pn(=}6~0pN`Iv?T9F#c+J_y$Xol5vkpgH
zYr(Rt7W4M3^^N+|#%jZ50k)hK)yJVE6l)hQTh>|V<)nviAx=<>;z!t}h$BImuT*)1
z=g`_AzBjDv7j&si(#5z^MLdi6L?jB*LpD6@3(_W-D|J5V4i+5>PW;Z=DUdg6)#k>(
zb!Vj~b5?pv(z+U|ZIcMh5moBmA{ve9lMr}pcbiar<L1q~<2sXHWodud38jzcFQFis
zKlT^Rt=jX3DKwX$p;mqN@b&G(0OX(j1M(!un;Xr|nh_YUD^e~mFDqW!yF_f;$fl@;
zDfVoa!D{>n+o3=LcVTTt!LGdvI1WR=w9(hER*Dn37NjbobTCwna6yD|QAp2#94zFb
ziNib#OEY0%U;^TuNNNd-8gmZhyBz%f1f-ZZ*(U3Z+oYWJwW49|I`I+TOD#^i5@LEx
zV2azq;-s@JM(34^t_>zCS>*x5Z`ojHv%}mr9@$Yxi+&RIN9?7HCK;>?pvS@}>*_Eo
zCvM*f@~^L0XZJ|=F`p>~*6;g&JC+}&z;ZG;$H<N&`%{PPi@Z1n(l&XQtW6g_ZX}ac
z<^=uNb7ky_^AF}gHZ^$PkexsGSp>P5Iqi8I`L4``(`oWzoZANQ+zqo!LgW7aqVxBZ
zCom;lqA`6&O-r%gu&YBcrovD<M47uY@cQHe8lShUQ==9ZB+x@>>iDvEv3%@a;e1TW
zNj}z7WC11Yse^+=Iu$02sJLY$MU`7HKw-EqHOygvO;h|Afb9-6v=KxYZ`E#bwu5aJ
z37fT(IyfnR?Z}TeI`-(^Y$$KWx`y|?njqf&1>>Uxyv<lX4l_rbZ%dk(+6%)PJ@Nq2
z8Zh(3?-w-_7bNJ5z=Pf+c}POetUOJ2x>mgE%!qQi)na=XA%&*P{1Cs1(hD@1iC)ae
zMCU2hoidMx`403v_-E$m=Zc1->l~w$mPrNd5stZLj;fVj%w4syYzGX|VHUMvc<Lgu
zCDEPiR$a1{^5Qi4#2hMy#xO=P@-tzm9G}Q$5*Y(7H-LN{@0L{Wo(8$Rmad{Os{r~A
zE?z8908M>CdNi(tkA}*bUKZN%TbV1GYiF}*Nr4qgC~U{<h4_TiyTB^tR<y4gTV!6P
zZ^$F1T^${0jA~X&j!{$c;gZbmWHJE{{VEUH>J4abvr)!^lFu-csn=i1msf{`FITmE
z>8GWsH|K|$Ho8wF^t3UR{Z5;K<xeL$7e8+y9$z(MuMVb$J#iHUB1&XKMcPMz<sUh9
z-aT?2X|mtb=CU}Ya_n=LoI@n*Hb;M0WFMJ%AtR3$z2A&4AyU*7x`qkg9K>E$|35*`
UlOt})f<6~uJt8yPt=|X#13xI71^@s6
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-004.js
@@ -0,0 +1,67 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-004
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  Test a labeled do...while.  Break out of the loop with no label
+ *  should break out of the loop, but not out of the label.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "dowhile-004";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while with a labeled continue statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( 0, 1 );
+DoWhile( 1, 1 );
+DoWhile( -1, 1 );
+DoWhile( 5, 5 );
+
+test();
+
+function DoWhile( limit, expect ) {
+  i = 0;
+  result1 = "pass";
+  result2 = "failed: broke out of labeled statement unexpectedly";
+
+foo: {
+    do {
+      i++;
+      if ( ! (i < limit) ) {
+	break;
+	result1 = "fail: evaluated statement after a labeled break";
+      }
+    } while ( true );
+
+    result2 = "pass";
+  }
+
+  new TestCase(
+    SECTION,
+    "do while ( " + i +" < " + limit +" )",
+    expect,
+    i );
+
+  new TestCase(
+    SECTION,
+    "breaking out of a do... while loop",
+    "pass",
+    result1 );
+
+
+  new TestCase(
+    SECTION,
+    "breaking out of a labeled do...while loop",
+    "pass",
+    result2 );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..3e1e3c360f294c87ce6f2ddd74357e174153ce5f
GIT binary patch
literal 9175
zc%1E7%Wl&^6m=g^5F0iKv9nmvMWIg>iONJYX@FE|Kuuc23QgikGOA-+<1wK>!3XdU
zd;m)p`~yNr{0ZXDI1f7+JFR28DQy>NGLJhmXU;uy?~KM=+rT-kjgg*vORW|~9c5lo
zl)9y#D)~}nzq(UxST<I)HPJ>hh{JN9RYkcCtu%l4V?+t68+Z>l3`7wlmMKi>!{3f_
zLQFkq>kl-Un`FzP!W7XJViGnm;O|n>vB^l2U@FX+s56|j!zeLZxg{vC77Mk~n~Jv9
zE7R6`M*Oy_qOMFBrpOTHJ|e>%vv-HD&g!;_fuF3eZ;#s?{1+?jcUutlX!I0fqWLRZ
zG>?mi)uhn82^Gb{!S096Spf2Hc0k^M@>;1@E+zuwV?oN*)m6buwM$rAMXG`7*uc8l
zuwXW(i&cjqhC48~SpfTYc3^Ya${)R|93A9~hl%laYvbwWv#ms-EPk>nb{s&g+TSWM
z2Rta3LQp`4G3+XOG@uCMX#fMVP*%fE6j@SR!u)Uvh_+mA#fiI^yHMVxu%oY`6w{hj
zwp!zB5}Wm9PQuANF%doWO^$CR9FHD74cuf3C9O6a9hVzg84i@P$qP6Nd4(Fzj^q?^
z#G}%u-}D~D!-NVr57x_Eg)hQ~reDM&l(Tayz)RO`aMAal2MeBvhenu5qZ@EG!)lxi
zft(!aZr_tcx-s`;7pht&ZynFupU3ugUQVKsserIj(&#%n|LYq`k){_12^T;Z&^6db
zA_B<$!$yviiFeNeY?3HF25iev(L}`9QFWrLrp44YVGyP2SVc|fs}j?MPs6h8D}$^g
zj?9dZWiL+%N~B00JfWN-#j#wNal-Qabx9JW?OE@5>Lank4>0Kx&OPuqSkdC>z$t<!
z+#q4_e!_tBV-YUJ=p^Ve-U^bR{D0=Q$($n(1A<uRyP<;Ts8+Ktg=dQ)d+~8#Ykfqx
zLg#xj2UR>dO~ac)bo6p0;Cul#e3Rr6g0TCto1pj+Zb+6mg>xj8x@&S~AK5x=)Cl+k
zlYRI{4e~}S@h=0yz?+;VjJb=zPI>?0T9+~k^B#=_(19~Uh{ajYj0AwK;BHFFaf{yx
zLHt%g4h|8I<vB@Eb^(`R5BNB4rw+)&7Vz9f6<x&j_ta^4s>*oTDNvdb3f$+>w<LIz
z=CO%}BT2@u*Cff7Bt5mBVUoz+X48$a&Kev<562ni{XRz2yN$+r1(xdciVMhQ?w~A?
zC;tFg_`}hJC&Wqj(NQD{fA@%Fwa?_(OT1kE!?W`63?n>rkJ6AR>O{ptK9D8Pjy`5H
fS;d40K93~g^E<R$^6hHWzC@xQj&KHO$(`>XWaOwH
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-005.js
@@ -0,0 +1,73 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-005
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  Test a labeled do...while.  Break out of the loop with no label
+ *  should break out of the loop, but not out of the label.
+ *
+ *  Currently causes an infinite loop in the monkey.  Uncomment the
+ *  print statement below and it works OK.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               26 August 1998
+ */
+var SECTION = "dowhile-005";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while with a labeled continue statement";
+var BUGNUMBER = "316293";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+NestedLabel();
+
+
+test();
+
+function NestedLabel() {
+  i = 0;
+  result1 = "pass";
+  result2 = "fail: did not hit code after inner loop";
+  result3 = "pass";
+
+outer: {
+    do {
+    inner: {
+//                    print( i );
+	break inner;
+	result1 = "fail: did break out of inner label";
+      }
+      result2 = "pass";
+      break outer;
+      print(i);
+    } while ( i++ < 100 );
+
+  }
+
+  result3 = "fail: did not break out of outer label";
+
+  new TestCase(
+    SECTION,
+    "number of loop iterations",
+    0,
+    i );
+
+  new TestCase(
+    SECTION,
+    "break out of inner loop",
+    "pass",
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "break out of outer loop",
+    "pass",
+    result2 );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..7ab5fde070571e7caa03a24269f94f48da7076e1
GIT binary patch
literal 15060
zc%1E9Pj4eN6nB%BEufVa!3PKuoKV|^!>)uv#WoEhD5Pi;iZ~&6#!XD!aqxI3mG(<;
z<-&~{Uw|ujJ^(`Ej>MTOwrA3r&UpT2oPV3DY8sE{+3&sI`#YXC_of6Lw<ieN$6qiy
zX7Cy`000-%z6B?}!Dqt{hZdb8&^}Ug+624&_>ZRmJQTCq(c8}<!|;NjQ)CgyAji~E
zr0np!3$CzZ->3Drn6i^ci!wzD+W<S5-w}x3(zB7n@g+t~k#pd6xM`O&?2L~ei1A^!
zGwPiU+DE}y`zRn1r8QL7`j{gIi6ZwsBwm8v>ykTqGr<HMJbwHnN%QVgaXP!Lspzrn
zEmV}|pNo~|dH4CSE@{3ZE_6GeKl|o`RS@J~ixcFY7$5aU{cbH{d`*G!@bFOKvQ|-c
zf0#1lx<X<@4mr9OoT+`FyK$`uI*^d?R&|FZh7hVMuvf*n%OT?<<njy-jj_-OS%7Tp
zNh)qtW*&+08z!{+sTf6UMEi7{<Vh*(ryUI@Pp|{oZDey&mBM5D@FeJx1BS;F9$!}y
zdM{kaFv%r&XL+HOj*j|_G-grj1wSeEQ~H(OS15+MI@Ar&jiC)a3^#Ok@h!462ClaC
zvzXUR7z3pQL1%^y`7<N0Q%A|^1Hl=?Rx0uo0r1YpsfgH2fb>@rAiop<NJ51>i^B=n
z;$&@bQqqwWgjF$|?7wU{8LlQyel_M#YK6<A<-=wE41ZUQ^U}%vC!S-;dM;Y(?fUiE
zRD8d7)7u&qKujo|ivLs4a;B>v3s9C-FinABpul@bBGkGHb(P<``A-O>5#LuuwSPIa
z#q5|_-qi^+!;Et%CmkH<%Y;+P<K&bqz?4b4{I;sXvcy`Flq|57398mXK0>w2T!w;f
z23QA{Acwy5<QODk0Y}Wx@>{h&Q+oes^Ch3*G<AVo>!Hiq717!IbHqIsv#EqxluSFa
zoIzxB#u#-?Fq#noYv8wTkyW^7aiOVbI`c#j*sTzt_9a3Xf>&qW{1*LSMy%%;_YNh=
z?FAuT=Vxk&!%u}A_iBp6&%~v%BWG9Z+0_~nMicBtZp*8j47q&+aeS+&c}&I_#jSek
z@!Up<Zk1F^L^MfrtD;(pf0Hy{sysHoPq?ZrmfJTqsa?fm2*2rgG<TjuScymY``O8J
z`66`z=QWlhD9uTg#R;kpFAzcYePj|j=;L#a(<s#ASYvf_S;brXn#Q9+9<bxo&cnZZ
z8Xf{CrJ<v`dfM(s*@fS2Y8H+*5#_~r6H&MFI<)!9=cy-h_Wcya2T}btP_(PNNeU^Q
zlbX;+iai_3jSN2kUD~sw^~v@PW-LXz&GW-)!$e#z*I7Fen>$}1!<js&+JSCbCG&f;
zS}(rtBa?573lq#+7PV0eUW(Z*>8V=S5x-9GEqkR7b!;q?bVy=YRnahfu$dDV`*e)0
z1dW0ZIbXb3--n!~gY7ynRlQ4S?7-d}>Pd|`=7Q`}-P4bam3L1fTVJSq+8m=>4`b84
z6Qnn`oOD7i<$phi%<l^!dmz>h4ag?|f{HuK?lZTU?+aFGUpZoHq;Jn3?!YPc^jrQ%
z@b*S*%Zbiz{^^A*rxK|XV=rlBdbtS6#G7nc;W*R4(reb72hUmcVfypX48M`y%?LhI
jUZe^>lZP;a&zx75d?cyAUxVPxYysuvswi1BYoYu<)>9TL
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-006.js
@@ -0,0 +1,89 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-006
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  A general do...while test.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               26 August 1998
+ */
+var SECTION = "dowhile-006";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( new DoWhileObject( false, false, 10 ) );
+DoWhile( new DoWhileObject( true, false, 2 ) );
+DoWhile( new DoWhileObject( false, true, 3 ) );
+DoWhile( new DoWhileObject( true, true, 4 ) );
+
+test();
+
+function looping( object ) {
+  object.iterations--;
+
+  if ( object.iterations <= 0 ) {
+    return false;
+  } else {
+    return true;
+  }
+}
+function DoWhileObject( breakOut, breakIn, iterations, loops ) {
+  this.iterations = iterations;
+  this.loops = loops;
+  this.breakOut = breakOut;
+  this.breakIn  = breakIn;
+  this.looping  = looping;
+}
+function DoWhile( object ) {
+  var result1 = false;
+  var result2 = false;
+
+outie: {
+  innie: {
+      do {
+	if ( object.breakOut )
+	  break outie;
+
+	if ( object.breakIn )
+	  break innie;
+
+      } while ( looping(object) );
+
+      //  statements should be executed if:
+      //  do...while exits normally
+      //  do...while exits abruptly with no label
+
+      result1 = true;
+
+    }
+
+//  statements should be executed if:
+//  do...while breaks out with label "innie"
+//  do...while exits normally
+//  do...while does not break out with "outie"
+
+    result2 = true;
+  }
+
+  new TestCase(
+    SECTION,
+    "hit code after loop in inner loop",
+    ( object.breakIn || object.breakOut ) ? false : true ,
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "hit code after loop in outer loop",
+    ( object.breakOut ) ? false : true,
+    result2 );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..6e4eae5cd16fa481ce41886a094ae1193b2930f3
GIT binary patch
literal 21270
zc%1EAPmkj?6!*;T3@oq+ZXD;f2gJ;>i-fc)Bkgnw6qOdyYB(adaa-@Cc5xiah!qF;
z1c)2ofg2xy8#iuT&`Mmn@Bz4CyPY;ooWD)lBuy_-o%q>)@ArOw_H$C>_S8h@wK0Om
z`Dcud7@UAZ06?D_H{hb#{-pb)JD^hpYG>-1nu#rb{$Cq_H^oymXZ0({FzlP?5)Dkq
zAjgy_QO4@O1+FnM)@A)I9yth;MVS(X4S)&eO99R*O#=~*hZr#>j=;&P(-vo#jLu&Y
z<=sZT*X*=wXN$7h*+Pg@R#)9?VU8FymAJ2=X?x_oDo00WV{D>#9zJ~ED|2~OBfYJ5
zN6BNsT}Y_SzqYH*tH$Tuw6u9FZZztjKK=4h9u)avdx|^~<-KOF)ksB+uP9KSo}MaP
zrmD)uH&cczOK7aiAx9H2GSv^XEZ3@_4o!1aRn-`XB7~AE?4BsMIApwsEFLhz%!Y8d
z8Ukb^TS~E#4(1I}K4ZeFAB$4NdbCAH-Z3d-{d}Oo<OL>>-8ecYO(__A4o?#eIbe7+
z=I(Z-ptn~IWh`<B>@07b_@g5|Cv|yLvEV1Qeo4R3bA=kvP=~rUnq}0X`>PIh`p?in
z<KU`WzlrDWdYpk$6G3u|4f(qjuQSKaA9q8hoCuoa6G6X6K#+%B4k{q+4oEzoK>8yy
zAngo(`+=u#^NFWFbB3q%P`Dqk`aYkqdQl2k1=QLPbQL(7%2hnR_dqIeG_^BiRCp?7
zG_`AhRIsY%yDgzGPht7ysQ_sK9y<&0p-l!d@#D-1NlDlMQ}KUd`R6|~Leql-4Vog3
zpW6K0;2rbmf;73eWP%=VEJ!9DFwu-`0naszn{;r!LSlFZ`^RIAz7vA_skk*F^66wL
zlMnPMlS|576h{?;z?4bB{6^cE-WXesYGITT!45LZ-De11cWmAv0U5>Apql~l?2(On
zGn%%If->@zjbcm%OB;<DO5Kw*lv`OTNj$2o)Fi3d$A2bsUo|tEV+PZPZn}ssL7nY|
zMBx#C2WTSx2$GMNsL3X1_~`)v_wpSyMAW}%&^E)O#wZJi!thHh#e_t``>U9csD6JH
z^IoQkX~8}+k+IHIrYxK@RzfB|n#T=T!^7)Svm$E^Q_7XMw(;21`qAqE9C;{zxGq99
zH=x8qU)i!u*K)ErV#CR08!M{VD*Zt>i(bfP*S%|wqx2z^LQqpOl886o25tQAhAS{3
zdEkm?y1koy;EKpA`-&?H&lT}P(1cu3R;P)*h|jOX_;7CJFq<t+VmM4%n=+d%0m|yC
z33o;F>#)@fm&ua3a1NW$GT9w$cv+Oo7v}2F^4oa*?l4&vI*S);6)Buhf}WfN%dAsk
zV7XrnO&6FIM?zCHMuY{*z?R8&4l+A7k~})|T@Yt?_GG7?_3NFyc^041ZFyFUj_|-E
zBf?Z8jr9C^nhC=KxNFe{7Pu=>EI!hmb0{Yt{c|@Td~|=sM>6;?G$U0sSJ7O-1{i6h
ztXLebI|Wrv4*xeN9RAvp!-v#n6@^z6p3{MqlEPzbpcaeBHT#1;M84%?lOfGXn9ToQ
zK{h{5iHx=ws<kMt!zs6yWox_Czlh3j$)+9J@SK%&7~bdAk|3gYY*o9yXB0T|I7E6r
z`W6&Sgz-x_io+avarGRs^-rP&IN{>zeK%qK#v{KQkG1W)asom7U_oorpjao!eHK@r
j&!#yBz;!o5K2SDyhB<o0lgBRf`r$7WWn0mVo>2Y=TALMt
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/dowhile-007.js
@@ -0,0 +1,97 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          dowhile-007
+ *  ECMA Section:
+ *  Description:        do...while statements
+ *
+ *  A general do...while test.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               26 August 1998
+ */
+var SECTION = "dowhile-007";
+var VERSION = "ECMA_2";
+var TITLE   = "do...while";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( new DoWhileObject( false, false, false, false ));
+DoWhile( new DoWhileObject( true, false, false, false ));
+DoWhile( new DoWhileObject( true, true, false, false ));
+DoWhile( new DoWhileObject( true, true, true, false ));
+DoWhile( new DoWhileObject( true, true, true, true ));
+DoWhile( new DoWhileObject( false, false, false, true ));
+DoWhile( new DoWhileObject( false, false, true, true ));
+DoWhile( new DoWhileObject( false, true, true, true ));
+DoWhile( new DoWhileObject( false, false, true, false ));
+
+test();
+
+function DoWhileObject( out1, out2, out3, in1 ) {
+  this.breakOutOne = out1;
+  this.breakOutTwo = out2;
+  this.breakOutThree = out3;
+  this.breakIn = in1;
+}
+function DoWhile( object ) {
+  result1 = false;
+  result2 = false;
+  result3 = false;
+  result4 = false;
+
+outie:
+  do {
+    if ( object.breakOutOne ) {
+      break outie;
+    }
+    result1 = true;
+
+  innie:
+    do {
+      if ( object.breakOutTwo ) {
+	break outie;
+      }
+      result2 = true;
+
+      if ( object.breakIn ) {
+	break innie;
+      }
+      result3 = true;
+
+    } while ( false );
+    if ( object.breakOutThree ) {
+      break outie;
+    }
+    result4 = true;
+  } while ( false );
+
+  new TestCase(
+    SECTION,
+    "break one: ",
+    (object.breakOutOne) ? false : true,
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "break two: ",
+    (object.breakOutOne||object.breakOutTwo) ? false : true,
+    result2 );
+
+  new TestCase(
+    SECTION,
+    "break three: ",
+    (object.breakOutOne||object.breakOutTwo||object.breakIn) ? false : true,
+    result3 );
+
+  new TestCase(
+    SECTION,
+    "break four: ",
+    (object.breakOutOne||object.breakOutTwo||object.breakOutThree) ? false: true,
+    result4 );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..8ab757348fe2a72cf382c4fdf4aaffb7d1fbe7af
GIT binary patch
literal 6518
zc%0o>%We}f6rH9mv{I2+RR}h-1R>N`>Z%HnXc|PS5D*hZLI_pPjFY%^$Aj%@8a{yy
zdp?1WU;#_MfF*x|?MX6|>BLE<P9J2^G=AL2x%VDlyU4=;!&0#efmeD<Nr!?{t6*7H
zi+Fu&zgj<Z_8gZ4&?;`JHARdVFa6%MtTnN!nB3k36oD3o2hhcU0*;8UM0xRVW}P74
z8<+K0ELoZ+i%=yBc^2{!9|=fqsd~`osEr_1;(Tx#8_hUHey4O-j60Qbqxz;^+!~A(
zw+2FzvK%#6LmX0omAEs2!wd56i3xb_!a(}=Y<qj>qSVp1@^!dzSxKaNBXZ*T=W6k6
zR^B<L@LUxW$86_l_a@+YXX(mtlzum=jatPBin~%8WSrS;LhVCv1{{~7fZGlSz6Yph
zSB5#u_H4ThFs@KaGElq(=#}$;LdJv+p_Ri^fq}9Zj>a>=QpUtf<PKL1L6{fXburF3
zpj;xN@o-@-6k-<u?SxVa%j?X2G2Wvh{;$L+qzzIdor^xHV13KV-hJc)+D{lKLn+8T
zN@NV%+@h${<!QZA(9>Aaf<;~fk;@5ta(0+2=Tt>4KK(9VL3hNs6ndmP-EOe`D`K3_
zUHmUY-<1rRJT#Ugrk~gv83cB$#4vGBVhpEuXFoP9WvhvBybx0zU#`wq<Ii)~xP(V2
z3~@%}a+LTZG0_GHLvPRai9KrDY~H1$=U+)~Umuw3$xc;|XFbGth^G7uCC!3MgZ5)U
zq+>0ayH;299avb`7Ka5!pT&P!=**qxKeIaBn?yUW0q;&vtif3@21UYUT@1!O;BL2!
zLCBzjJ^=DAXNs&8gob&lxoj?e4*V2C--W3d#=F?K?q9;ZLR$BKLv{~T{27yECkYPr
zY)$oNDY_L@HDA#l5T5GGN$VK8+zP04iuV^-8#73e?<t%_0iJ<0^o^t;PD$>Oc1OQ!
zkVkD1^y<QqRAoIJvhoCUrgy$`6Ui5YL{f*n1>N4(2KVwZU>Vt>9QiKvt)v|>c^|qR
zH^3QLZgX(NK7L|<NHlbaWnAUVlF%inS!R^|(WuDz*xumDWS)E$$X{BudUb^n^)&$<
zr@m;o3<4fz)8Tso>_&nPvu=G8TSi@ZPkwCB@{R84R-gQugwQ{>O}vO}PrljSyrRIV
VzhA}5)dbSH;M9UPKQP%9@(&WULYx2q
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-001.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-001
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  Call error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-001";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions:  CallError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+Call_1();
+
+test();
+
+function Call_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    Math();
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "Math() [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..2a03114aa34971b4bab34be4985c222a69e171fa
GIT binary patch
literal 6710
zc%0Q(&2AGh5Z)#&wERfiKycY32%)x!1FDutGz}tE2#AexK~OonPU6<xU2JdD@Bkd)
z&O`7LJOxMIgt60PH`|SqY&QMrAx*~ijOUw~&tqF63@9#HU5wn)2j+JeIyMT1VYGa=
zZ|qj<`}U6Q_yIPoO*O}&gp1Pm`-ZU&v#j{?CSnA&DBi;kMGOhzdrFlX{pQ9I@!WA;
z|6t0>G+jPZs)%b4kBE_i_>!uNJwe(8Go{W$$I+&_V8rW`Zi3vdlpEFeb!+oXW^JA+
ziR-e}Sd9qG5LN0<5Dm}iy9)#O)WL!D?b+7W^YdCq|CO)9g+-;2={J!P&%YOoXS4Fr
z&I`{q7&zqH2QRJyj<;4W3`gmAquQudazXK>)P}j>X4_}xJ~~0R!$=@ZTOiLx%rz^+
zoaH-a89oII9Z_M-PeF14;47yA!<>U1uq^N~;GlMmNAgs_%81fvsaoNH2;;2qZh)K%
z#Dqje<Kfa=C`2wG)(NE+p4FLqAn!5Afwv&Vtl`)E&Uv3yuzsaw@GkKX>&G@HLkR>w
zNM?%L!eFG+6-m2N(bLG#l2u*;nacrla(3ib(us;%e)=t5LAOCZB8r3U%c!Bnomd6A
zn41CKgq|a*GJbj#2b4dtN6H)Bv0|gXa})tNy;nPeE~S`cfs8SE4MQDI&dyftuQFHr
z4UmJukfww$L$N=Cfi@x(yE~@mo1-Sq6kX=`ybDS2%L8*G-nZ)UtcR2i(UgBfO|#(A
zVEqUX=~zqVuF-`qgu?FHaBNWW4ZfwJGk>0^op#qQG_&S;9rto4$9G6{r)PfR_!^5@
zEH=7i8K-&SbjuWl94mwaB(I=(QLBn|&V<@5=9g$T{u*M>!HHN#tN6I>Kd`+*()QKQ
z))`s(fr>xpl9eSB<DRLZsWd~^f>Y<~Z1#MSxJvk~L+l76VA3hkUt(>{phZ3d34aja
zxyfTmoDyFn_dWPs!(!0HVYd#BBr5CS@Y!SnI@6o=xryXQjzltk9^`r9Tt9nGC?lSd
zEy|JKU~e_)NS;@?>v3tFk>zBjc|dLQxPAP@{1odx2~W9!=1W8i(6h`c^K-5$=VSaF
zPpA9|Xo(!AHLEvQ7|~x7v2pqvh|4GtVLBy#0buXMC~@LFbz%>xtMkbZC0gRqJw59y
nK$8{vhr)^P2ihZWw)eV0^wj51n7I~%I}@B*(B=mwy-fZCEF^>+
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-002.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-002
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  Construct error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-002";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: ConstructError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+Construct_1();
+
+test();
+
+function Construct_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = new Math();
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "new Math() [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..f7fe5ad49b047e9d21df6a68485602b5fa80e5fc
GIT binary patch
literal 8413
zc%0o?$!-%d7@lslJs^;{pdzH9Tv`EL1YAm5iKaoMidw`(y&zP%Gfv{x9S^prZFmSC
zfD_NaD{$czIPw_WusvBOiQ`O?nQlEai9P<8&;Rn-ljC84;a08&fw%R6k}3tK)}&=w
zN5rdJ+r_<IXTxzx0Il4rdM1Yv<6A!-Th^R-Di>dV04M@S816t90}41Iz7plNe>3X@
z`Cg~2zv7XJL9z%{qL61HAMuue_>!UreU2&!QYFp@r){Gdr^v5v&5CiSkS`ba_j0R^
zvD|7yNL-eq=1Pb|3a}D)25{IT@2;4D7cLB>Z!gx?UiM0DeJWp@3#XJsYBpj-JpWuS
zo(F}GPFi@*h>2sie)#G-;5a*RX*f#1%f)i3kP3>gr8LMmvnzz!yWk8sE=2*i9S(dC
zP|q$jW0q~$Wk9Qt7bqnf7{@@pa1l_*m{20ra(F60P$t9HxE8HEz_`6st#HK<grj0R
zFUA=MluJkq9%kmkWZMM+btt8<QJuLj#?Pq;fcIh)(lRNLYOhafv%c%XcN_VD)?>!W
ztrXQgiewBc+@h#j<K23tpl5AG8H>DvN-iht{?U<MK6hnQ_Te{v2FXSrRf)s(t4N^n
zJ(w2beCYIl7y7O&lJUMV6&3rw>?l=eJJJjj_oR*DV2bwbfu*cXV?*AGsj4rZ9xcx|
zN6zy*Vq7Q;v1ac^Nb^Txq5=?x-iGZHyT#pXUZdpPzm({{Ixy$sbk&UKUWjoMP5IZ9
zlmwSDt+xS@jvdL^wQ7QVU}0TFGz^Tsif=k}hK}=pGq)wqqpt(@1)gU_Eu;lb9}5)F
z`?_;Q!n~7)){rK>^j+}!XWI_pUHd?ej-kt~fJ(u<KF&5I350~rg_C}JsuMbzSD9fU
zN!~Ug7=i)SDq-yt_He@M0ZfhPC4>0NDbnqU);=`4ql3gcg{gIQ!pYrQ9)plURU85!
z@4?byd1^mXrgsNZnrb{^Fgfr`2z?iJ1yp+#>(u>Am^az2`_^#8hid;BlN?d<LU?W)
zNRv*{jbM1!q=F>KjjW4DMl~hAM%o?yE<qlhC!x0|9O=reg(k=9gU;YfgP{w_)0y-N
zNp|dXu5qWC2TT(!%8|S{<xh7zlIB&?&A2?f86p$b;)NE!us3aARN`pe(qauQF26~o
z+&^!rSZP)ep{qeVS6Y;DWjH3CQ2CQy<x9)<r`W{=V(DE=4(JYJ_#so>{+z1F;o5MD
zlp+1DkYQsnsx_;dZ1toAKs$R<G@J(k5A}WOrvUa|tWRlAYNq;XxOC`$hi<$yH8zTv
zDLwBi&B<XtJ{rO)wovo>$#8yZeD>a18@W#7bHEFtC?eGV-{Q&HY`4(37iPQ-h-%NA
H+MN9l<rBGO
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-003.js
@@ -0,0 +1,49 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-003
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  Target error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-003";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: TargetError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+Target_1();
+
+test();
+
+function Target_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    string = new String("hi");
+    string.toString = Boolean.prototype.toString;
+    string.toString();
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "string = new String(\"hi\");"+
+      "string.toString = Boolean.prototype.toString" +
+      "string.toString() [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..c8b2db4aad276c6a2ce96e58306b214ca8c2a35a
GIT binary patch
literal 6792
zc%0Q(-EP`26i%Vt+G&$^x2d~{dOJ;RrAd=2hO|<qQ6V}lh?}meOk%*Ti8I?NWe>3j
z*hB0k_7u~u_9n9(AR!GQ1k)dG0RNoh^PO|PbL<lLJq*jG9t2MLGbLRL`bNPpj5cwG
z#$l~-Y#mrO@t{%KRclHZF<$=r!Z0?)s#0`&3s3~w7#=|z0}41It`g;h|Cw=#TxVL=
zKe1$Oo-9I@DC8K(MSLP4x~1kom!l4XREcvzKRh(!6uI5<V=-=3E6v(TqqI93EA5Vi
zL}giOu8ugQ04s4<0Q)!OJrfh~+J>IA?akia+nZ7+-^$kU#-fr)(+`mo&p)?|XRG?f
z(uL=Sn7Cm3=l24~t+iXjQQF<CHS1L^D87@@AmhyJ5NaNSD`43adEB%(a2-G$vpSAh
zc3?KiN&5oYyh<ra0CEZ3tJfZdj0rVDF^7EtgE};vj3?q%0T_o{)ec(>L6{faEiukG
zpj?8IV&Te6D1;^e+V!Orme-i)VthbF2z(NwkTyx3bZ^?Eob@v)fDe%i=rD3P=}N)x
zK`dj~;RZ$B9*^slf?kJ;RxI)kxLi({v!g>_M#nO0_2IXC20fA1jCkUF|1MH!c^lTn
zIA53mKKiaLi85L{iUHxz?2t5rJC$mf*q0%W^Bc9_qD3jjIUuJ?K8UHVD_7^s_4m1R
z{gD_K3Vod5y&S3jN=$SB!q7P|U1Cl;IFt7%8MwC+-**S*R<vnN$Ft#MJVsM~#*(t&
z(xk%>5NTLj#;(y5EeIB;>xiO((RcAH37y5`JgL?_IM-y2^Fs>kOUPp_22m7ZcvPN~
z5A*Vow6sHrmP}KAPwEqAeg{Qy%Gij{(}HlidT_f}!N6xwdCmj!UaO0-RSan+>Q+%-
z09){z4_zC^>Swr%#ga!HuMpRL|Fa-t48BzUXH2raWOz6*Q|K>A(SzXX#Tup~vLg1#
zkQ*7K$hRd<0tYWl9xLLM=pK3Q;C~(Rpf`k0Ll_dvtnKkz%nWqqUjY^-k{=q0qyYyj
zy2fsf-Y6=7B}9ud<d@L59ydhi#qeQVg)_3;c2KoXcSO0}IWtcqT`gh>_gcL~v;;lN
zs4~yAid>BGHC8A61hhg9OI4e$t}vm$7NFDg7YtW`$NgkV{3?Kb8ll9*be;W*lFA=*
uZq#Y7*6DFRt2IuEiS)<EnU4~w1u)wiVBou;7>Jb{8Np74R39$MIr1OA9G{#3
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-004.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-004
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  ToObject error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-004";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: ToObjectError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+ToObject_1();
+
+test();
+
+function ToObject_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = foo["bar"];
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "foo[\"bar\"] [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..7bb22fc467a9c75fc8dcdcef3e7ce6f17305f212
GIT binary patch
literal 6792
zc%0Q(-EPw`6wcZWHUtuPpm7uJ7NKnt2x%&nwyuayRfkB`n=wsp;<nzrIM~j*@(?@#
z55Y_D6o@O{1lwtwG)vPob@$Vow*EQC=R4<o=h!9gdl;5WJqVogXG*#hTp9(#Fxtc!
z7zee+k+o;p#Dhj@TdgT!#CZAd3&U6!t4h)BEkF@yV|WN{3@G4;xJr~0{%6Joa-B(8
z|HP7&S+WRKqL5=C7xA%x=$4uTU5+{kQYFp>m*Jrqr^xM=AB%CTT4~mf8>Q{xSZRAG
zBr3~Nb9KZa1z3r@0@%MH@0pl@*EaN|ZEtpV-rbZs{#Le*HWrmcntq6!c>cLvJX_T-
zmM%Qk#Kbw<J$ri}aNJnAH5{eg&04cw)q>)CDGf5t%nqUE5x4@DO_9e<iv!mI)G@20
zm}PrrlN`6tq0Ot5k^~?Zz`c6yQOKB3BNTIZDPT~ChU4)>yea_WaI4y3iy;W}qPro+
z83&Y0P*N;hnhAx_1VFpKl)~~F^IVMgsR)5jVieLQsgv$ao0PMDCI#>TaseGg4kukH
z_&tba3_IMQsN3Uly;9KYP|=b_-T{}(33GaM=*#F>MlC=57SEt3(wZSpobBF43N3EK
zsu<^U6TnB`wIxwTYez94{HYz1W^gA`4HNq!#Bp|`_FJ?l#W)A#bjiM$>bi1uzFhy1
zJJ%nHaiP%13Es<*>aWB^2OtccJ<}!TxPvo!kCMK7EAf4IU~WX4)^t1@KE@+7<!2-*
z3ocDM2mz6XwPoxYJ<)<-ak`Eu8W?>Szmm|IKhBeC-Gg&Y);K?)z`lSy)?yGvA%;ig
zIr$(jA4y9)glNe$<@cmMaq4$a6eo<0_&hBLC#wgydld|P29@VLAn&!h7+b}VW}<Et
z^#!m6zxmL$VXS_JyI3rF#PJGo-S<BWGRELb<$uN`+e?OreKUprk`z4%uAZ-9IwVVC
zj|{nyL5h4^;v{hJ+~lz&PKoZ3=MMhYArE>(=rn{OvCP^Wy~RvHXZ96fZX)@ikw_Y_
zzocvI`tXgS0$4({C_{b;eXDUpbY2V}##J~Y%WVc#`(#U$+pSacB+}I)mT<4tOGFFM
zvy3Y9RIAAO7++&`(oaB3<giq=>FNq&`fC9?Nq@m`1$f*~ro^uT*ryRnOib75uPCYf
wG2=#^_G+CT=hIr_l$c0=e4P3yky-$=y#WTk3yOhQxt0;^R7myVlAI&|0oPWaod5s;
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-005.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-005
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  ToObject error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-005";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: ToObjectError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+ToObject_1();
+
+test();
+
+function ToObject_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = foo["bar"];
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "foo[\"bar\"] [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..6413d212c5b6e39c3a490590cb5c06cfdad69b46
GIT binary patch
literal 8294
zc%0o?Pj3=I6yMU;+Cz;;qcPc|rZKe9cxaHsQj9c68$m9{G{f!y(+)f9%q$d7egqS5
zUi~P32;<Rj;>_@Gp~JGk0L32K@@D4E`}=!u9w{F97^YKo2;B5JB{d2fR>HEZ3US-k
zajtM$JSsZGhgK@7_M|XkJpJvlW$lVxsqpbKpa@hjJb?}d6mUd5#mXIgX4Vz*++kjS
z#g>gpya-jSkZU0i@jip_k(>)Xj;aV!#m)nbfzXUo<kiwUf?mvKO1ZN_D%qu_l3gZY
zUPZN*M;uas6}u+D!3}<UVgX(|(3iSBJ2-fGlWYI4(zSPRQ*orxLd<B-Kg+deIs3k7
z%AVU|;gTI*ytoZ^+}>E49i`r-Tq&P5V#Vi@8)Tf>RYL7k&;&(?BA?qu4m=l7*Ut80
zmL1upwhyzE5{(h(uzB{{r;ssmg}9W%hA@E=820H}TV(*ogQMz%BS;X=YFP<Vj04K0
zK_WC<m<ox33V_xE$%W0T%zZ&`QQ`i#f(mJg<Vo$OPRdz7bisR!JV4ta;iM}Cws+zf
z!z#BZs@3`Ey^_)X;GzYyTmg>D1$%sSn9Jsoj9Ps7&7VQC#+Ar9MGeGJ6J8vyB8%o%
zV@uHa)EMw4@EnPg;nK0$!TYfd(v*VT74&!Qv&toOG{Oz#8Ya%wz>1T*wBJJ1#3%^N
z=#bZ9spiSuvnBg0eX^erJ_43RS;F$EWX#)IVM=wxLdWD!Z`+JHE4{!;2QK0P!G|c|
z6VxiY?jyb~7@GvS{hKz1SQo@0iku#7>C{_b>iy@Q-su&Av+6oKx?4ep@F9c)QLN@Y
zvjk9#QFP`)MsUwkBH!YCiD9KXf-Wu$@Pxt<vkQ787ODVY=pNY~vHK5Oo7X96c}uDL
zt25?q_$?o8&q9FlG&ws2XtX^rh*Yd1W7n#Sml+n)RYgCI(HHTb&N@@ac|M_e2CSWH
z;>P&`9wP<VGTMelcYE4kTZse<E;|{(oq7g?fI;OXAIQ0*sp_GE*>J@uZ<@=bBK#ac
z&w(R;9h_prcmGOg`uN+Qjxo#51Lc3lWZ99W2Da=79M)a57DZ#a7wv4_vYFg4_FRfN
z^;keFE9LHd&O_emQ=wZBii~8|L#vzBW2`fIOfxl*{4@w8!?nTWs8Kptj!ZLvX`-c%
zN?W6fm>k}%$G9>k$|a>W1hn-^?~|wYzCA+t80xtZ(+nidqSG9hEkn)zWR&G}Wx!y`
zGLK3tdZSOcF44!tGN8kl*db?t&jUS9eieq@3*n@`iHu6{@w4$r#F;z~i25orIu9aZ
mBl_E;u_NWk>KHYDiuVOi$G__Lcd>KZghL|DKE2`e$@CA}*pB)D
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-006.js
@@ -0,0 +1,56 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-006
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  ToPrimitive error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-006";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: TypeError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+ToPrimitive_1();
+
+test();
+
+
+/**
+ * Getting the [[DefaultValue]] of any instances of MyObject
+ * should result in a runtime error in ToPrimitive.
+ */
+
+function MyObject() {
+  this.toString = void 0;
+  this.valueOf = void 0;
+}
+
+function ToPrimitive_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = new MyObject() + new MyObject();
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "new MyObject() + new MyObject() [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..163354107106e1edded8bcad68be50472d9f090d
GIT binary patch
literal 8695
zc%0o?-EI;=6y8E@t%*OEMiaA_n#R!j6HS98LQ!cbHHC6xOf%gbVA|>KIx|~}kK(QO
zK7hBzJ72)W8{fn;OM!(h!vX_s?L~q4IWy-w=X~ev*|hLIiZkg3Mt0^sbL$Kp8wtZO
z4qUrsWDBLO@<!QmJ#3^?!J0HBTx5PdFpL|pDjnWlMU0>WiZ`)E5krEwP9Vze{pQ9I
zaqNCse__eOC|NEGL=oE{4iQ}e;VlIlJA%{*W`Q^d9rrHH1tU&9vkc?qe6CX1DWy|q
zW9ihHkg%+BFjpi3GeiS%Cy4sz<lTe`d}?7&>h^eT?ZtVi-OoVR&c<XQk*O~+A)deI
zi)S^zTh@i=HJCW$>-*0x1CC1zbHh>UT`5$Gc`YbDlhQC3+^o6G+(IX)Y%$^qvn-Hf
zBW9cVj?eN9)2y^SoM+69Kym({|CyijuE2P9?`>&sJDcCt0{jw8JY9eJ<oTLbDD$Tt
z!<++RU_gP7L9^fvxH}#RK@L&c+Zyb!U<l)B0OJBNA)QO1;mlM>^i)8s?n^0rQf2PI
zc$0xe-@zzm6}RZt&+8Nz>q`_7WQl`VD|9(&O30IK_oTQc3`Xh=F?g;NwAwpp#v(5u
zC&~$PxOeDd#({{Mz57icLAPLh6W5SWMO9+AzkU&6G`${+FfPU>fj7QmN!|~qgk+n?
zhgO?oUhF!IZ?|?14zU$+xxQedu65KyadgT16Rw&VWPu3{@*1Y<j$A!iw7-gu_Dxp|
zu%#OyVR%dm7Olw3R2qbbw#mQFvI&D$T0yvNzKF*Jdn)FG(Hc4JQht;(p18#Bp0v;>
zx&)gTu{yjJrQQrf??1QnawiMy)Z!VsgqvEKNS0i~!hPsxJ7M&(K`81~9y0BoIZ$An
z95WRWA~+#=xrs2Q<G_J{l9sCHK1|dQq1fIq9oOtO1x(RkZqu1dn!h+OSHgV|HJ&A(
z(s8)BkH1)}2Z&VcK>DuHfTvmtx2r+@Ovz{X7KP5(eqKyOl>JxEG;#fW1`i*)xn5n|
z%_G~yyTOd}P7VpHk)z1xI53ijWY1Pt`Usp^bH=D9^+i${fAX<o;Q_n$cJcnRe<UKx
z_RAlRG1Jc7!2X=ev?EguZkh@njymW{B#rSNU?(e%^~8p@r=yr%jv3Ul^4{&=MJ(Ed
zDz;0Y$UtP>GtQ!V2s)$NGGi0TSB*r{pBr?x7Nvn@i!_ILgtv5AX>m{yoz1$d(VmRS
zaw&-hP+KSUK73@ZngatLLNzzx5e-Pa>@)>uOII^LY85$N8qk=s^s~|hJ*1B~F45)0
zDq{Vd*dERyPx#S1`5l109pcF$@10^izALLxMMFeI9>e?WN;V6LJof@v9YG4OQom;!
k+Iv>!RaK)Z-m9RtX9WMh!OEqODQ95`CEnv>8Xckk0I_%tB>(^b
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-007.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-007
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  DefaultValue error.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-007";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions:  TypeError";
+var BUGNUMBER="318250";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DefaultValue_1();
+
+test();
+
+
+/**
+ * Getting the [[DefaultValue]] of any instances of MyObject
+ * should result in a runtime error in ToPrimitive.
+ */
+
+function MyObject() {
+  this.toString = void 0;
+  this.valueOf = new Object();
+}
+
+function DefaultValue_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = new MyObject() + new MyObject();
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "new MyObject() + new MyObject() [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..9e6209ca559176801ced6461aa9b9f0e425e4bce
GIT binary patch
literal 6852
zc%0Q(&2G~`5O$kFTOlNl6<n;IKnS&!iiAptMAM+AiUPt>E(lc{dy_2Pdd=>-X?PA!
zJO^*UQ*hwGTX1A{oy3mgIDbys=Fl{=-ud}<=9^jPrSDN($hR?a3LiLYadc^{8-~$f
zPS-dtSI?{?%Vr)n@_YK3JS9RF4tES=3!chHx7QITs6p`wwkhIB66R`EPWW3G7sPdj
zb^V1$)+Xs<T&p6EL0lpS3Zh%e4t6DJ63n$a7hQ%<3(1MwDr|z>Div$x_tpGfPnO^7
zDT(T`^jd{T%n{Y<t`PM{^gV<Hd~IV-#r9%<|JA70!MBdJzcHsZ@^mNW#Pj!R@vN6V
zT3O+F4;H?NgY(1NfaB)c%5YS1*UGg@DH9Z5Ds5OuVKx~z&(IaJY)(9BS`xVq;*MGB
z=d3s~t*$H4b%}G90OJCvm##gIg#aU9R^m$lLA#6x@<g<Xh|+MY-eH3X<9V^&2Dy-k
zO9e?vgi8xyJq!Wymanvkd4qWb@(zatI0Y%@HCAD*(U|mM{YXmRW8xy-jX0-{64*V+
zWQv>8;H1@-al1;<^U%<eRo(!Ts|9m>c4Sx2v5H!L`Ym2Ts?i55aei<U1+;hs8z7f6
zm;XE8wG~N5`$jGx`?1qerqB+R8D;iGh~nfC?H>#$xp@80c_43LspYDt=d1HKbJzKO
zkb^;=CY;?IW&Q*fnut*B9GNaN2eX?g+njaWm1OtLfw>(WSJUyV`jqz3RG+@4X>h6W
zZU~49tf6w(Xv6S9!Mi3j3`)Mie@W=foacX%`rMs6nrZWViL-?wNeoppW}c`gT`Q(6
zJC%4g0|#6mzfLH!<X#wC9?FtPHYlsX?^7gB2*<W8ffs!r)>3n|h@{;vQsfJ)586ZO
z0-P1S>y*ow*Xz0L^4-E;eeBve)@;LFV%YXCaBn?s`}P;jlv%o?&tC}D98^QV9W#Y3
zlMLMnYM*VoI$<)#H>~jmO3d)M3QBgDSQ}FgP?7})Jh^*MBAj%hN$Z1?$*F>6Fi2vj
z3W3Bb>v5l5$DlL$wlFi1e9w?bs<^YHuC&#AnNdU{AzO4HKf&HcJdiB!kay$OJSEGS
zy*B@Jx8IR>pP8Q`qc9N(7vXH_XaSN|xn+LNROM{EpJ9*6o`zO2GA*QNf@8UXzB=N=
zbQy??$di6dmS{SlhGTH>L4;NlOFs23KK_kPDnX^aAWyH6l)OoQqdE3nM{28_?!{to
XYWnY$(PP^wAsvg&?C}R~j3m{6DeAFW
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-008.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-008
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  SyntaxError.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-008";
+var VERSION = "js1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: SyntaxError";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+Syntax_1();
+
+test();
+
+function Syntax_1() {
+  result = "failed: no exception thrown";
+  exception = null;
+
+  try {
+    result = eval("continue;");
+  } catch ( e ) {
+    result = "passed:  threw exception",
+      exception = e.toString();
+  } finally {
+    new TestCase(
+      SECTION,
+      "eval(\"continue\") [ exception is " + exception +" ]",
+      "passed:  threw exception",
+      result );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..d53a931f8fb59f88eca6725b946088ccb6b25fbd
GIT binary patch
literal 7026
zc%0o?OK;Oa5O!Po00iP%#KCuj+VYZGnFtaLO%(#F(_X8My-8Nx+Scy6Y4{zS_-9C5
zIPgE1-8}53_NGbfv^1B*`<U7J=9|YlmWV=%OI8OXuk?)tZHCT_Wy3I<f!8z2)%t<6
z=eR+L4QorSu_)o9^kdU7?!zi8x&0V1f|?Y6#4be)2@?29lovm9<COT`Wm$h<$<icQ
z0aK!gXAqx=k$~ius)v0+S_CsC&PQkQp}AnhZ<p3#+_5W->esrpH5jwD211gu95q)X
z0y9LFxN}6KEAk$}1io-_C~bSOy}f%?>gZe9I^4LTBr^RWX2kQ?V(~n-51qX5T!o1P
zXXoVgZNPDTX<;}@yBpO;&CUhIH&Pnrf}5>?nFr_`IW8liFdcz>4>8ZQhn(emrqlBU
zy094wQea#>>c1DqUYWqkN1y9QU&{7jF37LJ#H*c`yKnO)uze9S%sC(i9u)WtEK_H|
zqw!P-Du~i}tJ>kh5XSQW#sy+RvP)xOVJ0lcCLq?1q!d1@F;8H;%fO@iFp60ts0Hn-
zHYsQQOv?mi;v?2e98S6t3T2<36t{%INV_A(^-4j{V?_mvyn&)9C(LYi<d+)9B1)&I
z!Fn<8B&tmsxTi)3@*xG~EdZX9@9-;)Ol7$?-affI+6N6Q<9wMh0zSZ0+n1|n<Hfs~
zd9l_%9ClMeeFj=QgNYDvj=eq8^aFF$H<_Ztg08=id~&mBg2ISSKyyyV6rY3VFC!Z;
zUWW>Ty_22E77U{MQa~mGPkx5-b;ehaa61)>B94{ALnLoHnQ=U&NeV{2W2ep{f77bY
zo#lN2weOmV=`l>S5TP<LK`O%Cl;V{S9SWv+a*sSg|G9=mziq}|9gfN`lkDlR-Of1q
z<kC7duQ!+T<8>W(3u+HH2A8M`;whd~hU~)Ld*g=OK*RMw>QVXB6s%WhdC4*OGpIF3
zEZpXrCwU^KzBPS{d{?$e$vgB)|Kgih<<b}9xdPo-O$qeHcH&W5uF3NVah}cg!tHEV
z&{W<o%FeuM7MiDK<!Ri1*S0qA6c3trln2*Vt5+9Wc#N0^+V`;VVFKEWSEbq-qU(0D
dU+!qzFWuh`n(jr@jp*NOW)|=3y+ceT;6Di7(Ru&?
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-009.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          exception-009
+ *  ECMA Section:
+ *  Description:        Tests for JavaScript Standard Exceptions
+ *
+ *  Regression test for nested try blocks.
+ *
+ *  http://scopus.mcom.com/bugsplat/show_bug.cgi?id=312964
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               31 August 1998
+ */
+var SECTION = "exception-009";
+var VERSION = "JS1_4";
+var TITLE   = "Tests for JavaScript Standard Exceptions: SyntaxError";
+var BUGNUMBER= "312964";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+try {
+  expect = "passed:  no exception thrown";
+  result = expect;
+  Nested_1();
+} catch ( e ) {
+  result = "failed: threw " + e;
+} finally {
+  new TestCase(
+    SECTION,
+    "nested try",
+    expect,
+    result );
+}
+
+
+test();
+
+function Nested_1() {
+  try {
+    try {
+    } catch (a) {
+    } finally {
+    }
+  } catch (b) {
+  } finally {
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..d6bb139bdc18614dd026a7afe89baec814b4d603
GIT binary patch
literal 4817
zc%1E6%Wl&^6m`n`C9!2^Hn2dDwn9R!Or*py)F?GkoEA0+P2*d8gkwkJag#3j4L*$>
zZ219}+?j+tZ6_p7S`e!w_j-=!o;h=7ZZsZud?;xi5T{gUq02~H*-{kcBy`S|ifO&E
z_w82L0YxjyXEdKiy!7+FqTI!&wDIA`gi&(hLls&+VT98#kWkL(ccgrxfisEq4Ie4Y
z!wQ*%qK-lX%7*~sLrez(PERQ?2^Wy|Xwng9G;m8dFm4-q(|l`b#X(Ff4nW4SY?-T3
z4vhE`?u_{H4BkCVK(7TIQQOn)o$XoF;is(i_rNO>k!4R}Nj|@Bmd|6OVdur?bxaug
zVfo{3u0$HW4udE{zHCl7w6QKZ2N=c^3DAk}kA}(-EeruHOV=%oN1QO;gotNUn4cDY
zY)%W;Fy1tqH6s@#JitUX3?6e;XC(4e?y<0o2{nj){}PI0Ya|ZB+*qJQ%QA`Hs&pAL
zbbwJ{&9D}_vo**{zZ4SIw?YHL&c`Mvct8v9FSQS+Tw&Dp`1E@P(38=N)(m+8b}bTW
zx_I&v{FEHCUUd27C+h0pw*-fh<$Or;lm%BnNZZ04+~3bCM<0BaK;M7bW@)P&y|#`H
zD@J2q-Q9Vyx3@{!%9wHk@$_;Q@N#JjxFgO1!`2&SJvSS;jfuYg<{T#f0)aQhmFj&R
zUDT-N!k*AMFcu~pt7{<6g6^93s~|?)!*mis%9j0(W3Ntc*$X(g<_R|6RoswY3St50
zmcsqJ73^~E2A?v@O&vF@cMyU!{>RP3-*;GkUSaj0W8ziWtQpmZ`>O4QvG1rJIRh1X
zIMh+QlzVC%v`CC*s}9@u#qS}5@WlOi?2i(`Q~x(MTKygi91BT^2H^t|RVjlOH*o%w
r{n{g}N~m}4@t5iDSvHh@dCm02tcE{*O|$#nR823|2T8&T)2s6f)3qI;
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-010-n.js
@@ -0,0 +1,25 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+var SECTION = "exception-010";
+var VERSION = "ECMA_2";
+startTest();
+var TITLE   = "Don't Crash throwing null";
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+print("Null throw test.");
+print("BUGNUMBER: 21799");
+
+DESCRIPTION = "throw null";
+EXPECTED = "error";
+
+new TestCase( SECTION,  "throw null",     "error",    eval("throw null" ));
+
+test();
+
+print("FAILED!: Should have exited with uncaught exception.");
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..8397356dc8f41ffc250635ba4bddcfc1ea417b31
GIT binary patch
literal 4530
zc%0o>%Wl&^6m`lQ#ACx2nGFviNQ+oiCQ@n})hL9h4iyp$G_`N+5sn>=$4R>6H~2Hy
zv1Y?3aA%U{X*(ft(!wgqy`JN_XU?3t6OAXG04kaf#H}<~<T27#b`(W9iQH4=z^cEs
z_iZQYfTES<Gg?4nUip4kQEuT=+T`$K!YDZjzyK#8jBpx-63QL_j+HMobf>X?;v=O+
zSP_#@)KzFm`3PWgh~+}aX^R4ra3N`rCmnM}L$7iT<F=_ct@m}UJdA1OA;=__Eps)>
zfssJMbxDxS;oZgr^d0Dk+Me(3?aiZ(K4q<E120KLmOqIV`TVh6K99{KyC^=dV#3tl
zRX@Khlt{DRVGzg2m(2->Hr6HQ0Hb&+0XhkS@lZL!!4SZzblt#s%n9R7h<Q$h#cAR9
z_Ox&X<4vnsGYe6|156lE_?W9YBeAb?pG7@Ps7dHTi-zD{K!xm#6+)Po2$XnLI`3h;
z$B?E&i~?&$waA;VL00;$l(NVNG$ibFVse59^zp%Z2hidQqn^)a-z$KgjbF53$aC;)
zkx;Y6Q=IB&<e2xOizh!(R|mhP*pw{iB+XcsT!H(T_;9w32RmEk=!h>;INTU_RZMxI
zczQKKzg}6;qHi)xTR*ZIg^3#5F=asHGXD5Kuy|dx3LhJ245m>Cg+lSbSd?;7Y=F2r
z^ft6}1u>$(&`As#oA(!vy*#^l&%uh9Qf;wIxh4A)>;ld$V*x&`;huL!q&?|I)Kzz%
zF1F2Woj~ii$bvZj*WK~IcYc0dLjkWa@uq6kOyl9cYWq<VxT;UOph6#qx@wPdA9s{P
z5_Da4bU$7GcpZkPdcTQ(0t8Qk-*}T4Tq3}&BMI>^d`M!0GH|$w^Pj$uJi@AOin<pa
jhPgJM=SSI%S*}6m-DtDdH2-3ksp;i<d`Vboc6I&$Nr%D=
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exception-011-n.js
@@ -0,0 +1,26 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+var SECTION = "exception-011";
+var VERSION = "ECMA_2";
+startTest();
+var TITLE   = "Don't Crash throwing undefined";
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+print("Undefined throw test.");
+
+DESCRIPTION = "throw undefined";
+EXPECTED = "error";
+
+new TestCase( SECTION,  "throw undefined",  "error", eval("throw (void 0)") );
+
+test();
+
+print("FAILED!: Should have exited with uncaught exception.");
+
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..bb8d1ab9678f78bbefa6ea0bc9ce0e749117b10a
GIT binary patch
literal 23367
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/exec-002.js
@@ -0,0 +1,188 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/exec-002.js
+ *  ECMA Section:       15.7.5.3
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Test cases provided by rogerl@netscape.com
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/exec-002";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp.prototype.exec(string)";
+
+startTest();
+
+/*
+ * for each test case, verify:
+ * - type of object returned
+ * - length of the returned array
+ * - value of lastIndex
+ * - value of index
+ * - value of input
+ * - value of the array indices
+ */
+
+AddRegExpCases(
+  /(a|d|q|)x/i,
+  "bcaDxqy",
+  3,
+  ["Dx", "D"] );
+
+AddRegExpCases(
+  /(a|(e|q))(x|y)/,
+  "bcaddxqy",
+  6,
+  ["qy","q","q","y"] );
+
+
+AddRegExpCases(
+  /a+b+d/,
+  "aabbeeaabbs",
+  0,
+  null );
+
+AddRegExpCases(
+  /a*b/,
+  "aaadaabaaa",
+  4,
+  ["aab"] );
+
+AddRegExpCases(
+  /a*b/,
+  "dddb",
+  3,
+  ["b"] );
+
+AddRegExpCases(
+  /a*b/,
+  "xxx",
+  0,
+  null );
+
+AddRegExpCases(
+  /x\d\dy/,
+  "abcx45ysss235",
+  3,
+  ["x45y"] );
+
+AddRegExpCases(
+  /[^abc]def[abc]+/,
+  "abxdefbb",
+  2,
+  ["xdefbb"] );
+
+AddRegExpCases(
+  /(a*)baa/,
+  "ccdaaabaxaabaa",
+  9,
+  ["aabaa", "aa"] );
+
+AddRegExpCases(
+  /(a*)baa/,
+  "aabaa",
+  0,
+  ["aabaa", "aa"] );
+
+AddRegExpCases(
+  /q(a|b)*q/,
+  "xxqababqyy",
+  2,
+  ["qababq", "b"] );
+
+AddRegExpCases(
+  /(a(.|[^d])c)*/,
+  "adcaxc",
+  0,
+  ["adcaxc", "axc", "x"] );
+
+AddRegExpCases(
+  /(a*)b\1/,
+  "abaaaxaabaayy",
+  0,
+  ["aba", "a"] );
+
+AddRegExpCases(
+  /(a*)b\1/,
+  "abaaaxaabaayy",
+  0,
+  ["aba", "a"] );
+
+AddRegExpCases(
+  /(a*)b\1/,
+  "cccdaaabaxaabaayy",
+  6,
+  ["aba", "a"] );
+
+AddRegExpCases(
+  /(a*)b\1/,
+  "cccdaaabqxaabaayy",
+  7,
+  ["b", ""] );
+
+AddRegExpCases(
+  /"(.|[^"\\\\])*"/,
+        'xx\"makudonarudo\"yy',
+        2,
+        ["\"makudonarudo\"", "o"] );
+
+    AddRegExpCases(
+        /"(.|[^"\\\\])*"/,
+	      "xx\"ma\"yy",
+	      2,
+	      ["\"ma\"", "a"] );
+
+	   test();
+
+	   function AddRegExpCases(
+	     regexp, pattern, index, matches_array ) {
+
+// prevent a runtime error
+
+	     if ( regexp.exec(pattern) == null || matches_array == null ) {
+	       AddTestCase(
+		 regexp + ".exec(" + pattern +")",
+		 matches_array,
+		 regexp.exec(pattern) );
+
+	       return;
+	     }
+	     AddTestCase(
+	       regexp + ".exec(" + pattern +").length",
+	       matches_array.length,
+	       regexp.exec(pattern).length );
+
+	     AddTestCase(
+	       regexp + ".exec(" + pattern +").index",
+	       index,
+	       regexp.exec(pattern).index );
+
+	     AddTestCase(
+	       regexp + ".exec(" + pattern +").input",
+	       pattern,
+	       regexp.exec(pattern).input );
+
+	     AddTestCase(
+	       regexp + ".exec(" + pattern +").toString()",
+	       matches_array.toString(),
+	       regexp.exec(pattern).toString() );
+/*
+  var limit = matches_array.length > regexp.exec(pattern).length
+  ? matches_array.length
+  : regexp.exec(pattern).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+  AddTestCase(
+  regexp + ".exec(" + pattern +")[" + matches +"]",
+  matches_array[matches],
+  regexp.exec(pattern)[matches] );
+  }
+*/
+	   }
new file mode 100644
index 0000000000000000000000000000000000000000..bbc38b49e83cc5ec1f2c0641e99f6be1bf4db9a8
GIT binary patch
literal 6002
zc%0Q(%We}f6rF_fC=0{}At4r4B%~q=X@ONW4QkV%rV62IqN=Pacg9UjopEG4gor=k
z&)BkuZ{XUKWb&9ek51Z<O_FQ-_`ZCuuU*w@GLm!a1pB#T!D|9HoV4RO7u@eS`^EB6
zWvAltCUM-Xnd34lRqp2#$9V{|+`;9iSWtYy$N}*f7Fbap7$`sbFP$qI_`_JgVM=Nm
z78eGJ`VI}K>H`ceDf%Q(^pX-`-~!x;l$J`+pq9H2@=76JEq*S$*{;mZc0mTQDrT%i
z6%m*jxNn%X#_%4&0Que&L`pF3_14z*IBfsh7~5NU$3P0Z77IG`*UdWgv~W^M%At2*
z;Ha{F{(cqw`1j`gsO_#6tEECBUVIJ%c^>#wTZS2e<7+fU8|VYtK`#?^ZlRz56@?XP
zfUQQe=v>4)C65`4mYNkFhzMEKh3g=f3JX;wQdulqnhEL11T1PTjUpE{<}t|I0^)oK
zQX;Cn#B1X=g;bo1$<loqV9^;+PKUCW1`Z>a$`Q0ySEKuCpjXjGONP7!#?}L9a&{zl
zY)4L%ZKKtv`FkLTu(w#u!CD{)8tx;ejQFcS^M7v6kL!k1Jkr#<B;v}aFi_^G4~p7Y
zB2^c>9fN-j-&RE@;zn~nWZb)Q>NxNj7#!!1eLZ7jk@Zq}7RO|($IWYccL>G=KK>Dx
zPBTXHO&ALF>C5@)-U-@8O0)>n>`dY8_+&e?8UA>ifg)~xz01S|Ii7I3;-LTy1VXD6
z{y)U>fC}QN0;t$iFl8mMJXT&k&u~i;Qx%$6cM%hVJ*U4-wC&kBcdBJU&2&Pkwg*GC
zK+j&RIPNZ79G5`L$5=`$Ehl$<x;?+mLBsQ1QxCWrAsv446^@eA6xt}&S>hR(0p$V6
z6%VsvdWh#_5dG=xXUmp&)+rGcmRjPML325LT%Ywgb%Hx4P+oGmS|;r!RTCW(-Ld4c
zj0td97vWH>jgnQ8cjy13TUY|*jKsL9<INiljG{C_G(Z@616{W4B~(m*vB0J}dK++)
zBkkn+l_|t`&A!U=u8?pwO0Z7O(4Vc!3y0<aHPhq96sk`5X&2g@VcNCa0Yfr+k?Owu
k+DK+{du(Mr+oPgAgDru!KMzfGt+iy%_DW;?HFk6U2c;F58UO$Q
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-001.js
@@ -0,0 +1,50 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-001.js
+   Corresponds to:     ecma/Expressions/11.12-2-n.js
+   ECMA Section:       11.12
+   Description:
+
+   The grammar for a ConditionalExpression in ECMAScript is a little bit
+   different from that in C and Java, which each allow the second
+   subexpression to be an Expression but restrict the third expression to
+   be a ConditionalExpression.  The motivation for this difference in
+   ECMAScript is to allow an assignment expression to be governed by either
+   arm of a conditional and to eliminate the confusing and fairly useless
+   case of a comma expression as the center expression.
+
+   Author:             christine@netscape.com
+   Date:               09 september 1998
+*/
+var SECTION = "expression-001";
+var VERSION = "JS1_4";
+var TITLE   = "Conditional operator ( ? : )"
+  startTest();
+writeHeaderToLog( SECTION + " " + TITLE );
+
+// the following expression should be an error in JS.
+
+var result = "Failed"
+  var exception = "No exception was thrown";
+
+try {
+  eval("var MY_VAR = true ? \"EXPR1\", \"EXPR2\" : \"EXPR3\"");
+} catch ( e ) {
+  result = "Passed";
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "comma expression in a conditional statement "+
+  "(threw "+ exception +")",
+  "Passed",
+  result );
+
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..a4cf82517a8870c0e15aefd19ea5d46a4e8b34bf
GIT binary patch
literal 11122
zc%1E8&2AGh5Z?aKA8`P|1##LNpbA=0PgSVYrYW?l(y9rSkdTnO>m+Ws>y_<onj7LV
z`W!q1?|`@>B;Eqs+a%k>>ufgOG^O;=DE4~n8GkeL&14HK3_Q4AXh7hu9}rw8;LMt~
zEbAD%Eo*b9yjxkTI5>b-VOc&?@DOF|Kc89F1O8MYzWfLf1dctp1sx9%z!3JOD7X8a
zTBpc&ugm()ADJ2?3lk{{xfb#f>j;Q1*>R!IPz^yM#rfc@duYlC^6TsKe7sUBR(JNx
zh2^WU!t#}nxU7nt+d~Wz;7M`kzzh52J>nDaA|Q}bq1?-rl{c?WXus&rr&PGTdPa&R
z`jccd>W}dn^{8}MF=f<yd}6oq`t#}}*zwo+>?riE?o{_m#-PdlIe>(<><!1^5XHnS
zG)o=iR~TUMjB6;*)Ab0YDT=`Jx=W?y96ki01xP&<QfO8aKIG#~!cFs@k3v$#d$``O
zgVgkLN^!B9$OohqJDjkCu%WzT57wAPP`$x=_Z5Pcx*O#z@&*E(n6Q(<V-D#(aMW#N
z27Xgr_+<p$A|Iy=5LShhX*4nyl<uprn@><$5MktS|DbeO{isJ$88(fYRe)rJ5YQTI
z(($E(Z{te`VmugNavm)Sa@yW2{@OxrF1&B>sk$$o&KC6EW)6CDe0+a%mxsM!kZLmj
zEX0y-Lf-kx*Ut7LC}k8DktXzASVKN^^*VmgWgR|RLl+%&d$$qCJIAQI!&Fw(<*Q?g
z3lVCUfg%Sc<d@sYzy<L6MTedu{baZTA#NKWPi6n{hulBov*V(SZVn8@S&W$SvA`d;
zJ3?*NAh@ZJ{ZChjb5YiSjyZfD07?zxvr1asL?>Gy9(GQx2Jl^vE2q+ZQ#{eLNZU90
zGOaNBtxU9O;>~bWdkeFkw2Y5WIA(adiZZIfRR-BaN-8UnY^;KsZ%f>-rJ%=Z-?#?k
z7+}*T^dewRqv(N<LJ7M7h~8l${xi^Dg}p}dz9oLl={w_nBL?OiO7EMq*$|n196`$r
z{!<nt3`cqO#sWorjW}rZeGjsTWk9#gPfoA9>eDtmNiaux`koQ1`4)+yRa692alult
zPcw=l(PZ22b~HM35Sfx<uJVa@ka4;WZTWzWYc}xh$hqxi1Jm{dqIRcVRkTPmY%Xr`
zIWH7o(_G7SKmZ)EHT=TZIn$O3Bj(9l)Ls^GfDPSQ-VS|7Ty?xCoQ*0u$<wGYqL!lP
zwXEuSrM$t&<MO2784g7g5^4rfet32a6_u$f_YTW<zt1b|K3Uu?8-J=c5RENU5fOt>
z%TeUylj}*kpd`0TLE}vlIB}FDN-h1atZJ=|*eA%H@ZJIZB*xnD<ENZ(l>hjdQ2eCo
zxEZ{!{7Z4&ngQEQcdGa!K(1Hu(Qpw2EL2zamwfS)SY@yHoj>WvJB|NnnznJC+V>`d
zmc;6+YE3SPDc19ri?#z0+pX_)I(-$Vshu>@PeW5;ZW$;S^ww3e^C@11(WLOiB1hZ6
fO7<U}w_be?cu6cmzWl#tUG<C80k4k}C}Zwl;s+si
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-002.js
@@ -0,0 +1,60 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expressions-002.js
+   Corresponds to:     ecma/Expressions/11.2.1-3-n.js
+   ECMA Section:       11.2.1 Property Accessors
+   Description:
+
+   Try to access properties of an object whose value is undefined.
+
+   Author:             christine@netscape.com
+   Date:               09 september 1998
+*/
+var SECTION = "expressions-002.js";
+var VERSION = "JS1_4";
+var TITLE   = "Property Accessors";
+writeHeaderToLog( SECTION + " "+TITLE );
+
+startTest();
+
+// go through all Native Function objects, methods, and properties and get their typeof.
+
+var PROPERTY = new Array();
+var p = 0;
+
+// try to access properties of primitive types
+
+OBJECT = new Property(  "undefined",    void 0,   "undefined",   NaN );
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = OBJECT.value.valueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+
+new TestCase(
+  SECTION,
+  "Get the value of an object whose value is undefined "+
+  "(threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function Property( object, value, string, number ) {
+  this.object = object;
+  this.string = String(value);
+  this.number = Number(value);
+  this.valueOf = value;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..dc2656b14bf3bc14b01d1945d35c943063c2e4d6
GIT binary patch
literal 10356
zc%1E8K~LK-6i$JSahNo1JMEOqq)li8w4G2vf&yDnRnXdTolN4kh7eb_L+Nq*8T&o^
z6T457_Ah2TZIiZ+n+B(AVH~Jx$ItIQfA9HwuPL&i?ZMq*3j%ldl;9=-SJskcS?Ad8
zTKnbdac#Ti;5M|18}gZ=hbY@UdTCjY`BTOC@-sjXIQQTIbUZ)+L)e$1+~_;CE|KpJ
z%lge9DNK@ui4=ug3;Bo*1jLt=UFb8^K#)jrKDdgMri>uJxx328Ylo$J`J`Ih=#3RO
zdP3r|YI3fE7$m@x;;w-gjLCb-C*Vz+KuU#iZ#FmIy}h90q6eSS;Qs1mDVFFp$>`Ld
zvvum(;isA@r#|2l$F;35@8`jfzh>u0VRyY;uN)eKCXeSfB&=)iISz*?CT5{|I6!`l
z0S2$Qg;Jj=B9yKu0ndw;O3yib2to^xW+0@{tS)@Q$2)|(<|7}4q>d}NIc|fr^m{>Z
zu=~gdq#ILC_(Awkp0NiT%p$1SVx#*CLF>^*Ig9)UiB3$|$>1@E^bt7fHZlXhLIl5z
zpj+ePlmWu(kTQ)$=1kb*Q%zqyoeftznQ`@ykDu%xb7bjZRfV0LLi|xIuO)=`H@<dd
zG_+F!T^wfMyRd<L=<03!tP5;D+CVo0b4Rxk>Rn?L?NAtYA74a})7Mt~^#$nQWZuRU
z2O`X_0!5lh2;s#fIRg0npaV}4;TeuVh&uwvQ~7`PB<IiU{J18wn*-ZI7bC8GCh&*t
zfl!;Z2<|9k-)R#5FuXOOV-BCEfKtQwtdnkZ(a9>)!_KAE0>0~U<5afqizh}FX-m_u
zOA4ni<VBk%-%Q754lo<Jmht%o#|*!&!W-4#DuZkyC8d-|Hbznf(O@`?m&vRyAvlJR
z97Al{8@&XW(<*r&pittj4Mcw?F#x7CQAU8?^;3u6I#+Y)-h|&RGxMFQ4W_u-XOXqc
z;D1pPMSP7=H2hwHETkFGt#ZxjaHziM(~|^ur04G$v6^p{D9Z5?po#;QhQVb;m1wfH
zvKY;z97Lw%m^*yp17w`9L%Sb8wtUjY4IB7&80B`Sg(>V!AZiaPS4BT6gBIdAU-6Ow
zcFgs+CS<}}_TgR|(=%<+aLWsGfqHo&A+V|2ct?Tnh@*~|hbv)CCkY!h#@JGHzcy6e
zuaqYkMqHj`JcCj+;bzSs$`7v2p`u1rUBc56-yf?Azt0zm%SNQ?Ekt9>RE)$R)N&L#
z|15i+4k#(?Qt)|`Oirkh#I0rARaH&4TXqa`XTJ9UKZ&_^_V}qLsPZ2_bBZ7H-MkbM
zbF9d9YbI>BG$`iJ02wak!{HKWvp`+oZ}G*?V+H=$Pj#9Y(X?o_TvS&jYf^gbm`2_V
z&{p)Z-Ns%)(idZz5=fK8G;Bjt2*or}yeOc#a}%o)ZR;r+^1aUqugQdfl>fJ_UN<)#
LQpPT7Wg`3wP=YJX
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-003.js
@@ -0,0 +1,55 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expressions-003.js
+   Corresponds to:     ecma/Expressions/11.2.1-3-n.js
+   ECMA Section:       11.2.1 Property Accessors
+   Description:
+
+   Try to access properties of an object whose value is undefined.
+
+   Author:             christine@netscape.com
+   Date:               09 september 1998
+*/
+var SECTION = "expressions-003.js";
+var VERSION = "JS1_4";
+var TITLE   = "Property Accessors";
+writeHeaderToLog( SECTION + " "+TITLE );
+
+startTest();
+
+// try to access properties of primitive types
+
+OBJECT = new Property(  "undefined",    void 0,   "undefined",   NaN );
+
+var result    = "Failed";
+var exception = "No exception thrown";
+var expect    = "Passed";
+
+try {
+  result = OBJECT.value.toString();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+
+new TestCase(
+  SECTION,
+  "Get the toString value of an object whose value is undefined "+
+  "(threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function Property( object, value, string, number ) {
+  this.object = object;
+  this.string = String(value);
+  this.number = Number(value);
+  this.value = value;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..2a5ba62ca9bb7bbb0d238ede3f9f18bfde38c89b
GIT binary patch
literal 10202
zc%1E8&2AGh5Z<(f(gO(56P)(I0aT$Bi36%aq$W)vRg_jF>J^+_H!<C;Bil>Jk=NjP
z`Vw3b7aoBdw)3}1yv}ChP1BYh8r47J@%WpWZ>GtypyR=Ot_6XcKO?wFK-=1|EUSUt
zo>eGUPihA>2X~;A%gQx54^fuCdTv<{`Knxa`#B&8G(30&9S;z|5cZ`gcl<ZCE|Kp}
z%KF8ZWai1jM2bSLg?z+D0>WF$F7z3?K#)jrK4_1Xri>uJncwE)wNkNOKCR}mgRxw8
zAS5iSCg&=MK>|D}?kn(u8F`QR1pL+^kWzlRSNr>KX2p&^<z<IEH>F6T*CL@of3DV`
z=cSJ|QwF`qCr)awKdprwf3MDt;@<Ugy;3q_#V34%`*H^o*0T>Chr<&SYSg5q5$bCU
zFxcidl=_UlL1~I2@VxO>X*q`vL1+Qe41^S#)P#@uc$aX~eBh&y)NutjXYU|y`Xi%w
z*aGqa>4lUNb`Um{Z|uPfW)akEvFUS#puO=yDT};@ASWj5Xz-Xr`V<^>2bqCiW(>cC
zpxfc&lmWu(kTT7U%mpQTV`V|<J|90VoNy@Vaa4uflzjR@D3C??@?XAWYuX+$kuCQ5
zf#=P+9$zsOC4PoNmT;-K2e%<Xj_&LTSGkp3L%@-PEbtVLmf#J9xMP4k=&l3T__I1Y
z?#MXlz>d(xh$(mZL>1d3p*Cv~+*QcF_4wrZ2Ri2Pc?KvojL$mhjZ>y9^gQfbS}owa
z9>1LG?gg=8YLm7){I1GT2~+kVpKAJIbuu3HE-{aa8*dgP6-Ss&B}?4+!ZBlY26@il
zE`vEfCbN@BHpUf2`e(TBFZ0P&gmX+FIfPhcI#oU|b6Q0Y1Qbf#b%1D*L^{BNSCk&0
zH~qryx5w4oxHImzWModE%D6t8Es)w*5w*<V|E2_r@E)OP|L+Q9eVPH?D%YG&y6Uqb
zJ&7<!1id$h)pTn&Q56>fRXnh~*yl|}?PjvWaWi^4DTs{8G2ilu_mFYE4(*};*m9+f
zFKpo3eJ{7WEllBH0#RF(u8NLO0tLiNzTnjY?3(K^%?W}_cEVm7(=%?puw<^hLESVF
z3)sSqwBx{c#8ZbW!>xWfC%GCmM%H4qqq3P~A?^MsrKZWl6DUO^l4=4`e$Z|}MR}^q
zzl(C-t8Ind*NeX;<52Y$qM>anGGY*FDT-Wwg1t@;6y<g?sJuxMCsc`|)za^(s{Y!N
z&4ScP?;XHTWUO61eyS0w{KwCl;>Ua=FNVYvi*enaImc~`>iBa&ChPeAa1nG^pswwo
z^3A)U+Fs=gnl7xCbLt9VP3R6i$JGDewMBdAw3#pa=!-5*siO&28djkxctV;e{w1%;
jt&!D-w!0J!?ZM}qFQoK=Cx0JUgNAK9q|78_Wx)Ff&9U{u
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-004.js
@@ -0,0 +1,49 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-004.js
+   Corresponds To:     11.2.1-4-n.js
+   ECMA Section:       11.2.1 Property Accessors
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               09 september 1998
+*/
+var SECTION = "expression-004";
+var VERSION = "JS1_4";
+var TITLE   = "Property Accessors";
+writeHeaderToLog( SECTION + " "+TITLE );
+startTest();
+
+var OBJECT = new Property( "null", null, "null", 0 );
+
+var result    = "Failed";
+var exception = "No exception thrown";
+var expect    = "Passed";
+
+try {
+  result = OBJECT.value.toString();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "Get the toString value of an object whose value is null "+
+  "(threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function Property( object, value, string, number ) {
+  this.object = object;
+  this.string = String(value);
+  this.number = Number(value);
+  this.value = value;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..16c76c4bf70218318d8e3d56d62a1f949fb366c2
GIT binary patch
literal 6146
zc%0=}O>Yx15OquWsEQC05{I60Y*nEa2`*?GiKaoM3ZY`7N}Q0h>t;=y^~!b#`6WpF
zGp^kD7mVE|yGb_AX0u6y$R%2TJbT`Z-;C|3Uc^Y*2?+Mfmx8wi?xJmkP>cHmbXIFz
zxNlsKM+7;?W{ktAROP+r2<^crCprBJ3yNEeoD+{>ffePUf%4;Ti8?g&$FY9Hkga)G
zTo@?oBN|dQ0!U7&`6N{Ini65)LfnlvEtQ~QyZjK^-D;&-``B=fZ`+*XTaYA{Yx?R`
z5rLV3`-WL>3hxPYknfQoQi5?WPEKA=!;b!qvBR1745YB{A}680)=TJB^^;o^q4%NV
z!hQMW)h6(`#=z8eH*3v$wGbAcYP5iqLeek6(KWj)l+fxZ=3Rvq>4JS`H}P3WC8B~E
zi>I0y9yAe>m$qGKmkJBjBvM%{T$u^mu?bkTdm2UNHAZ`_FTl6&p_Paxuk-e_O~zS2
zw^AbWjD}bY5}VVm9J(Jda;=b{?LbYgtAUQ<g;orC2P&;QO0%P*xT898qHGIozO+Ap
zc5r)-r5vmrPS9}gFlEHw1ZiJ0k02_<D~`uYEahhK_-B1Q?iwCF66w7ZLgh2)Xz<bq
zw4?&T`zhE<@Y)oEIKP;>nsKj#0v!4bj7{U>OplnDWG%)!Y1trWetQdD?NE=-r~0S4
zRX?lVG)TYD8e#|9KVTKiFCQktV9aL;-{{|P4O<GRVC4lBhI^72h9j)+UNc?2pjpP(
zb|x1Nv?JK&_J0#-OKSTHiqE^_Yyt6ItjIs-YNDLxt*^i*ii9>w4OSTc8BiWUyW%(b
zWC4LFRw$Bl^hR&K>qOloSmHNe=W_h0?hh053_8*))B<C5T&9b>CuyJP`(6dh6bBo_
ze!zM=lR{PG&Ewy=Yh|p1_D6zvYMu;qHas{i9Y8q*UrV2%Ioh%0#qO}Mi(S@2eaRG)
z;c~bs&nx-}sZ1{`bCfPtEw~$4RO>Sge4J3N>DtV8P-kDzt;%70%Cv{DC2%Z(V1K)s
ONxd~AWqU$Ojl93M8p%xn
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-005.js
@@ -0,0 +1,41 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-005.js
+   Corresponds To:     11.2.2-10-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+
+var SECTION = "expression-005";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var expect = "Passed";
+var exception = "No exception thrown";
+
+try {
+  result = new Math();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "result= new Math() (threw " + exception + ")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..d19dd551a8d26becf3efb5d3867e9dc4cc9e56c6
GIT binary patch
literal 7177
zc%0o?TW`}a6!tb47a;`V30}zKV1f-8n*>=U+7;+jx@qb5ioC>Yy?IGxyL9~@Jn_d6
z5>H4V@h`C5wMo;|O*^M6>q}K%KKtChbB=5CW`m%dT}RN%?b4t|;VGC002~Hh8{|us
zZRd^S1`P!46}84DnDN~AhXC9WtL*6Z14uDEBxnn{1X9Rx;43IE{LR1#_Pu_r-(tz!
zD6D`gDC`03W8MRZZYg=l=lBRCs^ENh8eW=liv3#dh8TB>g=%T1Vy~Q!*(>KDQ7lKz
zl`%&Y5(W1KlI8&3eKCQ~8Wb@mgnPESy8ir_4I=lxmAu`}3ksF$FEXJ{e@s`W2gN<d
zluoaUiEZb_=e1eT<FD!IQOaE{Rm(*qTD&LG>d5j@%M#J6ZaE7I{W(2_-V)>a{STG>
zPx<1W5v4AQiB~T-Hr8JoRb{cqAP$EdoeIg+9YSVFR6zj}5^hyHTrq^uMHI$3q`Zn4
z*GQO|2=k!`kk*<Kg-t4q41g9D7X2tj5v>O0pf)IzGS;`b1fR@fAJTT@a?+IDNCE^M
zaX@jc&g17wpylwOj3F-}=gA3cxObRiy;wx)4x0TeDXBx4y-5-RYeFV^4>3XBERg!&
z>5@7+b5TRy#fT~&h>1#I^*}9Nr$H+L`$|`Fiyg8?t~vkQg^U^Y&nj()`9*apBydka
z9r_*-!X?R`mn&kMw5`n_v1Hy*YjZm(vt(z$o&2^Sdc6uOsAaThQ0E>VCpymM)kg2c
zRLz&GCrh`R6Q|p>M4yQrhS-0EJ^I2W5*G5P&Trwe9dAWmMV!t0z5H>PrgT>sox}@}
zyY&KrO@@@I8c@DP3=P&X^`o3dZ<4X8VtFBfDz2=@UNDPf&^}zA&c-N1#%t5I0v>CK
z0!6N%L8VZ<ouU7yK)ET#dC(~W#^9NBd?P>I^K{;l%u!{;H5~OQ#!+!~B-4{YU+w36
zlbx=#iR{=5kR=#c3Fe5PxE3cWlfC2r(Jf~HnX(>!+DnPnrh1d>luU1}4)Jye)rzGj
zMoMt$7S@tzW(2UYc6|izUGP~ULGTO`k-_wsqN<sd$2}STJk`6Np{nq!Sa>(WxI>;}
sH8rEA!_e{5@RubmVMZVa{?5>QzsBb@KBRwi9cndgB2M@Andr3t08Dfc!vFvP
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-006.js
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-006.js
+   Corresponds to:     11.2.2-1-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+
+   http://scopus/bugsplat/show_bug.cgi?id=327765
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-006.js";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+var BUGNUMBER="327765";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var OBJECT = new Object();
+  result = new OBJECT();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "OBJECT = new Object; result = new OBJECT()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..39c1bbdedc646eceaf3a19d9e7b7ec56770932c7
GIT binary patch
literal 6728
zc%0o>TW`}a6wWRTCJ;j6W#TE1Lj!e4NJx-XVr?fnRbe9C9zkB>wPs#iIWArQ3jd5(
z-gx0RaO|#4nk8<Uxm#IZqWbdL=k}d*?1+Ak;;PfdD5xHB*5T;FTD2_elm$a;zv&)&
z?>(ROu;o<L8i$fdR9jn?^%zz;$?YeI6Ld;(9s3k<BnS%?R1p7<taB0u(^$V@$;vD&
z#uXF^ED{ni0Z49X1~?Stj9{+dLUa*dIue|Oo$5mv_Zqc!^Rw$zuEw0o6-W}xQ*$jM
zFh^9u{Xn#T4eu#T;L9GzQ3S%h-raq79d`0n!j5;YDM+rrMM;JJx?P2yG`@JI6#4)r
z4!t+u-Y$b4Z_zQO-0fz&)i9#PXA-T8?GO)a2wincqY7<IeBKjC;0usX-6oEOOhwcX
zrSVp^!-pY^%c^Y?#v_5aXyZs|BwUyXtFZ`(clr_~Dl3e%+JJ*?Kfx&GZPsF)>oO^0
z{anfL%zY9fK1^IrnsRJ@i{dk3ank9E^tlpfCq8Jwkaxh+a>CB{4s)TJiYVPd%TMha
zFb-z#(~Q6>VFU?xfC$CGGEn=U+tcHwA{8I^<Xw!Y@;OYn%$|VSqRZJJ1N&Z=9vdUF
z#=bfKJVH@q*gxBR80QyNS5xMnTU`_e6oku?eP6CfZPFIwe__dLTInV8+eet{gmQH`
z*5515`Z7+A-FoAo={D+mr5@|D5{#aa%Sk#;AG0p4#z<`Cl__W!HgV#Q-9`S!0C`n~
z!Rq4fv|p6%T|6*e!D+0X`yEB%RM;fKLua<>YEJmw8b$pGD>e6!Y=3j3ZBE&g!S(8#
zJJxsB?nA5>^|l+PfqNC9bJP*@^;vZ$QXLID{SNvBCY3^o;R5}?0Lmj67i^Tp=O75P
zM3LMhFFN|)!eUg@;J}5ON7JGDVq6R5s3W^cFzBn(Ty3&dl{S$rcMU}u23CR{Lr|=z
ziOOX2_kXmz3xF(G(7sA$R(sEuMUTDv!5;B049M4^$%5^dMyhD(81^>wBY<tJ<DS8M
zH+&h$5PSit$Y6pj@Vc-p?{ks>M4_j-89W_xE;N%G&ix7tpCmXplTGp;a<ufOuUK^t
a;(9;Uc#p;#^e>>f`qw7aVh@p-?)MMl)rS87
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-007.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-007.js
+   Corresponds To:     11.2.2-2-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-007";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  UNDEFINED = void 0;
+  result = new UNDEFINED();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "UNDEFINED = void 0; result = new UNDEFINED()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..f09c68a792ac9181f4be0977fd7a753f1c417fe0
GIT binary patch
literal 6615
zc%0=~%We}f6m?5^R6+=e1rn=S7FDQ4Vu4^9iKaoMibBPNO01AObDNktGm-5O@+*7?
zKf?~O<1e^&9+RXqZZdV!LbDl-A7}34_&yw8bvqnNehX++Iuc1!&^B2ogq$Q%pX^ub
zhrz2LOgcdP9ka&gOsdka$AsL+RsQ7mV=5Ru;cx&Ur-CY$#0Dx#-z7O?aWswf8<(tI
zgp~*b#UjFDrp5r1TdEPnik&hL1}>)URA{LLi<_mpI385Wjq3ZlzcU>3cZML7Sb>?V
zF$IEh1NW8k?m4^%I04@}0;ELcp6%|wJP$j58f8a2Zy88om!hCSf3DV`$CVF(D}&y~
ziNoOe=NH$(jw>Xl*1J({)GAJ__)w#@z>A^h;n6ixIyGoz%=ti31#Q&NNRyt0Ohc3@
z=jm3nBg7$qqGsE~ajB?K4Uo#B;nGxCPgS6z+0`hrs507XJ%PS`hoc}GNiAuf*U32R
z`&tGw_gPFue?mCz%8~mChf_raYqr$vcQw#<`k^I5UO|-B6J9<$+#S`K6J`5Q!I1Q0
zbs=d3$Lk+!HM<MyUCu`i(7zGLjmUm?a2!uYmuJMD0zB1lZz<ytU5D)VXLWYmG;ueC
zj+VuVDIaO_Cf*p-Q!SD7GO+)9equg@&>cUIsFaTR*%19S1)J7`C*c`s(KzC$T$b+p
zdd18pYrk@ql`spI0B>-r8SB->660Rs#5ixfsYB0cnU$Xka-RblO!;iWH?~YMU2Unb
zRpzuS!C1IMb$goY>IKy@zP4L(VWMrLnCmx&XqSvZOQ_GU&SncFvBmnJgG9}A9LdQS
zv?u8Zt(597k^gg`+{1B|3{uDf0m5ydnB1cU9lX~-4H7Cub(CCAAJr$LM4V%e>>}PF
zSEs|Y%T`kRM7P9cDl;5x6szK)*q9AeE}OG|qa9rW<eb%%H%zMDo)=>i_1YT*T>T0?
zPtR;UbyBuzGI(2903)okF8G3Icgb!&L-8e~ABRbCj*kDj+?nY^ujaZgyC62FaTdE5
uOPu|*HvF$3x0<wtmi${6Ypk=~PunSMA&!Lz_6x~e(_3@seD{Kx%=-(wZC}a&
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-008.js
@@ -0,0 +1,41 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-008
+   Corresponds To:     11.2.2-3-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-008";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var NULL = null;
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new NULL();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "NULL = null; result = new NULL()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..392209cb016b9160ae3878ab88d350a07f9f1307
GIT binary patch
literal 6652
zc%0=~O>Yx15OrI=Dj|f#1#wz&X;Fn*Brd=<5=jH3M4{@gdf|ZFT{m&-tRveY<gf6z
zIC161zhLZbvq`#fldY2mI7Mr(-_E=lzwtP}>UJ0@`7MIu(t+Sjf!k;mA#}{+J}TE5
z`@!oV;vItgZS#)Ls8pr3#|YhrxBTJdM_5pN%*Y;z7#3Jjo*1Y&dzR>oCh;iNFL-6;
zDl9Gx6pay0s2TtaFR8^OQS^ioVc-(n&Wx5y(4<+q3*$kx64pL7{O$8GfBPI{7%MPy
zb*hNK%)oucta}OX0Zfo@9YLf7=brEEyt)iK_%+U6tXwmY!fr)DLVqrn(4*>M;EK@O
zFtH!J`0{cYcwAs&YQMu;Sg$%^@u5a*5icP<54Ntc(kY?ULCyyXE7Au4j5XO_$R(nJ
z8OxTM6%h;(Qk1rJ7?%nQ6%wf|9?s2$)yxGfnq7?|i#nsD))Nrh4=_qZ$m_g$*(VdM
z?<+Z(S*8gV{UPIYC@;c~7&%c$&}K`Ge^&!-WgnU|<PE5_p717Thr6vhwxetxDkw=m
z7AHw}bQHqFTI0QwARuk^5{UW&i=$=`Hcpr2NK*j@HQYN)8HtyH$KQ+NaoxyrL^|3Q
zCsaOyi3axupq^?8-pj%M=kpWF9f{oK=K+?|aejuPpH*nnnJ^xmp%zYJ2F~UAUe<4n
zEwZ*V?Yw$g@PzOdrkaU<yI9@aEnGLJ)td(CIX#8hD#gU#G!aIkHWZz-TBKjGmC*`T
zQLDmmR}#Z<2kZWIVz6g)%tYJH<;<zJ1!k`PH>q|_6`I2V{^mHFp^VMeDD81I){^k!
zQ{WSIgmy~x=a~OfpxlFT#nU1(gFv_yis3cd(Db=ZR9aF=+yKkv=vIAlQHm$fk$=i}
zn5&~g?XuU@G0{D91<RZO8^=DvrnogOR4%)>zoTEB1LTzFsi%Xo>g{?P8*jW+aN$AU
z>!dTA&zv0HbUJvOa0muqXN~d|dUwr+KF9Gn6d;FXaf(ZUWw}<<+g?p|qjrTlXG#kl
vj74cbubls#VABxGX>;<`j8*S!m)Q0swxo_F73{Z`6Un#M(djM^b93(x7-MP%
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-009.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-009
+   Corresponds to:     ecma/Expressions/11.2.2-4-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-009";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var STRING = "";
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new STRING();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "STRING = ''; result = new STRING()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..988918403d223d43870d24304b8f5479ef43e1c4
GIT binary patch
literal 6623
zc%0=~O>YuG7@p#16Jty~n0RrIHPy6DJeh^0P)unMn=ba^!3?`o7(48cnL*^Q_)q*P
zUOkxjFMMYxEYM{N+kv9xvf24~_WgL~{TO`J?J!dCTLediW5JsOw^0ru)ZkGc6)Ux)
z;B64{4nh8oS>rP*RpIwDgdV{ve|-BX78ExaIUpg!0xQa60~ICj5}ngHn#B4AOE#{;
z;=(}D2+^3T5y1GCN<?Bs&nOWFF2?OdXsHB^n}r839+XS<%7>c2b1~-cT!4&Y1!k^F
z6%m*jxUZOXFX26g3G%HYh?Jn*>)pNG%dn%TQFgfVj)4?*DKZ-L=V}dlT0RL}8T1}Z
z90hxy->icjS4d2)cfC@tmYrDfiAHM?FD5+?j;@i?sX@yl&IbxB(gyvEG|5>=HAD$B
zmTWaULKq?>tJyYTTq-P7ok(TTaA_*!5*4s$b~TF3s*LtpPk?U^VU&nEukz+)os6@-
zZ=^7@NMkJeW5Q`y4&9F!Ia5f`W=l<fR|9P)A6hcx4Mb@@;mu};yQ4aFqHG_^7?OUh
zE+pND@!H4t#qx>W2{mB7pyAL9`Zq+n6)8~L364jXr39c1WYuu*Fl8iKhZOi{b#~k|
z!8arwEsGOVKGh87-U!rFEx~&!*#A90A*qqj9Y2q;l#cmX7yTp;oBo6G@Eo;p95GNX
zP4}W+F}2Csw6xQ*X2v>TAEuhIUY#vF<}+u<dE-ru^qkgOwtO)2IUvG>*T%eK%N3JF
zmkL`YhP#p&8+WkoQfE4QLB))>?Y3N)YTF=Y?$%K4no(#8W%|w8Y=JbkSUYsU)l}ob
z8(+Yls3Wves=q}3&w=s~#uXnVkp%*T+dwhCM+-W5uM#y#sU)g_<Z|+;J|Cvy8Rkf@
z<sEW$GElqhD78;?XI#QE#lc3gLpT(7rvsJC9_`=gN|yjRXFc^|lveY*ue?FD_44NG
zW-z?<(n;N>x!`R<1q{H>df_XA-8Fmm6vda2eH`Y*Ir{!}xjEBkUd?rBc137T!Ys5e
umN5Hi<KiC!OF3zaEwgW5tijH9Pi-f$g*p~0*e@n$8sC~k=er+F<=$WY@L~D@
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-010.js
@@ -0,0 +1,43 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-010.js
+   Corresponds To:     11.2.2-5-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-010";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var NUMBER = 0;
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new NUMBER();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "NUMBER=0, result = new NUMBER()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..b61edd52d2096810afab769b198edb0674802dc6
GIT binary patch
literal 6754
zc%0=}%We}f6m`q9;vpn9hz+wsMHMQQSiv+>lLnC}Boz~Ni`*GEF?Gg~$020HhwwLi
z23vOg1=r4FlF7uGOr5kqH&y&N<9qJ)x%b+Yy)GjKw@q+RI1#)ha0hK8gwA*{K*dVE
z>b>!N-X+N0*K1rxBU$+H1flz|%AMYRiUq}Ij2si6VSy#(p@s_L-x0c?VK9sJ3zlpx
z!{S0i(E!nq$_c>qmP$ZENzW+}8ZN}0_|TCQG;9^_z_?c~H7kv}yFVIp_eUVpSe~A%
zQAq@58tw~by*a#xFhRa{1&Jas?&Yh4gL&A=e{Jk|=M4=h%%{jn=+Dg(dRqSI*&_57
zOjNytPp_{7j~fh3Wp}gEtd*^>_(-9(i4&5(16Nm{(kh|lNz8i^OVR=R^l9R|kV-@e
zGZt^vJA4=-Brk0{Fdj)PWRpbFVBy+K*p5xWqSaF<QC?$|*ZKl{`yNJ#X!06w&D*4%
z^?fTPGK)0CVlZ_$<;t=95hLdk3EFDQ<aZU&Ui_goLtcSOs|jaublAJ9i5q45P)<qu
zu~}&^HX60^(Go8dIcEfi3*E5wf26|OFb>zG$5MnSN6;#`cbGB~T!&QndviSQXc6{F
zSDnQQm5*Vf&YcOUBin-aQ?UQ}_=My}e0%YEf}_ZCd^W`(&d0hBVcfq!Z5##+j7zh<
zs8%F48Jm}HY1uQU1Mg+Qvgg1?u?mUNOkth$trl6vM3B?vqh&L0oN|{s%J4T(Ib@Lp
zbvRoz%l@<R^)XSjJQ<g;^xGwddlAtUP8X{#cwrE&$e*q%m!!~DLwFC4xt$EVoF(lM
zOtnI_I$xo8n7h!+nldk`Zfj@*u8y-6(&K9F)-jif#)hAL20l?&D5K<Hjq#rW<t~g%
zK1@y-WGG#h7U_-p8-LFfE$JFnBhsKzPZJuIq$6FPEXL|=KCs!bDxav%yM&_@2W!I`
za4Bvkh010R_;+-@Yk<sHr#+9ew{z%7(Iao2q2|I*^*}V5+<jrCEL0)k>_UMJ$ktl!
zC7O51r-2m1*N}uPrp62v&2@R8Q&(SRdYiLU5%yu>gDJI5EnW@PqDg)hKL8o^(DYPp
Z4sb(Q8N$T;HoDL;#yp$ti83`V{{W?3giinf
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-011.js
@@ -0,0 +1,43 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-011.js
+   Corresponds To:     ecma/Expressions/11.2.2-6-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-011";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var BOOLEAN  = true;
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var OBJECT = new BOOLEAN();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "BOOLEAN = true; result = new BOOLEAN()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..b2a72d1f0a67f74ca7dc745720b85d5d532efbd4
GIT binary patch
literal 7215
zc%0=~%TC)s6dmY$QB<j`c4e^wp^8TzNYq4XLP~>DgRnvBsv7Jeo-(nc@uVUD(N+Jf
zQdiyeBPw-fLSiSe2gk8PO0!8kkK_BAbMM^ftlc80q`L?@r6cM$C~Sg70Kl2=bV0dh
z9GE+%?Y9un*X0_W;DD9>JOkh{U!_O4pF)b^89{r<CXhmgeNRF;;d1~ku;&b8{o+d&
zuEX-Fgu)KM9%ci8=$4v;JciFPq7u%7%~0roQS3EJ5BRuQtyr}~Ltnod)7P&+qFAP!
zt7C>JBogi`B<(T0B|d>JTNDKWSMJ5e=GHju;9Dx&-+4zuQneHr4f<oY20g7Fn|T@Z
z9-lZcH$T6c2RqI%FooV$&8k;(vEmbf<|55Q9gQDdDdjvE^ylmh`iPI0Pxg(IkLBud
zE=Il2CthxCZ@+n+t0}7k`Y;(}sL3^xGK91eYk~?SB-|=@*n9|~X$%%HNSTEKrqHl3
z6&6DkAZ@e-N|03<aR54$d-MYzMbz@^eq&rG>8$SyF)>-j9;DrfaKe@SlLQDlXMo~{
z%SPWTfY!nn6%2U;2~SLD$<dJ?>y4Z!)r&Hc5sPztF=QmD!?ccT#=hDK2I>@aAfyEH
zXTmW!jHBk1K_LWnaf}b+eRnGhAz@(dxHgI5&Wy?CJ;Ve#^N_cH&o*zPOB=O>EV-ES
zDW5QWZ2+n<m-?L;>{}n7JRc)FzxX_YL6CENTC^LM5b_pEeER~p&~pe^E>8EdSTV9m
zd39~Z@qWe<<{h7Ecw%+7#J-z3v8Uym;gm9cnW#!-iQm0I81h=gJL1!Siz?4oAhX>H
zf$acE8@Hh7RU|rlLdB%F)wY~C)YiC|i~miiP02z9+%Rs=W)q~b$!>CcJ{u_!{j)FJ
zo}fjAQmk8G{HH*9$j6zVRB6tLD586WpuOihV!f1#9D_?93?J3!{ZyP_j)YP+zgR7<
z_7^@8m--3}VjL_L`@|2$-BF^-^LqJjT&N3xOj%ED4AQE$E8BLxeJjf@US55x_2{=h
zCD*O2=2FOs;LuihNz8$ByVqaCepB`zViYeR9p#uLQ}i(Ar3)xXfTd~xUc=QP@ACVM
zf_K01g-a3MP3YUI_(oBgD!L!ZEhr^zMg$rA-$Nb!ikMTxkh(jY=rv_JPS+%j4cfmk
CtR9j8
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-012.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-012.js
+   Corresponds To:     ecma/Expressions/11.2.2-6-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   http://scopus/bugsplat/show_bug.cgi?id=327765
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-012";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+var BUGNUMBER= "327765";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var STRING = new String("hi");
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new STRING();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "STRING = new String(\"hi\"); result = new STRING()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..2c33b5a9c52282454cac85de0787e40eaa58d4d7
GIT binary patch
literal 7198
zc%0=~O>fgM81}~ZfeDEdoO0YWO=Aq0#ImBbE6}NwY3X)FZt|`*bCb$(>H0r7@z0Pr
zaYN$3Pr!E9ChZcpO_Q#ST%!8piQf-D??+AEZc)gY4Zu$Bh<SB}n`jv!RP&rJ%9kpK
z)@#f5T7b+=wZ^2x=egfc5PB$9nc?lHm=Ro~Z~!*N40GbS3d#w7`{<mw&M?+bv1Dl+
zmd6wnaS(9{9{_~6lpJt5IU~RnoQs>mp?%JXThHAS<5sayEq$z*o0nte<|RlN%TjY?
z!hvC`;J#qmzJj+RCg7sQ!1sl48_%}3ufh)AO4$C+TMCltPmxfe-{-5))8es}mO}4{
zi9>7a(~CvW;~X7R%3Up0%f(c*_(-BPz;K~sh^wnkxd;mVF+YVq5aaoica@V5`QmXZ
zO1&#4wx93pyn30cDvJa9usG(>6q2bk1hf*Vf&!*A*s6BeVhCUsh4~yaUIm|PB+N{N
z<v;|?>TQYQCly9sfDRKDeJ@6VRlTxTzbcb5*0-eypUe{%vu@~c(v<z1geaVG#7Mot
zN53n9)`Jga40#O!Pfi%|-jN>bjoc{RhZ2&}S(M?kAtOm0lQ2;QIvHIEb%J)Y1`%we
zw6PyW&0+^IV#j&~QqP|^<E(WfQy-~PVX8KbV9SKz<t-)@oJEM#zvdgM;lhTNJWDF7
zd@P;aGX|grZ!oVDfqmosQ$%2})AP?G?E5MEXO(q>q(Rl4)U(e~1G^3t!bQoRmn%j#
zX^Yin6w@b6TK2_M-Ic48h4Q_`p?p%l84e<|Cx*J<75nZv!jRQM){#&DE4s*Dz}#*W
zC~o_pblk$SI}vN_DFsv3*6VU=S6dgyT>fudZAKQ#pr*J!olOzOrmNi!JU)^XdbQ6&
zpQy#8P`sO=|4)E&UyO6F7euBYh;)e}yhk3i_qz<d7gE8gh?D!nSM_N>6vwC|CY4Rk
zSF_9ZrA=fRU%-BZft6sV;!@lmC8{(F%73GT&H!@4d}?D5R*gN?sOyzyt6OWkMvr^@
z<7(0BS}Iwb^bBKF<ii3uwK9GT_08CBh!8x3Sd?OfoS<c~C`~`f0DPi;-x#6}NLLgy
z8q)nL7OsRyH>ORiNj)_U4IM?rcbv4Gsr#El@BJE|)A*3S85?UgZ7iOwCmQLre*td=
B7jpmr
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-013.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-013.js
+   Corresponds To:     ecma/Expressions/11.2.2-8-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-013";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+var BUGNUMBER= "327765";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var NUMBER = new Number(1);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new NUMBER();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "NUMBER = new Number(1); result = new NUMBER()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..80dbbd50cb112fdf4c2be739841958a57df43fc4
GIT binary patch
literal 7117
zc%0=~%We}f6m`p60t8|Ot68?HAe2`nm_};S0fN%BYSM}wa%bGctvilvhcrKe1b+r%
zg~Wotz;>F<B%L_P)Dr@9Q`L_%z7L<{d+Ul;lc2oYKrqPfFj{Bu1S|po4rtH;g;M2R
z^<~wkO$6MWUgHwXMgH@B0B*@uZhZSbWEdV0w26EI85Ed?8Y+nX=HM8I!64R8xnyA+
z7G)X=2LOjy^a0{qN&yN5KE#M=xDcL1hvtIeu%5pr$E#kkR@$z(xwA1hcLoy2s_MBi
z7KlNj;XXprI)`^xPN35!L!3+F9zI@u_UMS8NACaD_VzYk(x}XQkd!|CHd~+Wd%IOz
zKD{a@yyDizht+v-<d4}o@`@a<m1<?riW~1Jv<7lQ)OO_c)u)^Xhkl=(LvP6O!rq(8
z-d4fewU(PtpRBFDcy85|UY|m$0t$2@Ez@U+s3p+_MMy}rRqycS5JDGm7#EO<8sfrW
zVP+;QMkYX3Zz&X>));jG+Du0DtsF(HM$5E*-X<NaFAE7dS->G=o!H@2D0?>v5OgR2
z!}W$3{;mRAi9VDu<R1_{HQ|iT4tuOObfZikN=ZgHlLDWeOcu7c%ihMAC{$3}>ZR5n
zrj#HUj=$2g(}AzE(*ecW(w{Aoz-cK(;5Ebq1@oY%zh<ka=+s9|brvhGyeB6r)aipd
zqQPj}l&Ak{eoCE0zP<e1ft*{;&l>AQ(yl8+Lj7aVfMGzSaY?op)QX`^#<DU@;^UN0
ziw!wd57p{)g1eqta3|%POqhO@#EfD5fw0BGqkejyF$r)H3cpb#u*H#faucdX!pLY(
zX_*eU*_l)4+KN2p;(wEC7o?#Kp8kK%XH)3dbS2g%6+^`gJvfs71Wl%l5}ge5e*%>2
za$L}^icCQec8MasM;)~LcNvMUrlO!CPtFIg>VuvZk8nqFePA(H2btPtm8xQ*s_i1=
z2?5rIy_c8b@-R`^to#0sN;d<@2_ICsNLQV8-B3HLr<RsqIbHJYjdxcqEn9iWsoZdu
z<daw;TdTLnklzLS0ttp^phgxoa)RE%ymaRj2Z)Ipb7QDFqFq_f7-;vCTzET1yNT~h
pbFbCZgD}z5=;n}-H%<SNFz3G^>kL_B?wgK`n^BJ^YhNa&?Qa(X{-gi^
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-014.js
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-014.js
+   Corresponds To:     ecma/Expressions/11.2.2-9-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-014.js";
+var VERSION = "ECMA_1";
+var TITLE   = "The new operator";
+var BUGNUMBER= "327765";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var BOOLEAN = new Boolean();
+
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new BOOLEAN();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "BOOLEAN = new Boolean(); result = new BOOLEAN()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..87a6c892fbb55b76dcf2f4d93e8f614801940a1d
GIT binary patch
literal 6274
zc%0o>O>fgM7*5L=Oh^a`!GTkbLlcyVae=JBx=!m<brY#}MQ-A?W^P>BE~USMJO7Lu
z;>N$=wfm8NByQRzU7?pMukFY0m!J2w9og+rTy$C(`Na#)njE#Qyk%Jp=J&0mO6|;j
z>w2t%EvKO8IFtxk{QlIk9>6STa``3V1T`o=#vVl+Nx}jR<%i$Gx+Z}?jrAL*<Q8Eu
zuAzu;k$}iCz~qvOj{`}r2<93tK<!XzAvp<}#d{!k%cXkdyyg^!GN&*EnZ$DSSd~c3
z5!G;C5$(?5J%j=Lt;4YpVBCvW`)}r9$N$>c(aJj-lAE<y(V;)r>(I;cCpRsJ-i3iP
zcmMOjCiwB!`uwQuu2<^Sa%yRL(hWRim|a4Yid5ZM9%sBOk;HAVPU{k$gh)3iMZ%?e
zg$E*xS9RJB$c02)*0GQV3o|nzADV!8v#U_Vs>VD5d5=S6PeF=#omE+L-X<NaAGwIU
zJR$+&{R!n%D1o;JDN6B`v^Z(D<m|o*XfNC-W5`?JXf<HRXGeMmb>>8wHrjk*-v&8^
zy-Onw)(SyTa3_dR>~8|G|5=|OcQmPZxTADQ#g&g?pvLSms4ZKZ^&+tU>&9byK-Snx
zFF!Ak5Gm(po%h4~qPuF!ylbn40-u6$QMMnc88eHFt@!(>YOs0rZA<MAzK^MCji}T~
z7`!KAuCfp9*Dv*)^Q+zG?;>Iu&CNscR2(M!t#%%KpCWNgIAmQJb{XlBGje?iNv~C+
zs4K88pdF;HSg|o((ycnE<|JG?qxL|}d`cPh5r&$9n!Q>dakz3Hk+g!{kZdyOGH=gk
zOH`}ny7^-!XLyA*zJNci4p&CWeunv<0OdZ&B^%Jq;t(&%9_lyR&y+3Ej8nyOP&u(*
z1I@+sQGGU|%@}vY&|P}DTEo4J3Wkb_y4aPFhzPJY>;MkM)+|w_dBylQE>#&oCak>b
z32>s|rqYV3xZAtX)Z$)x*R}=3cEjssgy9)fniT6_f-CB#Jo2dXEfc-(ETG~1m{Q?J
zGEJ$5-floNA9BOzZWDpTzYrK1&GeFL&R#>#7;?b;coyq*W2H>?hNWFO*DU`9Q?&3K
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-015.js
@@ -0,0 +1,40 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-015.js
+   Corresponds To:     ecma/Expressions/11.2.3-2-n.js
+   ECMA Section:       11.2.3. Function Calls
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-015";
+var VERSION = "JS1_4";
+var TITLE   = "Function Calls";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("result = 3.valueOf();");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "3.valueOf()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..0632656da96188c756632a945ea6330a1f3d6f31
GIT binary patch
literal 6523
zc%0=}O>Yx15Z#8-Qh^YH0}`hkTUF3jLL6WTqG>8pMQO!`o{*5c>m+X7b!0oFIr2C7
zXWS4s{sm*F$!?O3v)MXnfL^Nj<L%7&`OS=7*=|u>aGMwfg%i#i99=p&$8pYB&~^69
z)g$k<=d%`e+#S8fr9{ZWx2KMCA6B{X?Wc$nbVl(3_9@~>5*BKxAo?ww3lavySifM&
z$}}v-H53UP5)wH8h;JzeIFzJLFxPM)x{Qn#l9RAeSch@1RIHVctM1PAn7eZg636oN
zT!l!?5!G;C5p9p*J%kB-)#6wPaPIl;-m7ug!GG;+f9D+y$<0<|4Cs%=2K2P_(X$oM
zyD)L&?R|N<3~~IqxHu}mYvo#{WQ~@G?a)__<%@_?VKtnk0pmT1B)$aiv@Ow1NDPBA
zB-*NX_%MWV)}U>`xR8j;8Wz&v;oMxvMJ^!TXe$(v)tN^y-r;bvA7B*o8mq9zxKH}9
zzON+ka-W2VcVot>qXgaVQIz7kbU0}=<>+@6(025pIYZupMyrYZWOmrQs3SMZ^r7V!
z_B9xXV{g-hi<RLJ6x<;q6bH*7?7tTm#|<qiK5i*ntc3CjOjKEZ0GgLg&N>O$|8(K8
z))Q;&+vDd662dY+YrGrf7hP3T=3h8X6b2NWOY(hRtr*#4EXCjD5`vyFzrBa4MyOV2
zQ~kG@RX?rX%vMAkFgcR0+1WX8#%Xcok?bb!`eaIbFj^;9gM2^g$Eu<QBN2^OhM=pk
zi4(uiNA=eSxM5;i?^FA@KD`v0K<yzO#`u=j%p#J0vq(`}U>&p;Qr+Z4`p)Q~=C7F@
zGhd!<Ff;exT%H^1>KqE{+l$!@iFpy4V~77KQ0~FFWWBU_YeEs<qYUl+u3*_K5^zuj
z%f;|jebz57CWIro>bA($D(=jw_fu!0de|Zo2?wkldjpqZbyTQqc2j>x|2PN8lojG*
znAlXAJ-@s4;yTf8ZdoZl)$!*yp^V2JdyVQ8eY;^po#6N!5{|_*n4&3PmS-(>&1I?=
ztto08DJ%3~24(#W3m?RkHBmDrzke7-%=AudW~zZ7hVwQ*4Ni=(F*%wl>~ybpiRAkO
D!Tv@j
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-016.js
@@ -0,0 +1,40 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-016.js
+   Corresponds To:     ecma/Expressions/11.2.3-3-n.js
+   ECMA Section:       11.2.3. Function Calls
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-016";
+var VERSION = "JS1_4";
+var TITLE   = "Function Calls";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = (void 0).valueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "(void 0).valueOf()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..afd2dc722533a71d2c89709da600c796a7ff2e15
GIT binary patch
literal 6319
zc%0=}&2AGh5Oxa`DiA_K;=n1#q6$hSq)KRs)TXIO6{Qs$^$PB;lbE{e$o3NQD!c`c
z!wqrcEf_m(c9U$JWa~`><PxoaKF^=OnX#whE+b{HLvUC=6}&C*C0a)ao%67d4r+~K
z|E(YJE<xUoS>rJ(Rr&ifgdV~wFTMQ?3yRMfIV1tY0xQZR0~IFU5?#<J9L4$tOV(y#
zabcinh-gIB5Fov!7LrKO7A3;KMffriS}H-KcKJSx`_)RbcGB>6uExBbE08pnZ|3S$
z5rLV3`+`|Kf%h0D$k(nQQi5_XU+?Zs!Vdq9ve!HB7)W84BBw!rEZ3lC)epWagWiLQ
zV}JMKn^mym&*j-s>)ot1>s4oAc@#&1R;*OPj7g{FtPUgIS6Got(9Xz`+=NUsXhD*#
zW=8-+gyc2aCX7pkg=!M1EE*Q3!g`_t7VTK0$h^utf$^RI&%TFIBAUF;+mkvOXMJ1C
zh|2>SVbM<sr(FrWJqS@oS_%o;?x^u|HPCi)P{EM5z|nf5G(9@pUDUA~Wjko~iG2gc
z!R;~2xL7%ypy7@%Wh7h$V*kB7J8l|M2}oDV;>46sVWPoHL(r1y2;R%U{-+C%jR9Gc
zz+HTvVksTRXH)c({9>wV#)Avg!BNOSxh&le^op@f)>2$%WrLjgZ6BuEkzSpT_21=Y
z{dxJuc@d$zm?&n<gvCi~b{R1i4kNxx`AGk+kFuqL3RXd<!f-5!v2+*f4s5E+7u3%9
z+-}i@18y6{T>ozZ?uJ}cKoNR-Hd`Q>Ep|^2xf(00`T1wCC+Z5Vl<F54|8t-`fN{kK
zsbm3ya7z^FJzCJgcb%v~VkKb%B$uOC_4#!|o??#dO4VVkHb}3aeo6a8_k9&CGaPIb
z+k;DScbuqPb|8O8&s6~A0`Cwyx4ybcu3Imh6l>b`r7b9XNzYwlH-p=5*nnmzUO=*O
zm;&c$VpruENMCU^*9*`LCQeutdKL?-eu9OMQmmTE7t`MhtORCzSG7l~B|c`Ax|Vpb
SKebKufHiT>_u`cqfPVlOF9VeT
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-017.js
@@ -0,0 +1,40 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-07.js
+   Corresponds To:     ecma/Expressions/11.2.3-4-n.js
+   ECMA Section:       11.2.3. Function Calls
+   Description:
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-017";
+var VERSION = "JS1_4";
+var TITLE   = "Function Calls";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = nullvalueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "null.valueOf()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..ffa699e488bb803d2ad72111d117148a4f1de846
GIT binary patch
literal 7291
zc%0o?-%ry(96wM|6GKdV<Hd$22r-C?L@7($m^d;Ep@m1y(H`qb*DlwaWB-Rw{%0mW
z`R0G&-IcA~)*jt<9TQ&0?#K7OKR@3e(`mcqp_1+*=#-90&>*l076Aa~fzt)$nsI2p
zH|?N>fW9ft=pGJfskQ>Z6Lv~ZUO$5b!*dVqBin-nQXKe#loNjs!6o*cL0W&<k%gOR
z1w@d-4!}O9eFDiVH3#_=UtmN8IUhD-rb9}w-zYs~>t?lL)s75(^LkC+ye5*QWs1Ez
zriegKkoyk3_6WUYwt=o%1cf0J?#0WkccWzcpF-H)&3l3*k#jMjLVwLxp=Z?-Q<Xv=
zu#H1=>+73&(Bljplgn+@ta??67N2rzF4BC|(OBpTF6Tj^zh|e=$85cPdSIM>E>};K
zD0PW#yneN_^LAUQDyx0?Fe#*{$s`jz#ITa8f(rD!_^P;Jvn7P4QCLVJp%x0MM8d*E
zSd2x0q|xS7!byeU0nj1LqMz6*B34ij8ly4^WBpu6@yRmwA?YTV<EHFI67bLk1q3%-
zI{Yptv=Kj4Fv(j;czi?4_6~KZHxyB_hvq*^a_C@YZ+j_$H6apxgxEvQJb?P&*@8N{
zvQdlkqC}O?*oF~keWDt5Nzh55eW$Cqr3kE%t<FD>VHhg*Pm6Tp{32QuFR(9x3w_69
z!llVx<|l?ON&A{(#>t|hzJ{h{mf{R(S|>H*K(0aqbqdP3f&=kyMxH%NbLX56#Tj*R
ziZi7rhuKwOAJ|sI=cgx2?0XX@_Pi-&(BjjVi84>i{EX}|5SWPo<WEK4S#U&gfgFRq
z9S+9R^PUIESh=}es6cAF6%V#UBuv$UeB_Y{3uEd>IE~ySV}sI08YtaakDW4K70{^M
zp3cT7c*bi8_X9eV2!iu(OrM}dxKOlPp#SHf@`$a|AS<6ti8uVO_nypK(lM%zs05={
zhA?Va9T^Erov#*`;kixtY@h<e6ax#vzObOUKMYhVyVU=qFE4;(&O&KBs&%v|EoysW
z0vO$0TXpg3`mPp1aBoYTTU*~%QulKY(biZ8#V9MA5!?WQQ_eEhmGPOkhng}|<|uIH
zWunNDfaV$|Dk>0vu!GA9@XeS3%Rom`T1pz7>~WS9I}?nI{Dva;eu>XXd`Ld&&9s^{
LC+8curaJ9EX3aE2
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/expression-019.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          expression-019.js
+   Corresponds To:     11.2.2-7-n.js
+   ECMA Section:       11.2.2. The new operator
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "expression-019";
+var VERSION = "JS1_4";
+var TITLE   = "The new operator";
+var BUGNUMBER= "327765";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var STRING = new String("hi");
+  result = new STRING();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var STRING = new String(\"hi\"); result = new STRING();" +
+  " (threw " + exception + ")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..b7b533165315ef7ab7dde0445a9d1f5f0d98cf16
GIT binary patch
literal 55280
zc%1EB%WvF77<bYneGyRvqC76<h$=RLG&HTYX}jsR4NB80+2n$%;`L58CXT%tdr6l+
zf^)^CM-ChT331_sIC4N-cu0s7+<HbrV#b?&d1w6`+hga8)F$h($1~sjzHdJNe&e08
z-EQe<wY-m%#_B_CHnDOjO-qtgHya(PvcCDj_O)%*Y$2(<;G9#|HOpT8^JhtVnVeM~
zzI<1~no`%%ZKUc7R&32QoT?gw&z5wc8I94p{vfAJ`PF4&rz))>X@+L^D;U0Hy@3o{
z+tUzssxy?sL8C1jYesYRG&#OqU8}7>*eov`A1f~$S2A4Jwo|sD*$6ATQ{5+u-X5#(
zEGgJC$)E2mF1|ZnWB<3)&)!9+oZ7H=10ve;*K}>UTix2`Wy?8IP+hx!>+yRc81kR=
z3^_}V*VbzrRW4?{NNd|iGJ$2ORMHGtwrs^lhol)I*!B1H>`I-pvU7KH=YFNS#SNlM
zON%R47ez4T3sX5Z<@=;y-?m%V78Wcry|k^;p=utM$iIbpyJ@v_#a^)X&7;TUQ%P-V
zH?+p}rOTIBmY2DjzWStvk!2AJZ}+^!X*22{XPRtH(e=Tl&J`*-giss<6F<dv4Ow1(
znphX62VGEbvrTKUqITv2Ievr*0`8Hc2-nOFvpL=;XRtnJVYs3h3hoRwjt(VBLAr3(
z(Vi_~t+{Wz?@KGXG`La1Rc4TG&;offI{3{yE|1C={HWFMn0VcI%t*<c4t;crfw~9v
zkCAG-yt;)cNNf#Rqp|lzQo{_phKJotI!>PsP{%ctAv;5-932@=d*2&Do5W^VQzt@5
za(*t{^c>41IzUH*MD><pbh!Ay8G0XNTdLAR!CWDUUeU4dAivoq(4gFW#(7X&ccnkQ
z(_+}2_V`nT&EUZz-?4-76aujWVh6+yh#kJMV+mph#14oZ5IZ8ojunU<5IZ1t6g+ms
zXAEiI?9gQ4owlJ;K6#jGrZs5|sYN~?T9b9Z$PsN43-dr?M6`h6#dHA1=zDhnhik0p
zrg|_KD}Qa%xF|`p?si2S_FJT=Y0$HyagWy{bC2`nc+UZEVXXK>vQ2cv6`s_96K<Oz
zshyp<&ynN1GzR6*){d7B%sk`F-hC?tiU$>}s0YY)B}ZK+?d2n#sND;R<lCkg?TDEu
z#U%H=f@G}d_-uv|wZ(GRM9~<=(G!DWm_{Us!$b`o7{LO?o;Wh&J8Uo)ES!aZ{(FAI
zcQ%`l)sKwKP&{KjT`)&8!Zl<v9fUwSF+0mHXreB)TMbeWY(kB=B;;#WN}bG-5PDn-
z^(g6O!U#(@;`mxQa-J8U+XeGjR@FNWl-<4T*}lhyx$j0#x)gmi#RSuH$!ea?^2=&Q
z(|evQA?1<i0--g<V(>^#N4}k5kbFFss^nvFPC$a_bl*8Y%ukXL-&JBzYP8@{KqrLk
zFpYr|=4ppR_t^An0_hxWNcS_zj=G5vYHX4gyEKzGdI{Bp4kX4GXF7@OOeZ{v1PnIw
zeIS>D=t%`jyi(~}&^XE~nT+J&>3M55cg;eTnY6x5R8{7Oi;^_QDMJTU22>f*Z4C^N
zF9TFC;YvhO1=J@{pFn-e3BLg96R1yI)TitcHoiFpFXsTc2;?G=i`+Z{$VIux3P3K(
zX*vgTkuY*m&};HI1%TKiLfVu{*FfwM;I3JSJ(FHY7FFzd{;DLMcDE}cBmNt!kI69N
zbox{Gk$O<UNIBpV6)7@Wie>qFSs3Cxq9y02QnlpZJyvmro78N7Ha*+V^{`kdyNfOs
zg+Y9x%zn^D6!iV3e+djvaiVtes4xZf{zQ}1APoRzDJ4hGldP0M02`SSlhTw%fkBeX
zK^$Un6XM3M?6T-RMbiUk7C;^aBaa?Vi9sH{*~5%nr=XF|wk?}`{V%~z_)&~Azze#n
z{Ch#L^3up05r}LI9oLIG*%cI;8pxm_97qfqG!#V?VjXJqz#@{^8Hm7%xRM5*j^aTp
zSzY9jbWC9QWE(zx^}<pz(uxob&qAHKoHKQ1_jO4+?`~H_Ui&*%ACud#hy;taZZp1-
zE~-nXCIDn&D8@@-U?`TM7y>I8ie)H9tP|c)C+VH4h$cFpo;-PGFz*ZeMqhZ#Zzy%7
zqsHh&tkZ+t={QC%TW{M0EOn&#5MiM+fva=;#Ij5liF@V*o_V6+a&mAl5pi+8Xrl0c
zQ-#5~*Y29k=j=4Zri^XENJ{dr3uSCmMn=rhrbQv1{}MzKDbWIwR_=9Vy_<&&wvClF
zOEwL?BcmrsZQG>CG*m{1M#j-Jb&_sOyzdlOmYfdS_2`0gRAL~6ykAV&<ZnUHduf2)
zK58vlGpPP6>!#U~6^vv=uO+38LPFPvs!8l^o4jNACqXd$_5i~pOBj0LxWAt_#d9GM
z%$*u48dQH21gdZOK($UEuL=oK?lf;g8sHbw@t38sL%SzO;FT14%{pGj^7Qp&)Wm|B
zAPZe`IcK`$m!M0Y5ETh@Nzf%hmjqoBbjf_{l3J4_Z*>j(Q8HmOfzLpf1YPn3=#pF0
zg~53|U2>`)lM)I?#S!K}>;$nB#7+=9LF^2NUJyIQfi8%hAa>>(!60^m*eN(fLF@#v
z^W=z~S8^tHe)WnZopZM<Pl^kOogj9C*a>1Mh@HGl1Y&1w%L^cOf`WIF6ug}itKhAf
zq-vv$K*TGAh*uQe321(C7$~6mf#%OQf`R7uf$A@UKow~Il$HSi=?|p8Fr@!V&PadQ
z7pqq#?285aV!^&x9PBPS-3a?)ahri+O+BzL7VL`!-~7(w$&KC{_QisIu>{GYVPC8S
zXf4<mD?(I(eX%md3havo`(nAE3HxG&aUj?i3--l=r=#f5f_<^XYPgT#rzf|+dw5N0
z*==^8z9ARCHq<8u$9eqwEWOLl-OZi*mFgB#Z0brmYyqoV#ul);Wo!X!Y-6smvSp95
zD;{MlV`cNC?BTIzvTeYePKPX4Td!?Ynabbz{619WZgp#$RV78xE`<oYHIr7^4Hq*u
z92vT?Y96)}W4vZorsWa;h7e-e3btuy$4Y7XVzUY^kb)yj!qYthON49YhS_9Z-9aN9
ade<qO|DTf5*+3|cH^!bLIcc=mPW?X)eKI)!
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/forin-001.js
@@ -0,0 +1,297 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          forin-001.js
+ *  ECMA Section:
+ *  Description:        The forin-001 statement
+ *
+ *  Verify that the property name is assigned to the property on the left
+ *  hand side of the for...in expression.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               28 August 1998
+ */
+var SECTION = "forin-001";
+var VERSION = "ECMA_2";
+var TITLE   = "The for...in  statement";
+var BUGNUMBER="330890";
+var BUGNUMBER="http://scopus.mcom.com/bugsplat/show_bug.cgi?id=344855";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+ForIn_1( { length:4, company:"netscape", year:2000, 0:"zero" } );
+ForIn_2( { length:4, company:"netscape", year:2000, 0:"zero" } );
+ForIn_3( { length:4, company:"netscape", year:2000, 0:"zero" } );
+
+//    ForIn_6({ length:4, company:"netscape", year:2000, 0:"zero" });
+//    ForIn_7({ length:4, company:"netscape", year:2000, 0:"zero" });
+ForIn_8({ length:4, company:"netscape", year:2000, 0:"zero" });
+
+test();
+
+/**
+ *  Verify that the left side argument is evaluated with every iteration.
+ *  Verify that the name of each property of the object is assigned to a
+ *  a property.
+ *
+ */
+function ForIn_1( object ) {
+  PropertyArray = new Array();
+  ValueArray = new Array();
+
+  for ( PropertyArray[PropertyArray.length] in object ) {
+    ValueArray[ValueArray.length] =
+      object[PropertyArray[PropertyArray.length-1]];
+  }
+
+  for ( var i = 0; i < PropertyArray.length; i++ ) {
+    new TestCase(
+      SECTION,
+      "object[" + PropertyArray[i] +"]",
+      object[PropertyArray[i]],
+      ValueArray[i]
+      );
+  }
+
+  new TestCase(
+    SECTION,
+    "object.length",
+    PropertyArray.length,
+    object.length );
+}
+
+/**
+ *  Similar to ForIn_1, except it should increment the counter variable
+ *  every time the left hand expression is evaluated.
+ */
+function ForIn_2( object ) {
+  PropertyArray = new Array();
+  ValueArray = new Array();
+  var i = 0;
+
+  for ( PropertyArray[i++] in object ) {
+    ValueArray[ValueArray.length] =
+      object[PropertyArray[PropertyArray.length-1]];
+  }
+
+  for ( i = 0; i < PropertyArray.length; i++ ) {
+    new TestCase(
+      SECTION,
+      "object[" + PropertyArray[i] +"]",
+      object[PropertyArray[i]],
+      ValueArray[i]
+      );
+  }
+
+  new TestCase(
+    SECTION,
+    "object.length",
+    PropertyArray.length,
+    object.length );
+}
+
+/**
+ *  Break out of a for...in loop
+ *
+ *
+ */
+function ForIn_3( object ) {
+  var checkBreak = "pass";
+  var properties = new Array();
+  var values = new Array();
+
+  for ( properties[properties.length] in object ) {
+    values[values.length] = object[properties[properties.length-1]];
+    break;
+    checkBreak = "fail";
+  }
+
+  new TestCase(
+    SECTION,
+    "check break out of for...in",
+    "pass",
+    checkBreak );
+
+  new TestCase(
+    SECTION,
+    "properties.length",
+    1,
+    properties.length );
+
+  new TestCase(
+    SECTION,
+    "object["+properties[0]+"]",
+    values[0],
+    object[properties[0]] );
+}
+
+/**
+ *  Break out of a labeled for...in loop.
+ */
+function ForIn_4( object ) {
+  var result1 = 0;
+  var result2 = 0;
+  var result3 = 0;
+  var result4 = 0;
+  var i = 0;
+  var property = new Array();
+
+butterbean: {
+    result1++;
+
+    for ( property[i++] in object ) {
+      result2++;
+      break;
+      result4++;
+    }
+    result3++;
+  }
+
+  new TestCase(
+    SECTION,
+    "verify labeled statement is only executed once",
+    true,
+    result1 == 1 );
+
+  new TestCase(
+    SECTION,
+    "verify statements in for loop are evaluated",
+    true,
+    result2 == i );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled for...in loop",
+    true,
+    result4 == 0 );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled block",
+    true,
+    result3 == 0 );
+}
+
+/**
+ *  Labeled break out of a labeled for...in loop.
+ */
+function ForIn_5 (object) {
+  var result1 = 0;
+  var result2 = 0;
+  var result3 = 0;
+  var result4 = 0;
+  var i = 0;
+  var property = new Array();
+
+bigredbird: {
+    result1++;
+    for ( property[i++] in object ) {
+      result2++;
+      break bigredbird;
+      result4++;
+    }
+    result3++;
+  }
+
+  new TestCase(
+    SECTION,
+    "verify labeled statement is only executed once",
+    true,
+    result1 == 1 );
+
+  new TestCase(
+    SECTION,
+    "verify statements in for loop are evaluated",
+    true,
+    result2 == i );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled for...in loop",
+    true,
+    result4 == 0 );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled block",
+    true,
+    result3 == 0 );
+}
+
+/**
+ *  Labeled continue from a labeled for...in loop
+ */
+function ForIn_7( object ) {
+  var result1 = 0;
+  var result2 = 0;
+  var result3 = 0;
+  var result4 = 0;
+  var i = 0;
+  var property = new Array();
+
+bigredbird:
+  for ( property[i++] in object ) {
+    result2++;
+    continue bigredbird;
+    result4++;
+  }
+
+  new TestCase(
+    SECTION,
+    "verify statements in for loop are evaluated",
+    true,
+    result2 == i );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled for...in loop",
+    true,
+    result4 == 0 );
+
+  new TestCase(
+    SECTION,
+    "verify break out of labeled block",
+    true,
+    result3 == 1 );
+}
+
+
+/**
+ *  continue in a for...in loop
+ *
+ */
+function ForIn_8( object ) {
+  var checkBreak = "pass";
+  var properties = new Array();
+  var values = new Array();
+
+  for ( properties[properties.length] in object ) {
+    values[values.length] = object[properties[properties.length-1]];
+    break;
+    checkBreak = "fail";
+  }
+
+  new TestCase(
+    SECTION,
+    "check break out of for...in",
+    "pass",
+    checkBreak );
+
+  new TestCase(
+    SECTION,
+    "properties.length",
+    1,
+    properties.length );
+
+  new TestCase(
+    SECTION,
+    "object["+properties[0]+"]",
+    values[0],
+    object[properties[0]] );
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..3c83f781854050e9d1bac3b4068ee9f62065e5de
GIT binary patch
literal 15210
zc%1E9-EQMV6n1~M+p-b@B;bY%vsYcMNW0|*t<s7%&1!?XDUhg0AXrVDX)@HYqw$1N
zagW3+aEF9=C=d_81@FMjIEg3m8QXR2#4X;7O*3PEKIc2%oS8G@RM}`~<D+UHqwdk?
z)a_9;FxCyj=(yb*<D}92to6KQxkGGJ_vAHIn|SQ#;1k1mlV4R;Z@)m4ppK1Cv1KEQ
z7;zm5)eXLT#uah8vsi!gOV;ABTq>bR*B}mIQvmgrMi)DbToOzroP!2|(H^73=^Z`f
z?X7yP-8gSn_r`72y)lT2)slT@gkg$o3HJlCM<Ki&-f`*jKR?>vKL{gEKc%0On>HjG
zjW!@9mwzso%ZvJ#t*p4*;vMzctK-*&Ao8E(5&3|(w;S!VdL}f!FVOnf<g%<(D#S5O
zk0FK!+>A_lt^YWr*z-7jtqHy~3QyZXK5EFegInbt7H`5hEqh`Jat|qMV=v0X++0`>
zTtKup5-46;XWruN*OZ6&C2z&F?Vh>4uun2rzpeoSJs}RFH;Qp0lstL+TD9>dGbrix
z+5B?_(9_^SIYX`>QHu^!ua4|S?A(ZodeDoJV~O;mW~NO)oecT+fv2B?Z)xu~Z+~@j
z-uWI|zz~s^Hlci%kP68-K!s1ijF@cKx(Wtc{5oUfkzqWTH!J11J?33KM_ipw&4;j>
zPhB>b4O~gIF{A>R-GIil`@~aj6aOZcEg(u=ByvN{Fs<J6@I0K5d48EJKuvs|(<~#>
z!6f-;(!qC7I!Ksn-{u_@vk`Sn#%ZiXr-xEeX%!{H$Xq`tcR*6s0+M<Ul9c(>eEhi7
zRZhBUjs_hJ)BuIkRc8TRy{pmHekrTWWwj$^b>g}<MnEhJrz^66u09BKHFkJc71)zo
z%L`gdD{E#bJP@I2?kQfCES6F)T-tD6KhwnSV<>hBB%PpYD>5Cx&e{K&4xKvwg6POM
z*Thuc&moJ(nM0dw*0gcD+hNnG_$O$`Yo%cWciZ!`NKmAmKbN4R`zfnqFo^uAlvrBM
zWV$rAKV3dKi|?3=Jw|rx&GO~#R>mjrb0}m9khi9b-+Xo}|9u45^%Y_LS&;GiTVkc;
zD9V$CT=?Y;zy%qN07ZmdDMhl}rJmFz(O#{Rpr5w^f>I9cd?zn)AXY;ju=OS#`Gb$M
z%@l(u@zKoPIE*SG3k{jD;5K>3HBYpr?YcvgI3@}Xz(rHVG<S2&DGQuUigEwso6Jsa
zqSNRCc8cSmZ_UHQgy*OUQAIkzyvN+l?tC^k3Ph;D-5V(VC0=%CF@%I=hngM06N;=W
zoMsm=!-+PRu;o}dY>suQnLWQqxde^zQL_se**p_!W!WN3@V~!A-YKCxM0M^EQ1(GO
zRDjl}Ko^Mm>wnyBa_77#e4nQeCp<;_FRu+-6yxCv4J*2V#kOb_#iXwOFKRLQJ5)@T
zl~_Q~Z##Fs+AfR9vY0F(%VM%DCd*>7EGElh@*WkFWs$ma!-{873{@L(hSkuJjglL?
z#XWsTF%~>P4;6~fBKi(Oeej!PN@w^Tf~d8xGCj`y!X$Dru0V!<lNXU&$Df+tP$|ia
zK^>Ym`V>RMuaVAl`V%GS{M<|9ihrS(=*OQizn$`xC;$JNU%4@-VQmPbqNFK|VDbM4
DLUu0e
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/forin-002.js
@@ -0,0 +1,77 @@
+// |reftest| skip-if(Android) -- bug - nsIDOMWindow.crypto throws NS_ERROR_NOT_IMPLEMENTED on Android
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          forin-002.js
+ *  ECMA Section:
+ *  Description:        The forin-001 statement
+ *
+ *  Verify that the property name is assigned to the property on the left
+ *  hand side of the for...in expression.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               28 August 1998
+ */
+var SECTION = "forin-002";
+var VERSION = "ECMA_2";
+var TITLE   = "The for...in  statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function MyObject( value ) {
+  this.value = value;
+  this.valueOf = new Function ( "return this.value" );
+  this.toString = new Function ( "return this.value + \"\"" );
+  this.toNumber = new Function ( "return this.value + 0" );
+  this.toBoolean = new Function ( "return Boolean( this.value )" );
+}
+
+ForIn_1(this);
+ForIn_2(this);
+
+ForIn_1(new MyObject(true));
+ForIn_2(new MyObject(new Boolean(true)));
+
+ForIn_2(3);
+
+test();
+
+/**
+ *  For ... In in a With Block
+ *
+ */
+function ForIn_1( object) {
+  with ( object ) {
+    for ( property in object ) {
+      new TestCase(
+	SECTION,
+	"with loop in a for...in loop.  ("+object+")["+property +"] == "+
+	"eval ( " + property +" )",
+	true,
+	object[property] == eval(property) );
+    }
+  }
+}
+
+/**
+ *  With block in a For...In loop
+ *
+ */
+function ForIn_2(object) {
+  for ( property in object ) {
+    with ( object ) {
+      new TestCase(
+	SECTION,
+	"with loop in a for...in loop.  ("+object+")["+property +"] == "+
+	"eval ( " + property +" )",
+	true,
+	object[property] == eval(property) );
+    }
+  }
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..775b94c1a520c4b87f50ea78f0428594596bf7e6
GIT binary patch
literal 3935
zc%0o=U2oGc6!kVJAXEtn3GvuRCIKBhqEM;p`cO2wX{q*Fxy@~6aFfWsW$Rz%4@}yx
z;My%o*0pY^vZ~@K%C&ub&++}RJ)9&G8r~J~pmDC^Q1LO_XN(QvV9Jg=-EaOEe;6mg
zyt<v^NujaPsWSGQW_kJLms|-xkZ=M+$rVQtM;0o`{x$n4qToK(Elt^5hZQReB?2ZQ
zfhj<KNhg2^#Ylj%a1kG8PHR*m3LDSJ?zdaL&RN&1&uw0P4wA?6?bxY6P+VHLUtCTe
z;Jv1S3kcgcNqsblhKAvXqoYp`vD2?*{CD|*#Z_)sHdOWZc2&J>U-)IITA_h<>wB~R
zc^8Dd+n$h5$=>VqPTQr(_%;pBceR8g&5qvJMv{lRc37&gw1WbzNk1Ps!kBnkuOPKA
z6{N+b%$C{}LoxwuD&GsTYvc-hpwYpwJPJ)33L`T+N5p7G1#=b^5=O|B2(NI_TLb?!
z^D+;666f(uV8w$UFhrIp1B}z9&TO`-fUcD^klb-l@QBDAjB%R4>LdC`)K_E=0b7!5
zeLg2!415QbKC@6es<i3(7|#mO`V1?v3Rm{FR)r0OS|V8<rVH1lmM&L{?M#K<&uDTL
zP7I3Pl<-TkH-o@b>K4~a)V3t6wB^C#sTXX2Z_LhcU7NSS!;k&G&4+&9t<`^8Mjwq<
zk#s3Y$#Fsp!T$)oy!7kH6H_Y--9+Z3^7#3em)T(UPX%vQ>mcaTj{1I$yrGFzlP&9V
n%+YNevFdt5t-ipz-U#laFVx)K39%wX-S@?n$LH>WO9S%{GAIIj
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/function-001.js
@@ -0,0 +1,41 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/function-001.js
+ *  ECMA Section:       15.7.2.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/function-001";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp( pattern, flags )";
+
+startTest();
+
+/*
+ * for each test case, verify:
+ * - verify that [[Class]] property is RegExp
+ * - prototype property should be set to RegExp.prototype
+ * - source is set to the empty string
+ * - global property is set to false
+ * - ignoreCase property is set to false
+ * - multiline property is set to false
+ * - lastIndex property is set to 0
+ */
+
+RegExp.prototype.getClassProperty = Object.prototype.toString;
+var re = new RegExp();
+
+AddTestCase(
+  "new RegExp().__proto__",
+  RegExp.prototype,
+  re.__proto__
+  );
+
+test()
new file mode 100644
index 0000000000000000000000000000000000000000..543e407d825bd0774882d7a098b583224079987e
GIT binary patch
literal 6258
zc%0=}O>@&Q5LL=&;R3@<51f1~(_vb!jGLiN1B3}_A)a0t#a3-m#mYzuA^(FD{|pXX
zIPou7DQ)Z|j*_@`T83Ua(Z{p)?dt8WT-EO}QgtJOgX)Rkp}<|Vfe`BOV2BPIt#|F0
zZJ+lDa(B%dmr<#z-?k8X2&>%m_ERh<?l5vhe1-*9l*a}tNPbInPUBz_>lZAkEW+Z#
zK+yovn5r>AdP^f9v7%>`2m=@6ZgOa;1dYS$Js5A-YhL5H<?ddLxw{u2X{@%HYf?o7
zW(MvHX8jqw2QU#b-ofno-rkE@$nk$;=;f|k22R*dkdw@x>m~EF{;^#YnRj8LUVDG=
z=|&LwdwoRSfpM?lHS2}Y_*kPw#Cc=l(mC#YCcY|^(fZe(AW{NxZG{!-f`R5ZWIUe9
zL=7{RY&AQ47$PJuZ<{bK6&A`P(q>_4CTt`oU=j8;ip*=wBN!hDaPC_eCBoxP9?sfi
zob|nu5t@fI#$uQ{oOUJX_9#jjIa5f`FjCXs)j&JRhf0RL294Ge&iv>o?ygSVDBFi}
zYSNGOX_6LWaC@I+T&$eh{u)z8f}5c2f7Zw2rV$mN^z>N@q4Eh#w74?{byOtyAOm~-
zyskMuL98=VTh91A!BQ3+pPm>d`NdS#jQi&(!g0XBxGdWb^@^!Y)>8aKRyN3)-wt3Z
zjP>e#s=uFG^_SI~78xvGLwFIDsnz=La@o8hVanMPo=JJY1~pkQC_kz(+?T}g*u%QN
zn(NRNNi!a`^R;p~?Z7cN{+n>RqSBO5VqPC-E2OH`O8FzMrix~6niA9#+9)+FG5(i8
zxew!tj}paV7ndXy={@?Oqu))UMro4-EjYQHysA$x)9oBOvg^<SV|7xDi|mH9PjpvT
z!!pCcBg5cQ+@2PyBKwPfqoXPTa)m;4q_NJv6O#cHqEv1_E2JLN{&%*avIW?}dbb4v
zcf}qv!|)O^PJwxFi9YqFy!7aMu9kY_Ss=%Wv_e~Ak=9q0i}!7tXv}{Su&S8t`P3e%
XmiVyv+x}WMmtkvmT<*~-Gr;}=U>fbk
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/global-001.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          global-001
+   Corresponds To:     ecma/GlobalObject/15.1-1-n.js
+   ECMA Section:       The global object
+   Description:
+
+   The global object does not have a [[Construct]] property; it is not
+   possible to use the global object as a constructor with the new operator.
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "global-001";
+var VERSION = "ECMA_1";
+var TITLE   = "The Global Object";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = new this();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "result = new this()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..6e10384cbdb2a51a1f96e60c2a50f32c191c152d
GIT binary patch
literal 6254
zc%0=}PjAyO6!*s8!2u8w2TnN-O=tsgKq#wVU4c$jH!abw$W7i7GcT@em(p*+nQz90
z3n#t>w!1ZHm%441Yz20i`fUI5{`vRbvnzXD3N<$d9M%pvi#R?-s|cYE3kPVY+1~Ts
zcmeAIayQK$ml7ds-<}|JU+r?U$B!^4xI<wV0*X17ge3+lOn(b>LXvPC>!;eXG7F1w
z14Tka5+X+c*(1#m5=o8;a08d%(^P38IZ2}09VPb~b-%gab~n#t?&cXt7RxhhEh2$q
zYT&+L+Pi>vPc1~0bufLtwe|8M<mkUK^!(Hf1IO(e6m;f~t99m4<IpS1nYYx!p7-L@
zt7Y)xudDN;w%c#|twt$ce5BE0a6Xu{boM)+A&{kdwDGmeK?vnIPhttD%0QzIjO4kV
zsAEdgqvk}QL;ywowx;AlVlI6UHVZ2=VKp@Y^Qfm$L{VcNDtVu);C@t6;67`y=%P&~
zSl?H2QgeqSm=7|_=};=#9%d<pV~IG4VmbL;4YZMdsA9-#plH3|OwW$;?&`#ivVCaz
zx&5}1tFZTI&c!Ma1P%8d6AIxnaQpA8^W&N!l>oY0mr`8$SS_@fGXiyF%vnDN`=9PT
zZV$;ix3m?^&jTz($@%H?L0Vr-Q%zZLf?}M6R2i3N`;Oi*amd<<ALdnqg7xj4T8a|A
zyBO<l7iRr=`DU>u!jFl_?ACwh+op916VV<EO(q03sBwK|5Z5X02{4ZAVm)6?jp%}2
zGa<D*Y~g&`P-?FJH~Dl)s;QvIygr{TP^%WZhPzBobj{36C8*1_QF2gW{?CDOSIH$C
zR*Kmnu81hIXSAZj-z|{Cx(Q)hX)eaE>eKUjJH;LOjcAFv+J=5b<B*Pt9_#8@<OJ9l
z_F7$vo0CLU=78~cj8qjs&e=3Q7;&t#t-4Sm)}NKqjOo}r>#D7VetCo2405~VfSF@>
z1=Xg+8aT(0x-8E;`i{%FUU+6uaZ0OdCb7`!+m*AoZ5v@se-E%SnC<D*o~f4nu*BQ`
RR5sPa*2*~Fi&bud{Q=Ju>|6i<
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/global-002.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          global-002
+   Corresponds To:     ecma/GlobalObject/15.1-2-n.js
+   ECMA Section:       The global object
+   Description:
+
+   The global object does not have a [[Construct]] property; it is not
+   possible to use the global object as a constructor with the new operator.
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "global-002";
+var VERSION = "JS1_4";
+var TITLE   = "The Global Object";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = this();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "result = this()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..f210c40d6b2cccf3877e488290f3b2568060c45a
GIT binary patch
literal 18562
zc%1EA-HsbI6n3}WU1*_Dc!7XGZB@~2D=rX97o}+`7A<MDS$YF><(=^+?oMU~kB4SO
z9|XZmaLuD|1FFOoH#`EiCqJ_jdwxA3Nu7&bjXgd&$H(7yj(sN6q@nMi-R1y6d-n<P
z`UDQa1_0pLv(LbTz3x}N&wG~VBhcIt_cR?G(B0oU0KCQSYQ~2@g#^Q62R%fV0|}(q
zbA>2-b{&9I?AqsLy<)dq$dcs|Aqv|7yO>S|#E0zJ$ffuMBO=7Pa5z&spai@9-EG$1
z>$DH|9(S8N<F@9`SV&w}PxS3$iU@RsxF4Yt&dIyVIu203GxAyc=#x8l?#_#y{ujnh
zMqU&mNxBv#C-jfSPUzFlK~L9&Zn2I|`|H-xy=9ol%NG_lk(;djaPM%xqh%UDo36`-
z4=KCZ4H|R+X~Xhd3bEVx5{<CMtj9y>bOH<dsE2+Ck!ztq>%=n+2nqr=zdZ^m8nSs1
zTBB*Zbi&%uab`os2#Yl#RCapbWbFZkgdU=RrdU{;2^%vLAnAu(N>J7q&N?mIjvU;E
zfy`&ZRe!N>-A=CGE_zXuUR%>ur_iS>Bc_~7ns>A$o{QFG1+2WstwApuk>)q9e>eK{
z?)95mV5rc!9!Xv1Jc2EyC?G!nevxM||4cNH-QFSuo+SW^9CUv5EXd`_%k_fr-%AGJ
z#})j^6>Z4^du0s2FTwCVO(0fjU6ZKggz*C0zTP-Cp*V-&cM>peEnOVG#5y>+tRjX@
zD6R(KR|dlWAA~hV;mt9IS27SA5Sx5Dj)`ZZI#B#>0>#fpnqbW1XEyY-3R_PcXS;p9
zas20!;n)P@*KJF@Mv=Js`8ua!TKH)FQRrH{_7X44a7ow(KD!<U>MCSiyz+sJS8@^r
zL4716h=QUn1752jN1DWOYsN*O%CfGERnsMp&zghWJ{?pR#j|?s+DH-@3rc#MwGSb+
z1}Hd!oDP&gjSGI@c-H9*gxMu@_hSGy=T_Ruc@Z2_!1CNcROjT?#eJ`j8G2)Q=A}9I
zeNl1JK_?Ut+#gUG_r82Nv+kTZ*oEY*oXq?8<uc3W4G%q<80H;6M-~M>;TqAiDp6e%
z$}S1gMV6WXh0~wNf<{#krz8s9&~eg2pKMGWuGa&*GL}g#EQ-|+8BjNpZd<<W`AQV!
zc#WIKI7NuN%GT<|q%mck&Q-akmqHdRQgcAgnE-O;xy||FhMF+6Qbc)Gd52`%P+xF0
zA!FeoBganT0MU@dm`=*MlC&sBsYPjeRSEW2L$K>eu$h~m3hKVWN%ppCD^&CDsvKDw
zYF>CYU(x3)eKMSndVe<5YpA!Fy4!+!6-P()9!44BT_562artY&yT2ITHN0Dncl|J>
zYNQk2hI!YSc~h5B4(5I2ks0MiA~B8XFQIR<j(oMqlD{<jT{f-t{bX-^0#~T)o_cyy
z{Fh->Xt!CKc5@qF8)OR}fa==vNko4mmUYs~i3cW(Cadz?Dj)Y!9iXLFbF?ji(yHcF
zKW&-3YSl!V>@VkYUpK$in)nr>m7Hqwj_-346@k_%TA8R(oQO-?XVT_nOq+8p07c?l
zq0pxq!_|zgS=t+AyvXh{y%UdJHYPKfYDOuw7ooxuo4=t}A!=?zpN4X^{$V;@i>a0N
zyk%Ab6a#7Uk?WYzbFXoU?FJJs(uj?kdsm4P#_D4|^|mu5A<yRVG{mRy*7(2T1s7S7
bJR={8%}(O!-e@U_zaJ%*q&l;eF3bM_pb&R4
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/hex-001.js
@@ -0,0 +1,68 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/hex-001.js
+ *  ECMA Section:       15.7.3.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *  Positive test cases for constructing a RegExp object
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/hex-001";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp patterns that contain HexicdecimalEscapeSequences";
+
+startTest();
+
+// These examples come from 15.7.1, HexidecimalEscapeSequence
+
+AddRegExpCases( new RegExp("\x41"),  "new RegExp('\\x41')",  "A",  "A", 1, 0, ["A"] );
+AddRegExpCases( new RegExp("\x412"),"new RegExp('\\x412')", "A2", "A2", 1, 0, ["A2"] );
+
+AddRegExpCases( new RegExp("A"),  "new RegExp('A')",  "\x41",  "\\x41",  1, 0, ["A"] );
+AddRegExpCases( new RegExp("A"),  "new RegExp('A')",  "\x412", "\\x412", 1, 0, ["A"] );
+AddRegExpCases( new RegExp("^x"), "new RegExp('^x')", "x412",  "x412",   1, 0, ["x"]);
+AddRegExpCases( new RegExp("A"),  "new RegExp('A')",  "A2",    "A2",     1, 0, ["A"] );
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, pattern, str_pattern, length, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(pattern) == null || matches_array == null ) {
+    AddTestCase(
+      str_regexp + ".exec(" + pattern +")",
+      matches_array,
+      regexp.exec(pattern) );
+
+    return;
+  }
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").length",
+    length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").input",
+    pattern,
+    regexp.exec(pattern).input );
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      str_regexp + ".exec(" + str_pattern +")[" + matches +"]",
+      matches_array[matches],
+      regexp.exec(pattern)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..da9cb6cb563fde67bd6e9a6a0d84b8e797b46de4
GIT binary patch
literal 5066
zc%0Q(-EPw`6wb!@6I`$tK)wV4YB%j-nzBl3si3F}Xvubq+~zc~<|du(Q1&W32QS0V
z9WTKp$LW8UW>uD^r8jL(?9cXhK7YrqsiGc-is=J&E1yK@3EDNb4Z~=K?zK^ESRd>o
zyB+qxFiUY8lQXF*e|HVzDYi1FyI)YjXp6&JXmcv4Vqp+NxszvUT(ZEO#rlO!wr;};
zMGVDUg9S{D0j9e&TnH5FFc2|ZK)aJkOC?y~RUTs8uGgH#N6Rb?V`gaxGL2=&@0v`3
zpge~ALV1*k*9pa&a(VA2-uOFS<*3WO7)zuNpOML*#WHzOKeO{<@&Uf6*G^A9?{5N;
ze~KgWKE|Df)2!!0<E}>Yfv^rCQc(q6oWLe9`nxzrA7i|F{?0l-t=7+S6X)K+;o*M1
z;;et|36K&Qvq!0l=K$k)A_X<d`J`*yqm3beyAXzA5y}CXCYF^gVSBO!D!fRe$gGQb
zhVj0@jK0Sx2q$cY-pw_|$@;dHpvfu=sJNb*oK7XyzkxhCbd({O=d1Z~HPEZcKr4n^
zL#@*<$YOQmXM1xyDs7;QX7s%{GtzOI&cB6%7py%>fc}g?*5}s+Q`GtoDf&?yMY;f?
zc|<(Ho-@|79+eW@T<ck*GbsXk(F)6n(MIy%D$=o}#h;)fdV%he%^#05`{NQjGrM?`
z(5gIaU(Pa=e#vr@>QlywyFQ+C*6wqC<)Vy(dqfB&$D~E1A4c3I0#qadQoj8JGt~A>
za;B1yYA^X6f-LB-=nV8o7gyYTH7a4j*{6klcjmRVhEqjJn`4K(7^d>&Ytr{Y06x;d
z#Q??Mtx)*{J%n<i!leA>Y=Jone2Fv6rrZK{hK_yb?V|@6JYz8&)Io4998u2N+W|Iw
nq9vGqZ%Y&2;=^R>PDuL?Be^;xyM2lP(yvwvDPQgqlPIcx#GhiR
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/if-001.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          if-001.js
+ *  ECMA Section:
+ *  Description:        The if statement
+ *
+ *  Verify that assignment in the if expression is evaluated correctly.
+ *  Verifies the fix for bug http://scopus/bugsplat/show_bug.cgi?id=148822.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               28 August 1998
+ */
+var SECTION = "for-001";
+var VERSION = "ECMA_2";
+var TITLE   = "The if  statement";
+var BUGNUMBER="148822";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var a = 0;
+var b = 0;
+var result = "passed";
+
+if ( a = b ) {
+  result = "failed:  a = b should return 0";
+}
+
+new TestCase(
+  SECTION,
+  "if ( a = b ), where a and b are both equal to 0",
+  "passed",
+  result );
+
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..1f10b0947393b9930cfc8473d22aac10e1c81373
GIT binary patch
literal 4242
zc%1E5&5qMB5Ox<>ehvtUD~B9Gd#J<_LM2)%QB=B!M0-U}GR+!XyRzLa`zkya5{Nr@
z9s%3!Hc6YfRg`uYiBpux_?ww;emwEjY)YZyp94-h9|TVYo}eRyP{fl<)E$i81uue_
zPXYODtK(B5Rp;kJgzjrCKY#oT3xXpGZy=^vU`05yP)YVK(HFv!BGz}U(%Oc_g@qys
zB8;dNK>o-e0j9{9fUs~3Pco;a5`?9lyILOfd*R@8<hPeHzr6&>V+HoxkSGwCTDS{L
zXB&9PxV-_idfM==bZ=P@;kH|o!e57_@T~taXo|vP{h{A`|N7JOn?U66!x4E$%fmr9
z>^DN=W8)B$3bPpa*wYPb9c`4;{@1AhDK&M0!U`rjMC%Z&<fUBnFs0d1dm`2%fV#|?
z!J{J;Dg>z<5$-L7qbvk0(wRY#b%S}N<#VCa`&LUqgnY=;&6sSmzO_n<vr8BjmpSK5
zDzDOyD2x>nBt2K_b`8);W@yil*D#yS2d}z1n(NlJj&d2QIhBsf62G6RWaN>X{}Id^
zZD*7CF6R_5+uqEF8(YONn{4@erk3>R>R|~Lt^P-!y}h3CYiOdA1;JkAz492$y=9)B
zK6|M}x%;Lve}%cSP^vWADnC_o8a*i7h_%Pk4h_**jc*?y|6(owxFNM{R-{7Fo<^S`
zE?FS{*X(LDucB!GCENJcXi8A+v@kA%DkL=bBWw&T-t`r{xP2iRX^XOWYd_J7CZWz5
e;NaTT2Gv`MvoBr$aOJh*Ub!o&-EFxoEuO#bu3ozU
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-001.js
@@ -0,0 +1,34 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          instanceof-1.js
+   ECMA Section:
+   Description:        instanceof operator
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof operator";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var b = new Boolean();
+
+new TestCase( SECTION,
+              "var b = new Boolean(); b instanceof Boolean",
+              true,
+              b instanceof Boolean );
+
+new TestCase( SECTION,
+              "b instanceof Object",
+              true,
+              b instanceof Object );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..293e9645539ddb3fdb5b4264e834523ea11d3b48
GIT binary patch
literal 6327
zc%1E6OOMkq5Ox>X<#j+T0&&X`w1-L@I6$bhEtM!LT|}zAA~%_~hBT=hmu~+G|A#9l
zBqXjYapos5c1n}BiCaSY*s`Z6WBaq`n{UPsQw;hpl*}$rr}UQl9Zq{>j}X%Goe?S5
z8n3NqmhJa}m_^mcbXg!u=l2P@jlInH@KeeeZMpCgY?pE>nC~elC;AV_N9H-xSl_Tq
zVG)+k6%=y_^O%?b#D~-z@C0i!;0n&8y=c*a;LPik4$y8@E6v(T!z_+%W^oJ>$Ffvg
zoeAL7RdAoEJD9^Ga@li0ldp2`Pv0vFgzM+cNa2t5Qg~W@XXQoVJ~mV<Z;szT*#;ti
zu8+uTXm8e<^=d9O-jiruFe=n_jS4y^_`t@M=1OYytj{3`kUL9I0X_6ltq3OeL^9->
zqM>SpjV6Gs)ZIXPASf422!zJNmASANxj=bmAW?#>&fG!!kYjvbp%r-3ult>OpH#3u
z7ZTK2W*+6E*y3a;v0#Tnb)hW?XPvH?omT=KMH8(Uas$O#HW=yZ$S+-IGD<g5#<H}Z
z6!_JYC24Qz`ES55*L0SFFZ;d=)LWd)>nmH+ZswWt*QJ)QbX8~oDXIPo$6lR{_y&^b
zC?wcu87~YEhQ>Hfj~+iq6T@wWdN%lNBQ<_gbtUYSI%y$!RK{v_QzpY?g_+CJ5($x;
z#upcmi>T%ATcYJd8OgY4Pg)<qPB=hZYIbroPorqZCHr+tBzt#Ovd5g$(O)SxyrYJw
zJ1bRrI!mEu$CdhJOO*Nm8}QBv|9U9cq+GMr`pey4E70>T5$MAx2LHtwK&!b6brQ(^
z{Yc7DEcJ9Wc4{iDu{Uu!LHLiC@$eoFP6KC*5=sF)#g4aR4y12ax~OTQpi7qYmkVw7
V>K=NNH*Nj1Tq^0yJ%A<3>Nk1338Vl3
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-002.js
@@ -0,0 +1,51 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:
+   ECMA Section:
+   Description:        Call Objects
+
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "";
+var VERSION = "ECMA_2";
+var TITLE   = "The Call Constructor";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var b = new Boolean();
+
+new TestCase( SECTION,
+	      "var b = new Boolean(); b instanceof Boolean",
+	      true,
+	      b instanceof Boolean );
+
+new TestCase( SECTION,
+	      "b instanceof Object",
+	      true,
+	      b instanceof Object );
+
+new TestCase( SECTION,
+	      "b instanceof Array",
+	      false,
+	      b instanceof Array );
+
+new TestCase( SECTION,
+	      "true instanceof Boolean",
+	      false,
+	      true instanceof Boolean );
+
+new TestCase( SECTION,
+	      "Boolean instanceof Object",
+	      true,
+	      Boolean instanceof Object );
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..8a2e95ec8461fe1a9af1a92673cd006449f09121
GIT binary patch
literal 21454
zc%1EAO>f&a7*>+D>oyG7eFbLZ)Go`CHn+md7CTz!A#;M-3wARYn|8P=qCwG3v!60x
z*ZqVZ`$LKyciC;n?KV=9E!iSvS)vqKVGc1&iZ99c>v<^2Z=FuY7Cfw9LNGWyBX~r>
zm9c3U#swbS7>!o@htBg(ACI9?-*d02Tgah@zn>b$BX(6iJp3FG1THLi4Eq)!fFf+W
zq6Wct$9RS8!Mv=$*d-gwWMSfpLIVTYh|UCrhqMOJrf7&DamCr-Dp<5b39?6rAF%e0
z+3dDX+x0!at-j|A3CrrZeJ6-Q0xVbDYhX<x@;>EDvK<QSKE%V_{r!VoJ1Thg>27yA
zcFPq?;@6Q<rSFSX>ACr`qe`U@SclpC@u>H#42t}-I7QxP?cG-Q#8jfjkLEm6sVdDk
zV*(wAX{<v5g;#86?mFPCU8sU4u&iLHJEG5;AWW;U4_Q0gAfa98(3l<OwuQ}L3xJF!
zT#A!+Gdz=A6K2)#St}%6e1b>OJ-NpEZA0Lb4P*my6IvWMB}?0$ds=Wv4T46Oba7rT
zXeXE`XOXv%qIpM6?j7oabRnYRCi-q-_j$$%C!>2_1{t&OSB@NgS6nYo11&!doC?x_
zyVk$iMO%vwl|cAI?hhBgz&`Cgjkncm!UUOrMPU!TSZ2ZmcJk~q=jj&izX~$Ja{BWx
z^MlPrjipQ~N33gP^Q+T^+SjQ=jcbWbII#p;QjrK`7*t+2%Mm-;@H!{x;9KGl*aQxg
zMEFx?v3n^ZJaIB!5BSMJ<O(SCSf%p{A|V4ve!@DQ)Ph)52bjs?O<{Uhm;)t9E&`Ac
zQ1HL$BysypGp0D=z@@%`_JJg!v_<Elg#5|%z<hA|kNW~9Q!ZRS#&iJ(yznr_gbSuO
z!o_qikrNsw@)w1c$W5X`JgvBSICmOB8+t*W%tmd-BM9nCv%R}6<Keg3EScbpVh>dl
z8YNfWHw6Sqn!XmL>4co%3l|ybgxIz1#|#R#cPLZmSAkRRY|j|OlkMc_dHX0@1=r35
z;VA_1cAbS%nX3E-=66ziJ+>T*dp)Jpe~ogbl_6Jt9?q41qU6h9DbllbiUfJ9ykBru
zD>LtZzE%4Bab;mJn)jF5Jo)i{LyowbixmXb*`I9W!Np=cLz^lat8zINy%{I9*Bk-L
z{)k-85KGBA1UI!c>!<{*Y1UC{^W?`m{`p3;j@yQ^>`%?}U>z}@p-oi<){*l4io#jP
z{(7;FFE#7XtfLa<QNTLl0AKTrg279WNQ>kdNqj*YrwYs>=H<6iF^i-1Vis@p+f$lZ
zRKh%Im_@=zy}UyZ*V;xEe?8z=QO-{2GrLCU^?>O+Q#CxSiC?SIZ&Q_*MhQZHZE2K%
z65f?`R;0mKJJjR{Lxt1dhNi!zaCS|9@0fXVroV!?);7}gSJU5h_3liNUKTcV2eVR<
zc1v+=`6=$#)~t1i-pq2BXx*<d8q8+e$ov?n^iGh#3LmrfW3$tI**a5JA%)lR3Z||h
zr)FbX1GS+P5h|rp4u0m(XJ)f&9xKr&r?QX`EGVOtgW__mNtCE~%sWGHYHDC?L10T&
zwIPPzRHGDFWqHLOHO5hM=Y}RKceR8PaX<0Cp9A9E5rBg>o6+%`n_$cs+q7-&p!^>j
z{24d-vZNFnVX@p(dZSAEAaK6pnXKbL)^Q~3Xhb?>ap8Xoi>8FUaG`!wNDt8}E+LVT
zB6}fV7W{b6{}h$VSaM2~61C7uqg6<volzS|I7DcvWT6yCXrQ3fn=~k5&sg$14*uto
cT5Mimx&J4IUsorIGspQwto4O8N`yJ<e^|s_QUCw|
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-003-n.js
@@ -0,0 +1,88 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          instanceof-001.js
+ *  ECMA Section:       11.8.6
+ *  Description:
+ *
+ *  RelationalExpression instanceof Identifier
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               2 September 1998
+ */
+var SECTION = "instanceof-003-n";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof"
+
+  startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function InstanceOf( object_1, object_2, expect ) {
+
+  result = object_1 instanceof object_2;
+
+  new TestCase(
+    SECTION,
+    "(" + object_1 + ") instanceof " + object_2,
+    expect,
+    result );
+}
+
+function Gen3(value) {
+  this.value = value;
+  this.generation = 3;
+  this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" );
+}
+Gen3.name = 3;
+Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\"");
+
+function Gen2(value) {
+  this.value = value;
+  this.generation = 2;
+}
+Gen2.name = 2;
+Gen2.prototype = new Gen3();
+
+function Gen1(value) {
+  this.value = value;
+  this.generation = 1;
+}
+Gen1.name = 1;
+Gen1.prototype = new Gen2();
+
+function Gen0(value) {
+  this.value = value;
+  this.generation = 0;
+}
+Gen0.name = 0;
+Gen0.prototype = new Gen1();
+
+
+function GenA(value) {
+  this.value = value;
+  this.generation = "A";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+
+}
+GenA.prototype = new Gen0();
+GenA.name = "A";
+
+function GenB(value) {
+  this.value = value;
+  this.generation = "B";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+}
+GenB.name = "B"
+  GenB.prototype = void 0;
+
+// Identifier is not a function
+DESCRIPTION = "Identifier is not a function";
+EXPECTED = "error";
+
+InstanceOf( true, true, "error" );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..7c92d661ec149be7ee8db05d540e1534c00b3580
GIT binary patch
literal 6082
zc%0o>-EPw`6!td$C%8d?#8oaq2sSZ(B$icLy9^a=9a_8HA}?`Uv(%0p7f~TDc@SQL
zhv5>$J#PTE*ECM&ByE~ih22a&w!a*I=bX>Sws}ABQN`{e=vCe_+F`H<mH_}K)Ej_m
zz44~`s_D`I0eel&v3(r!%I`Y>+!V8HefcqD7@qiO2f03EkYh>|lo$UF!6_zQ66=SU
zvXqBKnS#O|zy$LVfWD;eA;NJRBc|X8?8Q!poMF<bTov}FQ)|@^8ur@IX0HuFbgZTt
z+ru0&=qtDn(C?qayCq#BA&108wEcK}ed9dr=)c-*v~op3vTQF368e3<gdRJG&9Vr+
zA_kn={`R}4i$LVB`4M?p*jx41o>K~qw-b43iSkvBE&``>OwQ}VUOjr<INGl|ho$g(
zNesMvvGKfABAt%`Lt!ZRYI4X?PwY#1fJSyB0X69R@lv(I6()pcp-ZF;<1G~Oj2#-b
zu-hlD47i>PD`x>rJx8YWPQvX{noVWZr|xNz#k^1J<MJ<>leOI<Yn)!d2eE6WWhErV
zwixOVIa^B&NnIoXz(;Kk818iWIKvWtE9Q5~_*@fq-bDeUJSRv8C-0G~`<F%G;&Zb@
zbv!9sRBaFlDg-beTxiBmSl22nd=Q}Yx-K=|7ZAQNy<3j;4zf;PqJ%}6UKRFj&y%`W
zgQ0;VCF(?ca%KGFs$v4!pjbjZGAGo8XHi8Aw1>KDi9C7m(Au&-ecrU9s0@FKp(ms8
z3tKe2X_ay$-qZ5H(s~YK<{HJ6QXfGQeJD>DixPe#(Gtx;=4Pqzv2G%ZzJhJoxB0bU
z(q8J3Fnx>FV%pKGZnv^g09{BtUwCfp3zDrw{+0O4vVqZmRqMVk8MJOfMYt>DJrtjW
zB;+K)gz)mFgcvj3W)?^%CP@0?C^_;lG|$?x)*yGgH6Qjvq{s`Pd>bmOpI22dRX3ks
zf<Kr3qZ0fB{`C@^9qnQhTwfDk755N7JO7Z^5Wx$RDRw_PH&fC$#o-0M_RBX7KGBUo
zhxV94(MM!Z_)JV()hJ9YhwNvZv>qz!sW<(xE$cngEXLWltL!(GRO++4Ok;BW1v+E3
An*aa+
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-003.js
@@ -0,0 +1,65 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          instanceof-003.js
+   ECMA Section:
+   Description:        http://bugzilla.mozilla.org/show_bug.cgi?id=7635
+
+   js> function Foo() {}
+   js> theproto = {};
+   [object Object]
+   js> Foo.prototype = theproto
+   [object Object]
+   js> theproto instanceof Foo
+   true
+
+   I think this should be 'false'
+
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+   Modified to conform to ECMA3
+   https://bugzilla.mozilla.org/show_bug.cgi?id=281606
+*/
+var SECTION = "instanceof-003";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof operator";
+var BUGNUMBER ="7635";
+
+startTest();
+
+function Foo() {};
+theproto = {};
+Foo.prototype = theproto;
+
+AddTestCase(
+  "function Foo() = {}; theproto = {}; Foo.prototype = theproto; " +
+  "theproto instanceof Foo",
+  false,
+  theproto instanceof Foo );
+
+
+var o = {};
+
+// https://bugzilla.mozilla.org/show_bug.cgi?id=281606
+try
+{
+  AddTestCase(
+    "o = {}; o instanceof o",
+    "error",
+    o instanceof o );
+}
+catch(e)
+{
+  AddTestCase(
+    "o = {}; o instanceof o",
+    "error",
+    "error" );
+}
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..1d16ce0406f3c64d759a004b04af2cb0b8bdde05
GIT binary patch
literal 21635
zc%1EAO>^Tk7<Ss-Wr1Oa3pZx)^t4MU?S2f0PPWjb2EvqVXA=syjG8E^c3mqYE88tU
zg&)9A;Kwi=xp3pi5y^HECzc$?mR-kH56wifUP<rA^FFejw@xQx8y?j!As8H;5j-N`
z%Gfdt;{p$Ej7F>dL+7y5$75*J_q}WCHgf6FS7(OtDZ8p39)1o80v9$sfqfegKoNF4
zQG@w+*LZ`R!J@3c*(J4AvM}*Pp@D%ML}voRLs|pqP&7o4c;XyzHD9z#335h9@3Hod
z)$F!jw(I*rTYWze5|-8R`c4sr1lXRqx4@o6<bBMS<hT?#eTav92M5phoT%X0r?=hd
z*lkZJiC;%bmHt_*O3$rV9aSoQz&fnvkH@{IWl-c_#VPVWYwxzYr<M{mez4$~N>ypS
z8x!cdOk*7iD7<1j^VR`p?Lrkafo;!+dL#O*3Bt4rd!Mzl4HDXgE{)k?Zd=%zZvl|e
zgiCSLZiXYtHDOl$p0z^K#iw`_-IHgm-)aJ%Y#;}ao6zF8DH&}0?rFmzH3%AA(&c%%
zpxyaIIg7jnh~^!p+&k0-=~6_+P4w-=>2t&hgV8-7LB{O+l`GG_Yp$2WKr4WOmjW2@
z*7^^-XnWbA5(t0D{o&#@?9<+pcw4O}Oo04r3VYzkG7~1SlW(5|Pq%UZ%^V3<)1UvC
zA8ajaEG4KMv#ycDuTB?gFH(mZ*Akm>VhgmS0tjR|sJw2LWA13f>zq;t-x5!OP2fUF
zgg;>xyO$!u6NB+)q@Nr_u91ZvsdQdJBxFdEAF+<d<~&x_CCp^;rV!p0VxT0GixNmE
zQSiU%BysypGp0D=z@>f%oo5n2X^YN93Hg)ff%)X+-|q{UOu6#%38qVVzz+{&Ot@fr
zBV0`P61kyaB7ae6iQFVA%%>GM59dxJ=s-Wnli8@vcmzRxDcXDMG9G@T&5|jdQS4{c
zght7g_e~Rm1g5V=FrAPSeC}mNIw6j^^N6K_on6Y*`Q_XxcXwut;qgxL?0NfHv<j}B
zDTSvH#M?Crr7~6d4b1PP_IhkN6!&^css9FHrJVsQKMP}J0F-<g3?hA7rvS)X<^6)Q
zTA6wO;dbfo$CZV_Xx?9H^W?|-4SB}ZT&$o}o&Cv19$YNOGqkC)u_}*K(VKBndo2*4
z?2pLh46&4~LvT}DvyMunHO)FoZJzvC$G=}|)^XdZEc;XQJXlAJXJ}JZfpw&OzoKx~
zaj;pe;|t9?H0!8@c@(gYxP-5HM#0HT0Hj6oj3mCGjZ+0?5%cm}shGv_W-*ID^xIRK
zSyaM2X_!UAN4>m55ZBs96@NY8R}p3>^qD;)^m@SbohcI!P4R10`faN6(kMabZ!C=x
zP{O+cXGI!(y+ciYX{d1e+tBp46wa>c?;SHw&h%Fh*V;y!{%ZQWsotF_rI&>b-9c0;
z(rzh^EkDKm+M2Zv(YqOTiPrrVqrq&ZTIR<<rFVh^R``&$pIDvdtJaya3Mssf*L-Rd
zxu%1u3Cy81BUDPIJo#C_oLSATb)rO{oXSE%u%L`m4vNdMCQ+i|F+bM?r>6X<3a?1f
zz}SXB##9bPOeGj1wOvidG-8CTB7q9rWpybbHD06UmJ&@=hie5_<IduLKL^CWRRITW
zHlrIfH^G=u$!Xid3I3DqpekXUv#dhWSXhW9%+kAS(x;b;9ZzK)&tx6PvW`ZiLl(>-
zRYfYjggkVq=v7D$(b6*^k&()PAvPiS#bNL%s_(JlXe(uxp_N8Ur$jrWHjogX&{D}#
u{gBW=L47)Dz{DO5<+n+K&lLsa{GjvxPmG`#P!ea3^NU#P3k$0V@$7$cK$S%R
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-004-n.js
@@ -0,0 +1,88 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          instanceof-001.js
+ *  ECMA Section:       11.8.6
+ *  Description:
+ *
+ *  RelationalExpression instanceof Identifier
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               2 September 1998
+ */
+var SECTION = "instanceof-004-n";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof"
+
+  startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function InstanceOf( object_1, object_2, expect ) {
+  result = object_1 instanceof object_2;
+
+  new TestCase(
+    SECTION,
+    "(" + object_1 + ") instanceof " + object_2,
+    expect,
+    result );
+}
+
+function Gen3(value) {
+  this.value = value;
+  this.generation = 3;
+  this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" );
+}
+Gen3.name = 3;
+Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\"");
+
+function Gen2(value) {
+  this.value = value;
+  this.generation = 2;
+}
+Gen2.name = 2;
+Gen2.prototype = new Gen3();
+
+function Gen1(value) {
+  this.value = value;
+  this.generation = 1;
+}
+Gen1.name = 1;
+Gen1.prototype = new Gen2();
+
+function Gen0(value) {
+  this.value = value;
+  this.generation = 0;
+}
+Gen0.name = 0;
+Gen0.prototype = new Gen1();
+
+
+function GenA(value) {
+  this.value = value;
+  this.generation = "A";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+
+}
+GenA.prototype = new Gen0();
+GenA.name = "A";
+
+function GenB(value) {
+  this.value = value;
+  this.generation = "B";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+}
+GenB.name = "B"
+  GenB.prototype = void 0;
+
+// Identifier is not a function
+
+DESCRIPTION = "Identifier is not a function";
+EXPECTED = "error";
+
+InstanceOf( new Boolean(true), false, "error" );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..170b78ef4b53fa652b295173d353fe2dc986b9cb
GIT binary patch
literal 21583
zc%1EAO>f&a7*>+D>oyG7b?DFvIkii(q%C$S+;p*{Z5}c=sJ&n}gRyCct0EZ`-8B0t
z`vLt4{V~IiyX>~(b{i?lmTZx-ERl-rFozf>#aHC}@jQ<{%o-VwY<N&RhoFCOg54no
z7sjSx7-w$(%BVM6KenH@d+rDtwLSlsnvFbiaR0<GzNAOh;=@k?M&QhbN3drD3<z=^
z-&8;P?ip{8)1S5V7d>QSku4YdrcmEN4kA+n@gdDVbO;(Ch<$SoxQHh05saMS!AG>c
zZ8bX0SFPG!*jC#Mjl^xW{k~&FAO^N??k%v#345QjDLEbiP7k_+-TnP<cAcc*>8HQk
z$=EI5C{CY8PM7{su1im?*KJuYy+b>!#!rXcr&Vy|pXE97Hf`@TJI9t3H-0jcnNnS8
zy&GZZdDLTV0tmdIEA!_8r|n!9G=ObKL;Vpw+5}-<hkZ=j=>jq7K#!!XP}veTqa^@5
z95X9k-o-E^xx_T8KhRc)JMOVNOs>ff*6$mfoU9`U;H%i=SSTrM2kB|U0WmNdo|F0W
zGDADji4>c>28d=IrZ_v~73o|>rJd-zvD0IS69=PP0fLO^_X|(VzDv%R!9X*Ffma+D
z@aOtBJ!oq_p)wf1%ktsuSJ)%nC+V?T&KL*zmo#=KsAX!56Q>|PGnsC?y*CjOES5k2
z(mdFl_gGF)Iiy`fhaH`-)L!H+HRdIH!m-Wqk_;daaZq*BOd)r);H4t!U`t{Y*Z>|B
zRQMAbv0FJRJTn-t2K^{7xdaP6l$pGoN+>{*pV5v-W>l;42s2x~NrZQa7${(J9)ZM&
zg8fZSlD5t~W6Bc_%<A{hc_sjq7Vo+!qki%;Pz^7?zs*rH)#BwNm(1}%P#(qzGsEPH
zJDJWo@?yhy`64kA$}CFc(=`td(@sO^z@W&p#i&Jf1V%j}+WYe|?tZJoQi#ro8?b7|
zpeWUS6G9Nc^d%3bGirjbd}btL?3mjRDHUw*5bDmaqomx~o+^e%+u7Ok`dM@xQo9g^
z=P<<DH45blRrLeR?xc3RbUMWCcBM-H6~aop09HPTV`T`GY#J0IgIMPP$ZOU8oNKiz
z>;C6kmA@ZX6$PVpf2G5tPWKyP#?@M^B&sg{WJ84(OUVo!s$#0j*Hq+clr>&60;u>S
za<M|Jr0U?@)YhtFEoe=vj!K6|o$C1KrB)r+O=ZQOnyXM9DVd=|wGOHy=ld0<tB(EE
zQXP-A>d>lVEy5!~b)*r#))^&}7Y9ho)EQZFK?i3Ylts$RZ<SIOhpVM5KIpfnw6a)>
z@Z?bz86Wks4o+R`7_Is10l)DuJ7do58nM>{Chts{?!e@~R;Ayjs;-RUl>W-fD2^n&
zDR5S1z?ZwIQAb0i%ip?|zm-UKEq`xVcofTDPF?F5Y5A+=@2X~ZAxf``8oGg~RA$_A
zT(<n2_G@d}IzaEH*u|UoTNm}GXWA(I7^w0|kRb}6()J^(-FV$Rk+wrhopwa0Hj!rn
za}ct@V{;mF2H3NQIW94Q6aK<sm8&l!MOwd{SdET#B*p7Y@Is7T&Spyr9H(&SqD))N
ze6hi~wo-IkBZUZ*fTx6jFWxdpPTb}Am}J^-Yk?+XDHwb|1vt1R0sAd_MlWn`fDx69
zleU>F_5bMLdn}t4p<-(Brix$ToigE*$k~pkqK;>xjzdvLJ<%a5x$u*_YfCH(=Qgm4
z`60QDOw43rm%o@Y;QV?p{N(M`vEVXQs1#!}O>Tpd>`cZ$AYx)u#dCXs#0GNqniCd9
l>P4RTmPh!xU^BR&u>AjHBiz_0OERbBMQZf9o1}0t>wk6=hX()v
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-005-n.js
@@ -0,0 +1,89 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          instanceof-001.js
+ *  ECMA Section:       11.8.6
+ *  Description:
+ *
+ *  RelationalExpression instanceof Identifier
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               2 September 1998
+ */
+var SECTION = "instanceof-005-n";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof"
+
+  startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function InstanceOf( object_1, object_2, expect ) {
+  result = object_1 instanceof object_2;
+
+  new TestCase(
+    SECTION,
+    "(" + object_1 + ") instanceof " + object_2,
+    expect,
+    result );
+}
+
+function Gen3(value) {
+  this.value = value;
+  this.generation = 3;
+  this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" );
+}
+Gen3.name = 3;
+Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\"");
+
+function Gen2(value) {
+  this.value = value;
+  this.generation = 2;
+}
+Gen2.name = 2;
+Gen2.prototype = new Gen3();
+
+function Gen1(value) {
+  this.value = value;
+  this.generation = 1;
+}
+Gen1.name = 1;
+Gen1.prototype = new Gen2();
+
+function Gen0(value) {
+  this.value = value;
+  this.generation = 0;
+}
+Gen0.name = 0;
+Gen0.prototype = new Gen1();
+
+
+function GenA(value) {
+  this.value = value;
+  this.generation = "A";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+
+}
+GenA.prototype = new Gen0();
+GenA.name = "A";
+
+function GenB(value) {
+  this.value = value;
+  this.generation = "B";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+}
+GenB.name = "B"
+  GenB.prototype = void 0;
+
+
+// Identifier is a function, prototype of Identifier is not an object
+
+DESCRIPTION = "Identifier is a function, prototype of Identifier is not an object";
+EXPECTED = "error";
+
+InstanceOf( new GenB(), GenB, "error" );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..36ed72efb86a8407430d1f7ad53bb86ad9e5f2db
GIT binary patch
literal 20918
zc%1EA!EW0&7?zW^>k4exd6yYEwM)CC&8_gV#jdxyNZn#~b2S*7cDO2%LD5aKN7)1P
z5%w&@uv2fl?bu^UO15c>q!o!$WQRG#Fe(20$^Yl~eUxO@$Ykuo!`c}HgTvR@A7OCr
zY&ni|>JKiRdaM1S^R(0V$Iz+m@oQ=>3drGymyYu-y{aZQKLHqlQx`sieHUOrkneF*
zgZcNsd5gTkqOFhglFBMuKIW#-z(F1&GXr9i)&P104H3lLoCnV5P6q@dZ*=$tE$=iN
z-PWsiZ7(XT?L|gJTOD3^j0nWQ<>uZ2cM`MrHFL=e2=MyQA3oaOe;hYE`{aY2w%q0>
zvEGZ66Z%iF6MEA8tz&9J@6d{7<K<EBNf{>c-{L0nHZAYAy2ni;(|B(oFO5!R^ZgjZ
zAfPkWA%MVhIx_ADoRv$bpaEQW-juiK(;^7dPS}^UoDL9^E)0lfgt-l2Yd!>kM-yfx
zNIRHsX!!-EQGHHJA@2Ie{wO{s9;`nrlANp~58z9|ITlI^+F^RSa7Y}CMrUNXUuI}`
z-cimbuK}Q0MOB?0<`(JFiqduT%f#z5#1X;hR)`>D`u#jmbMF=XWiZf+VBnPm2Dq>P
z(Tld16Doo6yDT40e}{e2ldxWTV-n=QqOm*STBgP%aSG$Jkm;`9e>+El)#B$9&4aDw
z8A}N&N3?3>v8&T9wI5S2H8xAM!-*@IB@;lP;-K=TS&rP%h8H<e2OAQjzy=7QVue4Z
z5xbRQg(n8%^`M^|OkRP7?wd?r%{C*2dtcFt2i5snHAk4q)|)|iH;91>CYKS2Kosn6
z+KFzQY1$Mg9GKN#p?9DFl(uYNlu$qM49tg@KirlmnR4;+GoLK+K)5`dF=mFzrPP`3
z8484EvV1WZiQFt2<kJlg57SN~=)rK2CyP;=>IjVbO0?&GId^}yVaY^i#1C0DVNi0_
zeN#eE!1RR-rW0y{?>RG)3HGWx_bC<Z>=HViKg^SIcW0&;9_%D%&+BK=O-Sub6rREm
zE4L_=DpchUFuRl5>rr=z-|HEb{%eGlZU(IUPQ=OxD481+BEwjx0LW|A{gS;}nRWlu
z?b6?mD~p1$y1&%n$xrt?YR0u%tRSk+{$wK$EvCr~8>(!oifbxzIZhg{1p$=(5xH6+
zmQr;{ZfaZAu@SUpRY$4Alb`DN|0k<DuA9oTKQ+%ob!alfhH4X3N6Pmr3RfNb>!ms#
zTGe4y$3}$5fa=f@zSS88la~ZYi_{rOa=`{?6O@JSH#TKb7Dwx)EdH`@Pg!NL5#dRr
zED}EIWfhWjZDX|IuLt}g!|a4P^T-ii5176)RrQBe`D<17ZL0FhD9O@aTNx#hgf|7w
ziVXPGHZ}RtP~q~oZsl(&lHJPR8y23N<*#I2+Zb8-Yvu2{W_Kn^FN+$wfv8ku+)`{?
z-spa9O-qO9{S3Qge!uh4VAfM5^J5@$Ns!|?Fo_QAcvF!m)%@szodQtzeHQ{1I~>T^
zA!?$H(ITvy^h@JO3`Q!ec*cCrnAyaWL?<7uU`LiJ;rA1O!_6Tav}un)RNMe#O5W45
zg+0^XThS?Sx{zp9hVqt#@{!MC#S>M<fvVz2RZ)*ss8*ve+Su_J!iHw)q#$7);^%b;
zCS%8`2@ov#nO5{EI}~BXen3gdf~WEGCgPRx7%136a1}2dx*#-^9O|Xad99jO?=7Rx
d6{l{6>xTcIIME3zNs?KY7ux7cPot1R(r2F0sto`D
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/instanceof-006.js
@@ -0,0 +1,86 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          instanceof-001.js
+ *  ECMA Section:       11.8.6
+ *  Description:
+ *
+ *  RelationalExpression instanceof Identifier
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               2 September 1998
+ */
+var SECTION = "instanceof-001";
+var VERSION = "ECMA_2";
+var TITLE   = "instanceof"
+
+  startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function InstanceOf( object_1, object_2, expect ) {
+  result = object_1 instanceof object_2;
+
+  new TestCase(
+    SECTION,
+    "(" + object_1 + ") instanceof " + object_2,
+    expect,
+    result );
+}
+
+function Gen3(value) {
+  this.value = value;
+  this.generation = 3;
+  this.toString = new Function ( "return \"(Gen\"+this.generation+\" instance)\"" );
+}
+Gen3.name = 3;
+Gen3.__proto__.toString = new Function( "return \"(\"+this.name+\" object)\"");
+
+function Gen2(value) {
+  this.value = value;
+  this.generation = 2;
+}
+Gen2.name = 2;
+Gen2.prototype = new Gen3();
+
+function Gen1(value) {
+  this.value = value;
+  this.generation = 1;
+}
+Gen1.name = 1;
+Gen1.prototype = new Gen2();
+
+function Gen0(value) {
+  this.value = value;
+  this.generation = 0;
+}
+Gen0.name = 0;
+Gen0.prototype = new Gen1();
+
+
+function GenA(value) {
+  this.value = value;
+  this.generation = "A";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+
+}
+GenA.prototype = new Gen0();
+GenA.name = "A";
+
+function GenB(value) {
+  this.value = value;
+  this.generation = "B";
+  this.toString = new Function ( "return \"(instance of Gen\"+this.generation+\")\"" );
+}
+GenB.name = "B"
+  GenB.prototype = void 0;
+
+// RelationalExpression is not an object.
+
+//    InstanceOf( true, Boolean, false );
+InstanceOf( new Boolean(false), Boolean, true );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..60ae7a7dba8cabdcb3c7d264b512c4a101056d94
GIT binary patch
literal 6811
zc%1E7&2rN)5LVJc`Fj9{lj$(St!3cC(2$un%?yE3pbot<s;wj{j%*~kP2PYv;KjJW
zQ}76^<Rs3ItR$`*+M%b$D{H0w_S;WuwIbsvAk|8TV88m2hi#6#sEiOg3H?6WYaG6H
zU%6fw5medM?^FURWc9~Ggzm#zmGSAvm{WWbkbU9>m}5yprd|2zvp`=d^Cx}%gjY)Q
ze1%-QqCTRG%8`TdDGi@6Nn4a~?T+DYx@jRfW$o$)*xh=q+4yi+*&f&`+XE-#zFa+a
zKqcWg(C*G~5YPBSYTGl8Mt^m9!*|!T6K-EOCxpLO3*mA7$Sn%O+b~eCz2E)v{67Qo
z7TBAO=0Uv>81KNqJJLT7xi1O@vfhh05d!dXC6=TMap_%<k=+PD4F^FwRnPFiL`Yt^
z?t)!N%w>}ZX^HUCLMW#pVBU_E7jco?NASxKh|bV=6Ac$+!j9rqhYCjmP!1>GVhSNR
zVWc?koZ>SqJWeCIl~}}<n&(M}FvW4-0Bu4V8^VoNimbv(EsZ>I4y!Ah38v2s^ZppV
zij8p2B=rT>7VV9Io{muk|9G_1QXy&E59QRf@Z^+u6856DCHt%4`G$r;XC|BFIq25K
z((7b<)H#k!v^yeg2yjR{g-e7bJTTM>a9f!4JYiJ2nEkYzPp`co^uA6q%-){7C>a8|
zdNN?mwGPC+fDo86F$eU4c>?<}jFSW=i!36%H?nXe3u9zFC!B};Mi&0PEKFx&wX%@2
zH~+P|-dte>nT-R3bmoM-g{ir_%HNtdd4G!isvuAYGe3afOtCLrGS99@$*il@0sG53
zMq`lroucYREtNdK!D1h}b5GV`>EXg9Yw^^SVAld13!=})2&)^L%p@*}qq6txtXrBw
zf64~%^Rxzg)YcmWq$Lrj?aoYFa8C&WgO5k%k+79US3EWgcu}`zZl6iqt7m9%abK{z
zFw|!1?d3sJ?qBD|YEc2r*IlhFS?dG){QHIikIeb9aX@5p-Vy&0b|)t5?a@%|GN8!N
ztZQ*`qN-=t_thOx4GTkFbZ}2#`dUu8e+dJzfM1U65GRe)+0=)?rXxCG9Qf?1bUY=(
z&Z%%@=y)6pLm!=E19JtUz*1bG$-XN0f9r!oVu4b$mtJ{PM$kJ>mXYO9PKfmhcK2Yc
rv@+>v`+vi{JZIkz+pgfVzv(iy%=WpFeNkzlmHnzVJCPdOnYQOIpkJc*
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/keywords-001.js
@@ -0,0 +1,48 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:
+ *  ECMA Section:
+ *  Description:
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "";
+var VERSION = "ECMA_2";
+var TITLE   = "Keywords";
+
+startTest();
+
+print("This test requires option javascript.options.strict enabled");
+
+if (!options().match(/strict/))
+{
+  options('strict');
+}
+if (!options().match(/werror/))
+{
+  options('werror');
+}
+
+var result = "failed";
+
+try {
+  eval("super;");
+}
+catch (x) {
+  if (x instanceof SyntaxError)
+    result = x.name;
+}
+
+AddTestCase(
+  "using the expression \"super\" shouldn't cause js to crash",
+  "SyntaxError",
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..92fc9e5e0842af0be46299acc7457e01809cb8e7
GIT binary patch
literal 7746
zc%1E7L2uJA6i&M_HsF9bBN5Kiv<YriR-mO5MWrCx?TXyQ?X0<Ra2&c_kdU}@hJV44
zzk&oOegGHl*iPG|t>b2C+OdfpI^{Wj_WR!Vp5JpU7I+wztz!tB@+(Su6!eXvVHh3a
zoEepR^LeY(vWW)`YgfKwVdS&&=3T?M#ow~x(~kf}po8I4Xk$PDL&TM;oaos%PLS(N
z>iWT7Da_MFs8od<1G$Ke6~w319q2ODMUYB$F6c*__8CQPuY8@$TeWJt{<3N94rSKv
zP)S@@OO7=VgA`z??j69vjJ_>CfI$c1oxQz>vl_?$rJbWmYf>B4Zy+O<-&c#}QSEgr
zFDy6sK&|@X$(slN0+7E}2jn#_Z`a$6S}ri&;R6jpN$8k90}S^02K-zht(|%l`aVal
zHCjOK2ae@RD5?PCXsVoHa}k7DffLckO{A<1eWtN+X(kjS69DZ666vhQ+~)ED<=%b9
zrI5BsgY;%?lFs^4P;j$?TtLran-i|&c{`*jhFxY*)H`O=>k38N(LzgBc>y_E44BF6
z$S+u@BI<I{Z)=n`)UhN@>hO1p)4Xf)bt$q(ZV-PX)hf$Vynbczd!GWo85&E7jNgya
zpgDi?mBsd_3fn_n{^HUuIvwv$l{R+9ixn1xJ*)2?e|miNeW%PT6+$os?*F_pAHP8g
z{ATD?xMT@s@p5sU%h|ar#e=}LMUxQkAJ)U7-{a4HKe<z0f~!BPT%EFP!KjZEde5n8
zBlH}!RXB!Zn4lph_DSUT`8Nw+Zx}L9PiPr7G?RK{;~i?th`3m1K!_fb145&91&*@U
z6GSos&*1~<2#~Q4{kFP3RCtz0TY%?~Bu%Q#-drxybXb|2j*PaaIJ6Z?4kc}-4vevh
zNd<{`X*+vcrL$1!hw}z*X-&b@dN)$BHq5_<&8ZIG20{if2htTmq#|urE{M(U?=PJU
zi{;&1K>wgh4;2c*$>doZ=E}U&q%QBrcC5<~3t9hBWqp-!d)xqC5&-hXFg8b+6F&0;
zBRngh)8zK~lQ7;J!KmZEy3SM9dwq|cMd;6~+%uMkO*mLm$-T+tq6Dh~A10JxfB4+>
z3}smAyR9W$y`{V^yDy?nBoLDX%p_eCn0R=d+$Ge+gm@*zb=q?C;(~Q)o=0Uu9O$EW
z1(A4>NkDIWF?k1}xC%TLsCQN3Te=zBRYH%X3$NshTW!4SzH(_Om&|YdM~lQBHR%XS
W_t_xyjQrgnwT>ykN=Si9_x}Z1*1JLg
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/label-001.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          label-001.js
+ *  ECMA Section:
+ *  Description:        Labeled statements
+ *
+ *  Labeled break and continue within a for loop.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "label-003";
+var VERSION = "ECMA_2";
+var TITLE   = "Labeled statements";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+LabelTest(0, 0);
+LabelTest(1, 1)
+  LabelTest(-1, 1000);
+LabelTest(false,  0);
+LabelTest(true, 1);
+
+test();
+
+function LabelTest( limit, expect) {
+woo: for ( var result = 0; result < 1000; result++ ) { if (result == limit) { break woo; } else { continue woo; } };
+
+  new TestCase(
+    SECTION,
+    "break out of a labeled for loop: "+ limit,
+    expect,
+    result );
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..be279c14ee9375841b79828fffde80c8524098d2
GIT binary patch
literal 13403
zc%1E9&2G~`5O&k@&jIlS<_0RLz!B0y8-f~CLLpIwgb>;|+jNQJwbmOTls*DyBu=~w
z7oGu$8xmI@f!(zeJI?wi{z=_p4z;pt&(3@^-|WuVRO!&v;YRfUg6_sH!94;7N<~qW
z4(^VWtw!@n>t0L4CRD0x;-0FGEV^-YM^P@byQ<#D_W(hlqr*o~(*Xe#VMB=Oy1y-@
zkBsiLtY7Swr6^gL2vMl3AOq2f0PiD>E;K0GN010{1{k<XTa+N9w{eb*x9YWa<5{!1
z=8RR>93fs=Eit!)C?r4^;@$y$I3w=@o6tcA>bGv+zB?;%aus%tA6gdDNVozCvHZDM
zEcfa!T3KOvmQB=aPdDEb0?6Ns1M&<TZ#UXI^-N&A$|iPrNW!jaQ9$8<DPUy^Y5jvq
zpk*=STH^(TK5#NFg`x&@-F;L%p|K$dlLE)t$4n%&4J{gCVQwZ=ToVB44F%Fkjk&_c
z-xKEDZ8i!?8}H!WtWCmMUza4YxrGcsMjqw3D_P#Q!&Ha+R3WH$K>h1-L96aUIg31o
z9L*=x;ONMXtUgAatnj-qP8)JA36s9C1(*GC_pI|4YShPTlkhO12wKxw^&6Y4$R+IB
zkBr28AC7#^oYNdG#JrP9{BVm8(9L)el$$M*O)-HjoLj1a2|>|2LW*TB+K>gVlu)E2
zPwtG<N;*9?=?*g?U6YwgkT!M{|2MuZg<DtH#79VQPVDk2J)?#&L;3q4ZGON8%#%;&
z9F(NXB$UTw1pt2%nRL<1BuTCmHhnJluX6uN1zF}QpIWZLa@+dvx2<55GSzoc97^A?
z;DFG%dlip|hQ`}e-VWA^-F7nB?|~KEtIgp&`bUuvJBDoD-ot_j;o%UoL%>|eL`Ce7
zbIFpm9qrJX>WS!B>$_1D-6`L^qzG?i5s;f~s%P-KlQm`56E|hJ_t=6%J;Hl2$!w?L
zc}U>2G^ddlt#=#$gb~l}8ex2ZBa+nIZr@#z(Bv^D4UflpSa=+k6^qZio9ZYvKjPAM
zZh(HsnwZDH3$E#E{>0cKK<h*5JCfPRPP~;SiZjZs;lUGll_W}!<7KBVDM+4YxPtcY
zJwWWO4|bbOW8X3Hn&QM!xB)Q^2?LXk+^~x}DQ*!6`qNQrr=uJ)QB0T@0$B#oC1iOM
zzR#(m;Q;U>PYqa-1E#=1Tb69&$M81e`6Nv4sr#6y*VVD-RAi`j5>RibhpL^F)YWxo
z@YVRf*Z0*UwZo%VwFRk15vdDf9RedzwI%t6jeCgsCs{)N^eNjnQe5VG{z*RV*;R`E
zDKa_i&3<?_SA@)0n8g=Y5XNftlojE8C*OyxB0N)olW$oOF0>-NwjwEb%8JkhXuBe5
z_?8vn$*c$qUMdx~A}zu}CyNsA^jCzPf>eaNSyY76^<Y^LmIYy15Ei>2i~yh#tb;vV
z1125H_4>|~y5i9*;I&{xjTn~hoU7zx+R*&#5jpce55nja7Iz^BCJ%AUS!w>yT0(f@
n!BO(Px^ta<IqY1+zYGsM6WJjm{=OU+=`q|A3cfTCNJI1=9UAXO
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/label-002.js
@@ -0,0 +1,56 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          label-002.js
+ *  ECMA Section:
+ *  Description:        Labeled statements
+ *
+ *  Labeled break and continue within a for-in loop.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "label-002";
+var VERSION = "ECMA_2";
+var TITLE   = "Labeled statements";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+LabelTest( { p1:"hi,", p2:" norris" }, "hi, norris", " norrishi," );
+LabelTest( { 0:"zero", 1:"one" }, "zeroone", "onezero" );
+
+LabelTest2( { p1:"hi,", p2:" norris" }, "hi,", " norris" );
+LabelTest2( { 0:"zero", 1:"one" }, "zero", "one" );
+
+test();
+
+function LabelTest( object, expect1, expect2 ) {
+  result = "";
+
+yoohoo:  { for ( property in object ) { result += object[property]; }; break yoohoo };
+
+  new TestCase(
+    SECTION,
+    "yoohoo: for ( property in object ) { result += object[property]; } break yoohoo }",
+    true,
+    result == expect1 || result == expect2 );
+}
+
+function LabelTest2( object, expect1, expect2 ) {
+  result = "";
+
+yoohoo:  { for ( property in object ) { result += object[property]; break yoohoo } }; ;
+
+  new TestCase(
+    SECTION,
+    "yoohoo: for ( property in object ) { result += object[property]; break yoohoo }}",
+    true,
+    result == expect1 || result == expect2 );
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..e0250521e717805f8eea014beb05fdead098fddb
GIT binary patch
literal 2239
zc%0=`(N4lJ6s@As7r%vfGf_bvFoc+p_+GZlXx6Rswj=oFn_r`U;s5vvwjE;|bYPIg
z823VYIX(B@b8cHtWhsY_Hv<}U9#DixV{%LgnTX(-bO)pR@#WYTDG;x1F&<}9b>7bi
zIngMuy8V$NqZ1By;B$&pF_BoRpj=B5u_UN-y=chME-rx<!^*u?^dNvlu_=QbmC(4X
zS1M#l*fH^i*Iur?_Hz5`*OpR%TN*s4xCyT&9nuMK2*!#kh;@G3D>uPhygds&Em*c^
z?{eWs_1xPn`_Pcqy3GAWiXf$Srlc~3!7A=-<5vF_CI(#+SaO{;H;cnm5oF;^xs13f
zdpnGcRhCf}12TWel&*zara9%=ii+6p^LldzTrwljsIE<J@!{QdrT@SFkefz-mS?qQ
zQ)TMSS5);Ki}%#HM>(&kYYw2VLjZ(gm>Cwi?~t79IF%Am^`ADiwB5gI$npAV{;l(q
z`|-ClzR+=mRG{jKIHd>;LcbBmwYesdYvO(YAKN+_^)EUwYKX{jkGSpFacWGOe663}
e{MChEq=l39XGD_a%fEG2n{T__@;6MXv#T$w?9kQ#
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/label-003.js
@@ -0,0 +1,15 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// The colon for a labeled statement may be on a separate line.
+var x;
+label
+: {
+    x = 1;
+    break label;
+    x = 2;
+}
+assertEq(x, 1);
+reportCompare(0, 0, 'ok');
new file mode 100644
index 0000000000000000000000000000000000000000..3b0f7fec00d51c7baadcbf3f817400234fbfa6ed
GIT binary patch
literal 6153
zc%0o>%Wl&^6m?1|6oiC?)CDUq3kbE9Sb-arq(My;r4=^aqG^1a44v4~%!D+*!k-}_
zA+h5N*m7swyzPnOIwdrl$n!XJALl-19NFzKC^{`5e({utO-|a@nq^t%q2ISk)%vmf
z)@_6xu$&#e#$i;*;?|aBJ;qhe`1UixDLH3w2n|L!ku(f6lt20w)+G)6Nvxl^q%aRF
z<Qj_l77eHz0*r5|`VdHZL4j+yfV4+K3(0BFEIz<-w^H`1Cv|7%dd%6m1{ue4^<0fg
z;Dl+ouY`4H@RSJ{T+s$$uXlI%W-*8VTGPR{dm4|MMaXE)@3(8sv&u&|FKgb%iDP%~
z^P5$$<FDJZqte@}dbLU}R(y&RH5!2J0dLbl2`O?lXyvNIK?t;)D~W_Q>ZhfF;drbe
z%7n4eR=oqmh5=+X+a`_+Nx1YtNP~t;Q(<kS0^!ZBLJ?V&QC{nD^z9Lj0{6mN*qqf#
zJL_8^hM6VwH1CfIr(B6?J0dBA3u$rMY{}_!70|2EK}&}G2Ps-j*vah3FI1-@%5>1`
zr}hmTN4IxbOkibjf`a=%C<A{LQv2`Qv*V^tDh=o;S#mMuGn}Z0_7K#TEgtq_u<vy1
zu@NO}XynJwQzAsp{PcK#R9|#c&BDf|)gpn<P`NnWOKQc`CSxc5Bd!``tZ(mesu`%&
z*|PqA=B%GK-z>2LuPgf?I})nyr#Nz_q}M~7c=9NTuL%WXYI=esV`NZ=M&Cz798!))
zR8WY42nAyyDihggl^N*@(0=X^b^S{u+=3R>j5GUlVY>gh6LepoEG*VGABJ)&Ji_xY
zNC~UMl~S_5L|>*rQGp=CC~D?+><dPM`VG!Akv=|pY9ON$1%4eR7n8JmK8XGVbC^Ro
z2d>tkx1_wMe4=hpWg=o6tQB)HDAuQgF3(>6|G2#@0WxI)d5IGzrDHUuy>AE5vrlwX
zzq6y7IT+L{wqNAZ5-D2P+t^$paBkP9IeG7f*Sr|TGs>B^y}V&(lj5qlDvvEH{AH?l
zmN{8^ZJ2TKW-ys?4Q))6hYkwYug<3Yl6+G)COp%drkTA4&KNjge#A<&y0MU^drQ)$
Ioaqby0+U3?iU0rr
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-001.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-001.js
+   CorrespondsTo:      ecma/LexicalConventions/7.2.js
+   ECMA Section:       7.2 Line Terminators
+   Description:        - readability
+   - separate tokens
+   - may occur between any two tokens
+   - cannot occur within any token, not even a string
+   - affect the process of automatic semicolon insertion.
+
+   white space characters are:
+   unicode     name            formal name     string representation
+   \u000A      line feed       <LF>            \n
+   \u000D      carriage return <CR>            \r
+
+   this test uses onerror to capture line numbers.  because
+   we use on error, we can only have one test case per file.
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-001";
+var VERSION = "JS1_4";
+var TITLE   = "Line Terminators";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = eval("\r\n\expect");
+} catch ( e ) {
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "OBJECT = new Object; result = new OBJECT()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..a35cb02ca93d0ee66155349dd2938b502f697d9f
GIT binary patch
literal 6134
zc%0o>TWb?R6yCJ8T160q3O<ECRYY3FC)ozgMVb;~ao4`eboVqFJJ}606Vv<^|Ct~N
zzWED$^~~g+>`pe@O^wY<*tvXjF5kJ#*s{}RP_Uao{K6>@8=SPP4a>65L%(MgtMwD-
zjpK!Fu<Qf9#%5H=!sf1JJ-}7=<n}YdDLH3Q29FU=Bn<-%<&VFGbx8w%8tW%6$t}VP
zxrU;?MFT2F0Fzs)J_M3pP~aLaAg!^`LUI~33U_hbsg&I6hq`?*7_$!sAd^^*o~uy_
zoG=adm9Wkno-zT0E9w#U;_&d*Jm%<MYdYMvsqwg3gp}6&ezVp*t9*2_vgRF}IB{Nn
ze!UKM{B?77RC>Erw^qr-ijQ!jMgz#Zz*{s>LW)ccTDfX-5CZMyNFt$y`e|ukG#+V)
z5@Bq-Rqw#CVE}2(wu9qB5-wd3(xBnWRM;4+KzO60P()f~l-If(eS3_fz}>JGHs*EG
z&ia;%U}h0L&3hBVDOY0J?vs?kg|s+rH0A8M3h4RxpcO;@gA}bM^6~7*E>veC%5>2B
zr}k|eN4IxaL|~<Gf`WTbC<A{TQv2_lv*V6VDju|zESZ?{F;3LO{0KBJn>_4BVBhN2
zW4oWM!OM=Hr$mU1`RVfBxW4G7nuXq_)g*z>P`N1Gi)zKpCSxc5BdQvttZ(mdsu8Hw
z>9YP&>a3qM->k3#Zz=mAJ7TKtrzmnKq}M&1cz8dKuQ3H<W_pSw6J$___P>vbC{vC{
zR8WYa2svXRDiP^5ON?{`Xg{}!y8guyZb^%3#+m)OG~NH)3c4>*7M5$9%b}bJkMR5p
zQo?F;rIhTg(3c5NR3ON(A2o|R_9Y`h{f6h6NFN<NHIV%h1%4eR7t^$RI*k4pbC^Ro
z1FqJgyP~|Oe4=hpB_bjmtQC8UL9sO(bXoTD|HtiR1&|2~$dgfdJW?fUe{Wb#_MT<Z
z|0oXR_py_NZgzL21xfCjce)70Q_7jNm%L^hli*&sE-x!8)@7ncl?5qzW0YR;8Zez+
v4L!>s>Es4a%%)@#e=Rp=H`4>AnY{+i7&u^lv5K|2v1%rJIMSw^YXbiQ_&dTa
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-002.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-002.js
+   Corresponds To:     ecma/LexicalConventions/7.2-3-n.js
+   ECMA Section:       7.2 Line Terminators
+   Description:        - readability
+   - separate tokens
+   - may occur between any two tokens
+   - cannot occur within any token, not even a string
+   - affect the process of automatic semicolon insertion.
+
+   white space characters are:
+   unicode     name            formal name     string representation
+   \u000A      line feed       <LF>            \n
+   \u000D      carriage return <CR>            \r
+
+   this test uses onerror to capture line numbers.  because
+   we use on error, we can only have one test case per file.
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-002";
+var VERSION = "JS1_4";
+var TITLE   = "Line Terminators";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  result = eval("\r\n\expect");
+} catch ( e ) {
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "result=eval(\"\r\nexpect\")" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..40c4dc64d15d5fe3523b20ce88417e06beb98a31
GIT binary patch
literal 6286
zc%0o>OK%e~5OzX&v`7dE2_(4e5mLbx!3ix9G!1I1C{%3JD{^<;#I3WAY=<;|1%4SE
zx$!R;JMU!I*`%8`5JigO$9U$O@i#N}RHw~I(Q6VM7LNsQ2;4$>gwQDuduYE>JM!Q8
z0dEuJxn_;Ws8q!tj}f{LtGvnWCs<H?%E$o;7#3Jj9vM;L_`gIKGzzC>{e~sEMY6as
zqG*U{MAb;Z<d#ZEB1O+A5k_2uTVtiA5;STQ@4~oWF4ZfaYo0q8^W1@uNm;&`t5QV-
zW=7mM%sO-O9>4@6mo&ia<=)<#SLbqG?C94RJKTB8h!l1$Rs{6t^#XcQ{^Dl^=xvxd
z@?U>_y9qe{x;`AW-StYnTFwN;doWSrtri@cZ9tYU+k!|5c=-w|q7N`ykkNQ7042=W
zc&pg~H--_iDqPzzE)^E4PNcF}xHc2=V-v7wbPUp~8uJjwy8?WA2%|*Qd6hTjZ8FaK
zo{NddeHvlWn@~=>5*WK5oQ#|)Bxs|lX3y1vcE<;;S>z3{vz~C0qa(X3I&-6J2W>v3
z-+^&(dxynbtQDM~#eKq*k#G|z{m=E`xNS%!AZ@KnCQv?ti5hoCLLJo<yc;9?zb-lM
z^vRk8*~RBEmNMh`tc%__znFTO@!$eAaTGEzF3$FSy<%pQwFocAWrNMjZ(I6wz&;_T
zHRD1jrSqP_gj?8g3r+-u012I-U-dWzcL%;P9*t+{!SIwfCQ#Ss_x~Sac|ZlkUK#Wm
zYLl}vehI6fSz@>&iAkevtXr%^&n^kBajiWRmyWAlP&1!VTz!P8Mx<A-R!zKLxtd6u
z$F4{@Yp6AE4zne4)^aud0ar8Z!cWfuPt+FLDAikI{HKtj8z#m3q_fz?OR|Ul49~Mg
zOFZLLiR$N164pR-Iek^14#_hCjs&{PE>>%#yQZ|EeWKgD5|%LzHimtGOR+UeR9Q9}
z|3+)I29YWA?-P@M-NJPCEx3?>GkeHzo<o^Sy4f{y3rOyY4d;u@^h{gmUNIM@Xj(Vr
z*+<`XmFmT30VU^0^a?%7G`(8tyaDOt22bBMGD&_ju(F%&Rn;E7mYA``fc-fw5p`?U
NO!ul~pqwk5{{kI;@#6ph
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-003.js
@@ -0,0 +1,43 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-003.js
+   Corresponds To:     7.3-13-n.js
+   ECMA Section:       7.3 Comments
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-003.js";
+var VERSION = "JS1_4";
+var TITLE   = "Comments";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("/*\n/* nested comment */\n*/\n");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "/*/*nested comment*/ */" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..4bf2d6454c9b159c9a809470fc93c9edbe30134f
GIT binary patch
literal 6264
zc%0o>&2AGh5Z;9HQ*odY5(iFu1XZX-;(*FFf~G-Di9*Fjy&>f8P7_mi9oY_P9)OqN
z&EUeBw_xnee|DWsx@iNwRI%5eXTBMKGq$HXZ3ZQ;1tct;2;LOr(kVKQbH>A-b5N}x
z`+I)C+u(RR<{OVusY>6UIL<@-${SyPN(3cm3=Sb+L=Z)JWT3*)Z|PjnD4fLljh__e
zVR2!gXz0+0sv*Gml4=N%qURKZfs4rH$Y`kqjhdzVIPO=<jq1m`x6>c<cKRUWSiYI7
zQ3Zl91NV)v&J3QWfWZ|F2z#-+`)U?*_}_RsSa!$Y3A+hPvib97**vX$^7CTzE>0Z#
zFTbn>kH2n?N9}i`+Nf1>VetV@e1Kk;i%{lDWaX+YKuYAxS46=j`em$u;dmkeWy08K
zsab)?g#j!}*CvijMTBaAR2C0c=0b7g0ujxQMv==pvxVbbfiXS8Q4kGY<IP#0Ot5|w
z5;F3DMnv?+jMJe+xsH>Q!MSn-ZMM|(z8YwIw9$$oZ$X;%gqxln`5n=z6J^_I{U!Y#
zj$_z6Ea6}+5d;nQo=^tiI!OATo8xiQh)Mu$ZA&gxKE{bUcZZ;^Y6;#=!2YjWj(f3K
zLy%v7o)9T>&d-MEjp~bOrWp?|oEC{fhR!AVexSdYT4e3O_mZl?`qj4$y*qNBQqw*s
zrB24+ZN;H*qYh*4zN<tB-Xw%ES(f|56CoI*T5lTvJ|gmv3QV{P8Zj`TV3qkYQ9-NB
zNJoOHoo%8oRjJ`zkWmv)d;Tq)OxtK?F{fmDhf~c+f4y7_vA=W+k+pbTQ)gDtVBQ{Q
z3lyrw8u>%6rX+=*eMLT<w$M(g-U{<S1B$*SDIP1${17jw9{O*vpDkOG6{iL&E}9V5
z(Q-L?RG$tMGlh;6xyvtC>(E_Mt<W*ice*l>2>~{ay~abaF)dVi-Y)))`_u{`GZx)P
zvqd+zR}1$U_O#H=@76X)+^%`Me4d+~S-aY6*1!xm)OC5|(Pvy`dfu5M#l@kl;)P^V
xRxSNqEH-Zo{YP$_h@?LdSXIsTglf-TOU_tw!2WiY%DS~$W_!XiRL(Tae*q&b?I{2N
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-004.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-004.js
+   Corresponds To:     ecma/LexicalExpressions/7.4.1-1-n.js
+   ECMA Section:       7.4.1
+
+   Description:
+
+   Reserved words cannot be used as identifiers.
+
+   ReservedWord ::
+   Keyword
+   FutureReservedWord
+   NullLiteral
+   BooleanLiteral
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-004";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var null = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var null = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..880e4d9736188b7a93f1ba122d14c82bf32ae595
GIT binary patch
literal 6258
zc%0o>O>Yx15Z#1Qr~nBGi36t`K^01osE}YALDQh7M4@7%9=ITPcbb?w>&SLUbK-yS
z&)~wDf5F)KPIjG5vS|akMC*@d&ztd^v0c?}F(|kVAVJ|&@VX#PC+j%QIS;zdVYzzZ
zz4m<G0>{mpF)pK06}~@qoO?LR9iM(i1SRJTj=*O`5Jh=tpn}o2bS`NaOk(}UA(?qt
zTo@=CI5ebc2rxdS96+e(1qET?Led;<S}H-qdf^VXd!=Hn{ITlh`)zK%4>FGBnZ62D
zAP6&X-w12Z;AsjNTv4B}=X-nmvzWtwW9eYpErTcQTUe6KpV!OgS?QCP7Mr)R<HURM
z<>e;u`0M(3)OOd(wMr=!7Vl!m2k3UV2xO{6mabX?q(r_vMHDpAF0%_5wnq|BB#e!w
zni+Up7{Ic0?O?l9M5r1_WwCH=CS*q@5K(Vy6uGQ153#)?(5J`P3Zlj<ygqA_an_Ga
zL_{9akcjTs=CmtOu6x1B;6gcq)*EViT@AE5T4>FXHz3WrBNrbX=^fFj6J=Xy^Cf*7
z+tKZ97ICnaaDs+=Pbh<66D0l5_3^l4M8$`e-b*S}KEjSF&kaFysv&qM0{g!%IktOZ
z4Sss@c}k>AIX-KmJIXJnm}cC+bQ&ZK7#bI4`=K5&HOX3mzlzERo0s3V^y<icOiue8
z6*>u>_W(PTXhZHGcR`qhHxWLJ*5rQk1pi|^>lJ(7$3z}cfzejN9SqjbST(*#l;0>a
z(w1NnXN%|?Rje-;q|-Rl9()T&(k^Z@n^Gjb!>)R$M=w`D94uWwB+Xnaip(0S%bVkD
zfh@IH6@SFll%DYOugIs<651%$U1R(wK+#tu#d|U{-^B~6hyD%Lvqej^;#5HOGA0C7
z+_{`Qs!s-T8AC^m+@%+*Rp_iKQD~p&3tf@O2nQR(_VG|`O$$|;SBrn+GPMTCgc<k#
zRK`v1y(0G%t6AuzcVC;MY%AU?pQX0Xr1k8I2{6IkbW>h;^Z{3i9(LyFaCWGvcomt{
wR7-K!Q<}G#{`0m?LE@hVtdeGXJhex!C1xx!V1G4>W!;)8lRaJ;Drc(Yzn*aF;{X5v
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-005.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-005.js
+   Corresponds To:     7.4.1-2.js
+   ECMA Section:       7.4.1
+
+   Description:
+
+   Reserved words cannot be used as identifiers.
+
+   ReservedWord ::
+   Keyword
+   FutureReservedWord
+   NullLiteral
+   BooleanLiteral
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-005";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("true = false;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "true = false" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..2d07274734b8b6123e3a9f62d8973e7280ee23ec
GIT binary patch
literal 6274
zc%0o>OK%e~5Z;7RsJI~UIB?oyQH5G0!~xO(O@o>er4<|Xik#hPV(P9V+ab-b;LbmT
z3upcXW9OahI-7L24dfE7AD=znjK3MXpgL^^#X<{6P&^g9DafUhcO0j|gPwCxsU3T7
zJfFA0DeRgt1xBSRet+sX4{%gra{3t&lr$I|g3pK`it^Av1><k&T+lF>#`=vza*MFI
zFi<pbXh_uvU~)<&fKbtM3c|pJ<Z`@esRRw1#e3N9l}q)?Nv*IuXe;avKqj#~(^sVm
z1Yrj58)2O}JWT<EE9w*WVsG#DJm%=%SUQ|`$KVP37FJ~Q=gqQtR{rdz#pYe?IQCwC
zd9@Ba{<=9HwcYhfy;@F%#rxRt33^>F0+}k2<*T*;DUmNv5e1iMm)Ql3+9L@l5yr+-
z%?vy)3}98dwy<3)B2*ouvRIgz3Hh-JL^L}ZMXqYhLu~H~^yv|{f~fN<Z_e9fob@9Y
z5s?QpB%(L5Iqgc6>wa)DI9HCK&6b*7R|D;g7s?p&7Nl8sxbe}E-VvQSQMQHFU(z?R
z9o^nx5eI7pCuq2jgfa-$LDK)+9FJQ@RD5Xby`)0rBkZVgcLeIHmf+n8?Ekvt*zAin
z`02&xDUmYe_^gZGIKP-;nsNWaX^}8sXk3)-2YSTJBx?o!E-D+WUw+%rt0VU@Ijs>D
zItiWkL~|s7T)6vg2wnH2@fG7@`}x}lUq);5pn1v<6MXBH``<@I9#VnmW!%YdA33Ym
zmx%IPB}O_DOag5aeY1-7>5{Y>r`m&X>4@6FZRS&os1MlH4E5;M>WKZ7>xiTo?3!Ye
zL6v!XoGp>9maFCuxth@xZVsu_7TPG)%P{^Epy;cT;(fVU?BXTWL;r^B*`g&{ajKyD
znG=E<?p#hE)n`N5jG-e&?$V3Z8gw&C7}_WLVpk$E!okL{eLNH!vqF{T731HyRAm5}
zF!Mf+$-Jq(U%1;?-6C*m_qPQKcg=fdgy9*aoD>sbg1hRvy!PmWt`a@;EYRcpNL%r0
zGOewaBCoGF?{kCaZkv+CKNVP|&GwjTk6ug6SYp8biWbYdHDxAy%raEYRn30^yQlB8
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-006.js
@@ -0,0 +1,58 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-006.js
+   Corresponds To:     7.4.2-1.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-006";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("break = new Object();");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "break = new Object()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..a4f7be41d0ad81167a683f7eb09ff0c1be45fce2
GIT binary patch
literal 6258
zc%0o>O>Yx15Z#1Qr~nBGi36t`K^01osE}YALDQh7M4@7%9=ITPcbb?w>&SLUbK-yS
z&)~wDf5F)KPIjG5vS|akMC*@d&ztd^v0c?}F(|kVAVJ|&@VX#PC+j%QIS;zdVYzzZ
zz4m<G0>{mpF)pK06}~@qoO?LR9iM(i1SRJTj=*O`5Jh=tpn}o2bS`NaOk(}UA(?qt
zTo@=CI5ebc2rxdS96+e(1qET?Led;<S}H-qdf^VXd!=Hn{ITlh`)zK%4>FGBnZ62D
zAP6&X-w12Z;AsjNTv4B}=X-nmvzWtwW9eYpErTcQTUe6KpV!OgS?QCP7Mr)R<HURM
z<>e;u`0M(3)OOd(wMr=!7Vl!m2k3UV2xO{6mabX?q(r_vMHDpAF0%_5wnq|BB#e!w
zni+Up7{Ic0?O?l9M5r1_WwCH=CS*q@5K(Vy6uGQ153#)?(5J`P3Zlj<ygqA_an_Ga
zL_{9akcjTs=CmtOu6x1B;6gcq)*EViT@AE5T4>FXHz3WrBNrbX=^fFj6J=Xy^Cf*7
z+tKZ97ICnaaDs+=Pbh<66D0l5_3^l4M8$`e-b*S}KEjSF&kaFysv&qM0{g!%IktOZ
z4Sss@c}k>AIX-KmJIXJnm}cC+bQ&ZK7#bI4`=K5&HOX3mzlzERo0s3V^y<icOiue8
z6*>u>_W(OC2$PUI$SKi=HxWLJ*5rQk1pi|^>lJ(7$3z}cfzejN9SqjbST(*#l;0>a
z(w1NnXN%|?Rje-;q|-Rl9()T&(k^Z@n^Gjb!>)R$M=w`D94uWwB+Xnaip(0S%bVkD
zfh@IH6@SFll%DYOugIs<651%$U1R(wK+#tu#d|U{-^B~6hyD%Lvqej^;#5HOGA0C7
z+_{`Qs!s-T8AC^m+@%+*Rp_iKQD~p&3tf@O2nQR(_VG|`O$$|;SBrn+GPMTCgc<k#
zRK`v1y(0G%t6AuzcVC;MY%AU?pQX0Xr1k8I2{6IkbW>h;^Z{3i9(LyFaCWGvcomt{
wR7-K!Q<}G#{`0m?LE@hVtdeGXJhex!C1xx!V1G4>W!;)8lRaJ;Drc(Yzn&24;{X5v
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-007.js
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-005.js
+   Corresponds To:     7.4.1-3-n.js
+   ECMA Section:       7.4.1
+
+   Description:
+
+   Reserved words cannot be used as identifiers.
+
+   ReservedWord ::
+   Keyword
+   FutureReservedWord
+   NullLiteral
+   BooleanLiteral
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-005";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("false = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "false = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..ac103a3ae5603a82d77f9e95301a3f3687c9ab72
GIT binary patch
literal 6272
zc%0o>&2AGh5Z;9HQxzd31P4xg1Xa)?RS3a0f~KjODhgFMD&mCP-D%?1-HmK-(>w$(
zz?*U9f_MwY&VRD&Y|>2|=%tFi{yg)|_?xjE88sOcoCXlTaLB_tCl^-UvaFNPZ(BR%
z>Vf;-^};4t&W8TRVN}S%_h**1hF>|u%Z~}C<b=U4c#Lo&X&7iIfACva=QQv~v3}tv
zxoKD-*HF~AXh3BjV0cN{hd|O(3S7el<YHj7kemkf!hIZfOT}9GbJf}CjyW4$kYOxW
z&sC@dPMC(fBrKZ1dxR4VuBb=YtIf@Kug}CJZ2!M@wzu+*hU8`|<|Opz%@TTCI&!lj
z^e#>uxNp8~Ed!6gZ;nUhcdcBjlrmxQDNgJ~GU8w#fdGC9zWpWSezw_Jx@vL|0?BhF
zk#K=dYLlQp9?M3NFg94KSK#qs0P}LUisM2OE^8p9!NY~QkRP}}cs)`mVqRw+<9Lf>
zfcJ3}crC1i^+}&}uzuuX(sPFfgtv!`Q=vrp?qn*1Q)zKpZ^-d|70~)%qXk3Wf>f&s
zJ2^YDJFjCW%Cyn)>-#+%$FN5%=3vbc1O>N8C<A{P^!?Ax@wlo*#e=4@B@-&2;6ydF
z`=GXL@URtw{a^PV_c~$?UUvC;NQB5ZKWn@_s4u#?W}$a(HAvtybS}>K9reZ7B4bDX
zHm({hUwvCqyCe4rHSKF$>ZA<bLv5x2d)t;gf)6nvjF;r@@Cf}wG^-6ezxRpQr5uy3
zga-7s&lx4YNTk;&G7<^Ub+bv-1uHR>GqR~;Y0kZw6KNgI%x9EHpKz)ksITX1AGYUi
zAJP`CYii5_n#<ecY=$B=TNA$<$}u?!PtK4}tI3s9vc16kPl56P$7R@2ndu>(Q9aaO
zZ$DGE#4An(WT#+)Uq#Es=uv&%Q_BQ8667wsT&+TDL3KjKMBV3#DCh~bVhaz&%D7Nv
zd9(O8?otbYOj&T(Mhk8x9hi!{{Q`SgXk~X>n<8x2yj8x;%+9pk>^19Oiks=OyzQv-
zEmJ+~Op)PyUsCZRGAgNt-mW7wA9LNuZj*o{KMWWZ&Ge3H&R#>#7;?b;W|qjhu~Mdc
Ly3$lmG|PVhO%?C%
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-008.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-008.js
+   Corresponds To:     7.4.3-1-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-008.js";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("case = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "case = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..952fefbd972d4c9dadfe711f0ddb459b3cfc6646
GIT binary patch
literal 6278
zc%0Q(O>Yx15Z#3GQE{LWf&-^Lf-2N<gAyXzG*yE_sG6vp5OQ{>8&h{Tvb|07JGk-B
z;KC8{FBm)D$*!~6Zqm?86?^?W^Je^J?1Bv242p#o5Vv^31CNtSD{om=GjO}sL8bPg
zzE^jGHduun{Y`;UA&cLiTGm7SsxZF%jBrYt3=Y9zgcC^vUqiX0-@>|}zB`Ha8$Zd-
z!wR^DqOL`KDu)2$ODZn-lAcrG8qOz|Bcp}n)c1<_alBqGH7cKKg`NIbVW$r=j#bxl
zRVslKrs1v#3uo{Y1q`mKL)gpR-8ZwC!~fdT!LmCVkDE<M$>y)svUyfMt!KsNJ)9_)
zKJI^gwGKr7SsjsgalBD!RLhyr_yi}8LK$+fPeA~`0@wZ=a93o?YWcd&K?o$TE{TLo
zbW)oH!|_NqN`$e|QoRBX4+BWc-6oC;Nw{o)kOmKz=0bkt0^we$P()g1ws5?|F~G+-
z3cL|i18>$R9jqU@i1a+5KH=Rl<5Vb7ynC6-;9OdqdM!D<uL9a0ZM0;_TM%kBVaI1j
zcIS2KM42{9sY^dsr%OtZG3+6WI9Mt5{fJNo?mFoE-_`NBsYS(swz4G?Dj(xSEwG26
zwrugB6M?;YURRu-DAwR)m!Bs@h>Y{I!MmgSqFZYgI2Trn_%1`|qI^G4Ura4B_Tzg|
z)nNVV+lJa5xsR!7U!qbcVeqzeW;R3518%>wB@f|kL>QxGxj#G+f-$PqroG?CL>y9%
z30FoV1}5Z;GG8LnX_XiW1?bw@ChCe68_oq8)$ugv-@?hXjb`REN~V3B@_hAmx)$PH
z>J}nt@w%bTETO@?J<b*=REst8hk=}ul%V+y`Lx<xIVHPG%>M)^4{%%tJ*Al+;sw=1
z{SEdrWlOZ;R6+KNCb%`UTudI-X9LBIp(94_vdh&Pbe2>rR7}*Ju0%vcfVE?<@lb3`
z3ssi4i~r+3wFJn7MfcHc(aoe2Q?a+7V^0g6>~3vy#O;Q+%NLp1nY63DVGT@hLtU3Q
z9(BfLqUW7CQk);kDqct?W!2E%^~C0VuK(n15|Q`^0;8&#9#qZQYseWx4w&E0Vp%s<
N%VbYjn#!4m`5)$p@{s@l
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-009.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-009
+   Corresponds To:     7.4.3-2-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-009";
+var VERSION = "ECMA_1";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("debugger = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "debugger = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..717f1822c139d32948285e3eb11cf43730c64219
GIT binary patch
literal 8799
zc%1E8OK%e~5Z;vX5)UCEE{MZ&10g6CAS4KtXqu`)RX|Mui3@UfCyBw`U2JdD{sWGj
z`DdIsBK`$qZ<?oflWd%{MLliSUXN$K8Gjy+Q<QPUV6E5!;;+5qVUv?RXUTD#-OxXD
z)+^OFwHGxnjKC?b=x>UQ3b}U2b)4(?Rk45g2f``YWv~GrBb-PY23nNgdl$}E8u){<
ze&Z*Fak4_LMN!|O0hL_={X;4~1d=u=a4jw%dp)Iv<TPlmUBvcUxm2&btrk~0ZN-(2
zkbYS;-M398aKf~>eZt}qc~`K5!2$IMd-!;DbyQ~esVzMkc23LV*(&5j^Vee0{7~Mh
z*+TO?cD$*retvoqaQw449F^VmN`1R*1;ty~u^G#lgS!I)_&)gV$B_HNDyrp!h=ULa
zUQH4SduXIq3A*h@G)jcA-cUUP*A4^7i``{x7m{#U2O%>ooSO+tJrf9T#!8CFYs?L7
zZ*z3;7PbPfhudLu)F$n$p9MpBuG4_<!#?GdE0MdCNM+EF4yVnQ9G+JRdeEC_&LWS2
zr&WiW9v$}9>(GiiUE!zfitv|V9cgpEn<#NY54=>EwWx3<u2Yx8x0s>{ZWt;4b-$2(
zB0Nqb`6y`-kJLC%x)3P7^$kdmN4V1HA**mwQ#&3C$Jtez38wd1;f}2hde8;h6lHh2
znij0MZ6lOJ!@}J!;7Qa)sU;5=L$en(4B9hRm(d=PUMpRq_HkqiyB%nvfk$DdaEXY-
zm%wQ-(iFpUUC`Tvim2XXou{Kj=LxTM7J6R?BP=^<eq!S6lSc!YzSf4+W*`ESC&qx@
zX&%77597pv$t08P`)9OpMhktx*apr+entz&PYc7ISS&4^{PVWL2t6A!19j$ve3MXf
zcD3;H_TR<fcv-I_4|FhFf$}DHR71Bb)RiqBwhglX>w3_IgrC5)wdah_cSH!w@mc4G
zL+q>w+i8)&XK0+s_NgiT`RSnaWi>lupTg&#X5jN{D$R>A6>(p=lE?7U7OkrpllLtm
zHt-PX$ueqiG=CwJ<4Y>9C@~TX&?#I*RJl9Vms7&2otYhcQ%BMRRCCEvB)!J2W}v>#
zSI>EsyPh-Y&NU;+%%R+Je3(tKOHG&8=Q}&tiT??tTvA7}Frk_8F1DByj%S>0kjah-
zeibzrgG=@H5nZOhkwSO&VzmnGIc*fmC#t|+BEsNcZP+th6wAXzWwX?KI*QwK5INzF
zdv$2XwUUD=$Gi71n}xQ$`uP}Uo3YM+-<qD2=Cd<yfD5}Tn7!V!+$on$z{}Y@ywv4X
zJc<l*YDRLGFwKub=f4M843d6TlSyfPB1dkvv!gd7X3`5=S*4ZqOPP$A>eJD1E1K%X
R%&oWc9CJCTT{Dt>{{vsGDF*-m
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-011.js
@@ -0,0 +1,62 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-011.js
+   Corresponds To:     7.4.3-4-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-011";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+print("This test requires option javascript.options.strict enabled");
+
+if (!options().match(/strict/))
+{
+  options('strict');
+}
+if (!options().match(/werror/))
+{
+  options('werror');
+}
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("super = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "super = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..7f55206ac98ead7d1b534cc3b8097ba0cc857150
GIT binary patch
literal 6271
zc%0o>&2AGh5Z;7Rr~nBG!GY5rK@}=RASBpE&@@$3MWO0OMdE_o-DzU#>_)b?Y2JY+
z;LSL3M7#xK=RetXHtD7f^isuMf1def{LR>oj9Lr|P6LQvIO1WQlctroEbBD%JJxQw
zdg#7$y|4wAv!%ar7!|Vc{fTAW!>^pt<tKzwa>`&2JVrQ?Gz>J9Km0AMa~k;LSikU-
z+$^k+YbfelG@x<-FuJ7dLm=rH1+L)&(i|EsB&R{Wa0kcTQn6P4RCTs`W6o9&WE9KQ
za}_Fq6Q<!V2#coh6a@?}sYlq0m)ozVF$e#(r~PHOG#)pbuppa1ub0h}(y^Nro40Y|
z(B1y}dKGy5eSJJCziZ`MrIZPak8xr@k`V{{7zFSO@a@kb_eG|xmM&Wygh29KNhCDU
zNo^7g#$(wi62^v0^$I*Y3}8|2HgH@>!etGFG<di)7xF_F2(L#9MJ(#fLmY2&4DbPt
z0<VRYus-dR4%UxcOnUCpfbh<UaVnIk-Q7%Oa3(EI>kT=%uL9Z}ZnR{`8_;PrVJBxt
zcIS2CM42{PeSKfYaSVIJVh+{<K~Qk}gfj3~LEryeACDVaR6J-YTQZ^Y5l&P?djM+7
z1`pdY*#C9^vECJH@UqL#BO*k``B~$gVSUk^H4D9St3d*vp>uJ*@2W2*78%>|w{g{A
z_3GQ2+8w!1sA*r~QYU5b9%wVA*RXeN$s>3l6T^5-?hTLeKf<%xvHSagh&{?N+e&Cb
zfB&3O<BQ6oA|sIiT{v4rU9S>jIVYVunC9f0JCioi%zQ?f^bx1(f%<x}{$Xd~{vmDU
zx}wM|p}V{}&gQ66^L6oip`6f@@bnw<X|=d=N_Li*|0z)J;<yaEGBZ2GbE=2>>+fgE
zmUzXffb3RG@T+LK7(c2{`*N8;M}pjCm#bB1FR4(dn5YX~k%*W8YscQ;p;(&~sw}S-
z|Hfr%36Lo(?){01n@JC*0&hRVZWh|v-PdL)+ZFGX&oi?#Z9jX(0+`}%x+<?b>VV5s
z4?8n-I6u%-yo!u#s-d~-D$R#n@2%UUAjwYyMoBZhq?)tWkTZrHFu$55vTiJu=^n2%
Il~djFUlUaCssI20
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-012.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-012.js
+   Corresponds To:     7.4.3-5-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-012";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("catch = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "catch = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..ce63ba5c86efc04e7eecdf0b94e8ade1d1412285
GIT binary patch
literal 6275
zc%0o>O>Yx15Z#1QsE_~&!GY5rK@}<$NC?<Q&@@$3MWO0O<${FV-DzU#>_)b?Y5oOg
z{uw8Zh=0M@`A&A7O}c3Vy;QN+&oghvZ^m|H)M8L@8bJKQ5fAH}G_Aa4S*M}jv3ASV
zL-(EQg)Ok0E&YwdsE~#4Pb}*me&viVKOvlwQwDqBF~W(YVW6S>;csD`)4(6c`h}n5
zW?_X~Ls8$N0hI%Q(IsUc0!hy(a19rb=Fn&%ISuNCJ2>u^ina2ms<YJ_bGCXQqgbw<
zt56A?Fb#J>STu#FC}40&J;GkR+<rBUIry(V?Jv8f@wnN91=;+0y=<P8j@_)-yp0ow
z?)KN$tH9&$>*G=RT`SirrA%0Sj1&8jj5yfGAb?+hZ+{NCFEVAdblKt{1d``UBB6;+
zYLj3v9?M3NFg9GOSK!%U0E=?Bf#X6FE^8p9!NaAwkRQ50cs)`mVo_%v;&_{5fDdpK
zcrC1i^=Y4UuzuuX(sP#vgm*@aQ=vrd?q({3Gih;JZ^+4g70~8zqa{P$fKICkJ2^YD
zJFgQb%Cyny>-##6W7s1WbFdZ&f`Z#8l!3nr`u^woc-+vU;z3K<k_nZMaH1O815jHw
zc-W4?{;&Iw^{!ZhmtB4y5g{_p&l>Lx>x=HJS?HZx4HEbaos08*SA8+D$k>j*jjIN$
zSKrpu?#O*YP5Tm;Iw^zqKxgI|L9w!TY{?^d9}~rRRqhRsMPP(!wP*MD0TFwYW4@Kp
zhQ0+kqskYF^cqD*A_2N|wuri5B}Q{jLUlOJ={I*SZK9d^jB@ECPSpeT^<o{w&cYo;
z+S+wRnOQ=Ad2^i2QK#nX<M%>2p(x?$H{{c5apjckEHVF6pxniA8Fqzcc8KRx5B1mI
z&y+3kic<mEt(o9g(Q+|<RG;<*Gl7l-xyvqBtI%FjsZcRdSGpn*F#*<&y}?7VHYrqD
zUM~KP>(mk;Q`X%3Q#Ch}K1_w)euf<_w6nXj&Cs?h-YuVJW@p--_KGDi#r<?uUU<|I
zm#H3iW+-ufpsIKs8CO+9d)L*P54qlZw@E{ip9hShW_nFEXRje=3^`zaIZI^SSS-^$
KU}-9+`sKf3gYkU;
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-013.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-013.js
+   Corresponds To:     7.4.3-6-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-013";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("default = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "default = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..eb56f5bb305454b7b6540363a66a23415a134977
GIT binary patch
literal 8806
zc%1E8&u`N(6i&xr>;g!L3#TA1AjAd&2?1pi>xx!16|@$(AR#Y#Z9Tjs*v`8B2OK%`
zpK;}a_%C>Ny8d+1Hg&rV?UdDtpWpl5=g;=@iZYHEY!q8S{EhcKY;tnoEIE#|7y8G}
zW~KVJ_M+y65je$l{Y{ZkAvf;2j&lvaD)x8(NH`^X47R{ygcC`_K%4S=zlHOa2L7O}
z-}p&koUM>+Q`C28KxNlJf0v36fus!zT$>BXLC<L+ISrZ{E7)Eum+F;w)#7@mt+?JX
z(r>G#-|bKdoG@+fkg#~fo`QhE5%mar_~`M|wS6&aw)@n<p7gw=P4a9nasv8mv4DOo
z@78PqdKq85tv&wo^eo``XK^^Hxa*brPT2~IxA4WASjHUOT@b(z!FNA}+_%fl@=?S=
z2n4StiG%|TQo97*b|V@k!dS1X?t#;X0p!JQ72Aa*T-HIzj0ooz!cs2;!ke+OBJu`v
z1KZmi6TFSB!0X{o*c^>XC+layK+jDY5Psa}oJu9icfwQ#4e4;&Y{}tqm7xc{f#z)T
z6r@_caMRggZ@v!AsPjcX6<36R8Rn4==etP~C(OW0g;|RVSK>T%Ied#LhTw*g(qDI<
z91`Ji8p*Y!MXafQo^&Bldg~jI9*=OP(L+|@q=t4pG>)UIHWN%AvgnSj4SLiC+QhOu
zT~7;E(zX@Kp>E;cK6ny+QEtiO#mMZ6hCye>>NGka(rcw#)H#k!wA+Oy26#d{g-b*v
z{s^1~BTX?p))l=>C`R=L>pUH0IuE@zS?GNoWLWmT`H4xh&z=lq=2{0*n?VRnnHU3l
zr+EPTK8%wDCWB0}?qA5lg)H=uu??Ju{6ZE^UlxWlu~=C+`{!+i5oR`K2I<TR`5Qvb
zyQ_ttxBo5<$5lO#JkVse0_9D7Q4QU$QCGHj*f!Yyuj@fq5`6;G(w>u_?}-qW`B~@3
zL+Y#q+i8)&XBeC*_NgWP`T3CaWi>itpQ7iVXVCNOIxq==FWgtI<T1RoCG2X<<o7la
zTX>B0WEp)p@t}~Y@+GyiC@~TX(3`l3sG4_bHm3wsr!$*=Q*-G7y18VDORw=&Gf-dW
ztLVJSUD26z?V3?$=1_1sJ<O(9r>5K4=Q};v;r|3yuBt;>m<Y}I6kFUDj#r!=kja_}
zeic0zgH!ePiD0I{ks^2YxLSqwoR$ie6IEg_5n)KM4(u6DisfOUvRUjsALZ>in4IE5
za&XPHvJX?Kckkhj7TWe|=wq~P##;Y<Ykp3;r=4*LT-bfV>@}a|PRVQnWzJUOrLL;t
zab!?cGq!h$*8C`R{skdRL(;EnGDWS=<jC!IHhVKTlV04)DzBtp%w%w?&qu?}XlfQS
Q7vIiv%mt-R&B*@yAFJ*w!~g&Q
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-014.js
@@ -0,0 +1,62 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-014.js
+   Corresponds To:     7.4.3-7-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-014.js";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+print("This test requires option javascript.options.strict enabled");
+
+if (!options().match(/strict/))
+{
+  options('strict');
+}
+if (!options().match(/werror/))
+{
+  options('werror');
+}
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("extends = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "extends = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..c0d1fe40b62679d11a87731c0431a171da147b81
GIT binary patch
literal 6273
zc%0o>&2AGh5Z;7Rs1OJV!GY5rK@}>M03p~$&@@$3MWO0O<-h^CyVJzf*^O*()4T)^
zz?*U6h<FRe&VRD&Y|>2|=%tFi{yg)|_?xjE8MPP`oCXlTaKytpCrvAFS=MRjcdXrV
z_0WCidSMGJXG?$MFe+r>`xDE$hhI6P%TEZW<dnf4c#Lo&X&7iIfB0Ki=QQxgv3}tv
zxmj2t*HF~AXh7uvV01~@hd|OZ3S7elq&YNNNKS)#;SP?wrDCo8sp@R?#+<Dl$S9Vp
z=PFbJCrra#5Ef10DGC@|Qjf3~FSlP$V-EgnPy5SmX*_N=VL>*3UN4&`rDHcMHgDs^
zp}YO{)hh7#`}%lPe%H#iN+}Z-ALGP+BqI*?F$mxn;M<==?u$%WEnT)a2!Z6el1ONx
zliDO0jK{K3B#aH0>J@l)7{H?3ZQ!_&gv%NTY4C7qF64(U5MGZIidfW{hdAEm7~lgO
z1zrm)VSU;s9jqU@nDpGG0pXny<5Vb7yStgn;7nSa)*EtiUj?)|+-S*=H=xsM!cNYP
z?9S`Ni85`p`ue_(;~4gc#T={!f}r5`31#4~g1-N`J{~u;sCdv)wq!!(Bb=y)_5jqD
z4IZ{*u>b4+W4$ZZ;ANMeM?{E>^Rvb~!}_8-YZiLvR)YjSL+9dr-&J2sEHbv^Z{w=L
z>eaV3wL5a3P}9D|rB2G=Jy3l>n@X=?@7R(@@IEGp@uJ)t9t*$-(Q3=??*k(CD93aw
zp$UBhaz>Fa611quNF+d4&K6PktHfZ=$)}E{Is4{LrA;(5pHV7(#Ho6qzFw?>*jc!N
zNL#wDs4`1vFK>>sIm*<0ZTwy+Cj=!t{f2y6Ev}rBoh9af3Y5DzF2k<Q%ntFK>Y@Jn
z`<b#OUU4cQyCoC+Dq1eakLuIDUMA3yAa~j2Y8Bc`suU_F>PA;2A|}Avu{U@q)+U82
z%e%$DahqBKWXh6zf3oCe(uJwW+t09{g?4r~wi(iP#hc~x%<N3t(O$6vrnsH1%KMHw
z;WE|J&I}>W4@4C&BjciK=<d2w^C8!J?KVkB^5cL}(@bxv=Ik}(j3Eci?`Dat8*62{
L=POO+RJ;5aQ#|m}
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-015.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-015.js
+   Corresponds To:     7.4.3-8-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-015";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("switch = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "switch = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..8c60e0ac54f0169e8a138683c23dd4c6fbe13aae
GIT binary patch
literal 8799
zc%1E8OK%e~5Z;vXsCWnoaX}oG8wf!`yd+2~(KLvlDxfBS#09y#lf>ZeF1EL6{{ctN
z{4-7*5&wd*H_g+#Nj6T}qMo*~*Pmy;8Gp8CTa<CcV7=G^;;+BsVUv?xXUTD#ozOpU
zHY(LOwdXZ2jKC?b>UWBa3b}sMb(|~sR<VEh2f``YVXz4vBb-PY1{%um{T9ww8u)`)
zzwwpAIINIsDC#>jpt1|lKcwPAAZddF*Kh&Z?HMg3r$KZ5Jhs=$rF!LUwYb`8E3S4x
z`mt)dZ;MLcglV`v!r~FUi`c<npL&Gdd+_k-C}#JmJv|(DM&t2p6LPZoYq4y8C~wzn
zv3V9d-qap`etaBw{IfV7mEZMBeXDGR#p~GdDwZ(^cN+xoJ@DO+A@_w<R?GVl2O*HW
znj{i-(MfF*blZ(=ln7(Jp?U<a9R`q>yA^B~l5klEAu~Ljn+r=l7YJ|03Pt2~<|?+g
zIR^MOwgRt*TVZq5CmpPx1w(pn(17rRKI2p<QM;2&Wzdigr_Gieo>u|g?M*ai$Rp5c
z)#0XRhrRVWw4zQ{`YFF6{L8S8v^(ETk~m=mUMS95RJan?smtM8Owk25jFkSmU&tO2
z9;cDKpR|bkYMdus2$bIX2Bya|Txs-}RXnMw9S^~AcGYI0>3vqZV{3!%cZoJ-*{!an
z1uJ3O4CT<UaOVqn5^Ygt$%Dnn?0HRtj*Qi1v`eJdN=MW&j!bE{4NY|LFzpmC5s~;K
za2kv>#qeC`^fsX~syA8Z=_u$t>9xT^@9SWOWgnU!nKb+O$v|eTwIj6|guoPuF{F2z
z2e|L!I0;}f$t3&!sVtnzLSHhrf%A}`%EHmh!f+%OD+|Z}zO6XI$i~bdojECgMX337
zweb7)-^KB`qSuiJI+?9dc?~<Nq1y#@Ws8Sx1NMJi4?36V6PUL4ocZ~V2w^!t>-=Cy
zot0oaEfV+)oiq79wWL2g8Ir!NW=HN*^!(EddVX1%$uN5Enk#t>FKo%WnlbtPnutxj
zM0&D}797rB$kh0fI#-k!i3R8*Ttrm4J2jS5(y4=)oqSVg(p@xj$x<f0#I9zb-p*Ig
zS<79|nRMrxQDo*&ZaF&6rr4#XJJ;vCJJ`wp2~aMmD_NMx%=i#nJQR*soGp;ajtPDh
zEf<4J^~RxGrqGchclL6%3hg;<6e=dFz+NK45Mb@t6I>L_!$M`V)O#|D+jD@NaL2tg
zwBuSigQ>u~xA8O!ZF}|eG0HY$o&SzCJ10HQ&bR?C>|4R?^`7NUxoiSm&eq|juBPHu
zWKdHx4tI&t{3vw(_aI9_(m&N?N?IS}$d~Qx?9IrT^uktFX(j!mOh!)i*=YDGni|E-
Qt+(?W^Knv#X5{q!4`zEP+5i9m
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-016.js
@@ -0,0 +1,62 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-016
+   Corresponds To:     7.4.3-9-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-016";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+print("This test requires option javascript.options.strict enabled");
+
+if (!options().match(/strict/))
+{
+  options('strict');
+}
+if (!options().match(/werror/))
+{
+  options('werror');
+}
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("class = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "class = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..a1e0e6e591981f371c016327a719040ea662e56b
GIT binary patch
literal 6265
zc%0o>&2AGh5Z;9HQ@9`@IB?n{s6wTv5)z~lG)>i1QK-66dqnQ;G%<D8k?n1o7vLdy
zGfo^4Z^794Pj;P6x@iNsMC+f=o^QtAj9pMsi$Sr_1QHaF1aAm(>Es>9Ipaac*{#$L
zy$_zxTi_Hn&6onCQWd|yaGWPNsxUhJga}H`80>-1h#-pc&_D&lZ|PjnFc`=Bg+p?)
zu(&W#G;nB0)c|00N+p0$(Q^vIz=h;;xM`^b4I9OW*zT1}^~#r8VYAm(*zAFfVtJ;o
zN)-sg4BQoA(G;GhfWbBO348N)>-{w5;NMu<pLWmS3HufnWb^0kvUyTI_OfF0K6V^>
zTVJ<Vfydvs$D_8pUa42hnXvdAJN6?L32=`=g1CafJ>?>hnX+2GZV8YQ$@3IZaEV5m
zEy18YmW>i&Y&g}-z_Y^u7Ugao+od8x)j=wYg-bIbKQw`eMx;^XqQ*SM_O?I=A7Cqp
zI<NA^v`xlYKXNhQxl2PLIwPCYu0-wbMk<4I<p|nns>yXV(8h3~B}3kUPU{XgIXbdC
zuM;QAw$SS9`vYu8w?{1IU@hPT4YyAygJ2c({m<?3xNbznhnC(;CR9Gdjv99dpss2P
z-j2ckuj`KoU9ko~yZAgJQf3^Vb<r8-7gJd??q4`f5(W&7i?e-KkC>QbEyuUxvcc-*
zw>7;wa-WdXPUAu+rSl%^$mH&ht3(7JV;mSS$i3z<@<&M4%XPmGh}@$BL#>R<_ZQDu
z1-?X--z+f_NibQnMfBY&(UEg<X*_9<yt%_@1GkyaD2zU1S0mJ;7b_li7A_vrrmY()
z%o0k=yW?z*6g6K7zsJ>tnDDc2$fwg1+9=goV*IB-d4%nXcQt0Vi|14i{p+u1i<WrB
zse<aJO9*PXb2)xgU-q>!fsO>Z%Pv-H&|XrO&_2<(xe}2v4mO6p!$Yw)DO6eBEB=j}
z)Dj?5rrY(=bel=_rM>RH!a5e(+1=D;$l48Wl&>?}XWB~khS@L0t#no1b@b_0sh)IZ
zh;V)&sCWq(7gS4S*Oi%1x!x<cO+Jzz1+02zdqcHHuO((IF<^f$OJv=eC(}J!87ikr
F<-cv2?K%Je
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-017.js
@@ -0,0 +1,54 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-017.js
+   Corresponds To:     7.4.3-10-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-017";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("do = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "do = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..8d7deb8b9cf35de802a770077a28cf6eb5c561f6
GIT binary patch
literal 6275
zc%0o>O>Yx15Z#1QsE_~&!GY5rK@}>Mkoek0&@@$3MWO0O<${FV-DzU#>_)b?Y5oOg
z{uw8Zh=0M@`A&A7O}c3Vy;QN+&oghvZ^m|H)M8L@8bJKQ5fAH}G_Aa4S*M}jv3ASV
zL-(EQg)Ok0E&YwdsE~#4Pb}*me&viVKOvlwQwDqBF~W(YVW6S>;csD`)4(6c`h}n5
zW?_X~Ls8$N0hI%Q(IsUc0!hy(a19rb=Fn&%ISuNCJ2>u^ina2ms<YJ_bGCXQqgbw<
zt56A?Fb#J>STu#FC}40&J;GkR+<r5SIry(V?Jv8f@wnN91=;+0y=<P8j@_)-yp0ow
z?)KMLtH9&$>*G=RT`SirrA%0Sj1&8jj5yfGAb?+hZ+{NCFEVAdblKt{1d``UBB6;+
zYLj3v9?M3NFg9GOSK!%U0E=?Bf#X6FE^8p9!NaAwkRQ50cs)`mVo_%v;&_{5fDdpK
zcrC1i^=Y4UuzuuX(sP#vgm*@aQ=vrd?q({3Gih;JZ^+4g70~8zqa{P$fKICkJ2^YD
zJFgQb%Cyny>-##6W7s1WbFdZ&f`Z#8l!3nr`u^woc-+vU;z3K<k_nZMaH1O815jHw
zc-W4?{;&Iw^{!ZhmtB4y5g{_p&l>Lx>x=HJS?HZx4HEbaos08*SA8+D$k>j*jjIN$
zSKrpu?#O*YP5Tm;Iw^zq04L6{Rx#GGcWlWccpnqRcvbEVk40dFX|-qf_W==mlw-b?
z(1yMRIit!KiS!ypMj`>abhe1PU?oO#PC|7!&FMFHE^VTj`HXVuBTm%=_4Q&M#LmJU
zMB3VQMVVPbe|dA9%~7Z3>*M!AIiV=w={MxlYH{V1>?|?=Q=r_%aT#`nW_F0@R1fvn
z-_MjS@rqLc*{zx2SJ84YepH|K1v7z;1i8yDSF6xoQmIfeQCGSm5itSQj=jc1u{J4G
zSza#wjqB7BAXC=d`%^VHlRiv^-hPH1Ewr<{v(3=9E8Z=iXJ%*Gp7x3*Fvb0JRbF`1
z5tpeRcV;MYexRy&9T`_uLwncNnh&|&d$&nLlAi~RqGozcHD|9OXAC)DemP5I-B>Ks
LJz!}nr~2i;c1`h?
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-018.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-018
+   Corresponds To:     7.4.3-11-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-018";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("finally = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "finally = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..ba6774fe3e5fc5665750170f4b008a5f4149a678
GIT binary patch
literal 6271
zc%0o>&2AGh5Z;7Rr~nBG!GY5rK@}>MKnU1I&@@$3MWO0OMdE_o-DzU#>_)b?Y2JY+
z;LSL3M7#xK=RetXHtD7f<PxoaK6}0ye>1itqZWgL(*WWZj(Aw-q-o_X%Q_AHj<s8^
z9=h*bFKmJ3Z0Ru$qe2$GKe4QPILaBFenL1UrwsPMV}uh)!$3p%!*5}o)4(6c`h`Ps
zv#>(0p{Q@sfXV^D=#;V#fuv^?xP}WzbGT_CISuNCJJ{})ina2ms<YK=bGCXQqgbx)
zt56A?Fb#J>STu#FC}40&J;GkR+<rTaIr!I>_NU#_c-*{&1=;+0y=<P8j@_)-yp0`)
z?)KMLtH9&$>*G<`T`SirrA%0Sj2-)tj5yfGAb?+hZ+{NCFEVAdblKt{1d``UBB6;!
z>Mg;bJ(i6kVQe^6&%m?802bwL1KWipT-HEHgM~{oAwM*M@Oq?B#G=ML#P&8v2OnT7
z@LE_2>(e%AXZ^^<gy${|2=9z+PPr1byBnzt&ZNa@y&)&pRY04=g_aC?13Ilb?BwXk
z?z~Q%DAPi#ukY*Fj&6@w%)wf~2?}nXPzL@g==-1R<8ecaiU%#VmrSU9gdNq;9)Q}i
z!NYb8_J3V}tars4yzJuhhzOB!eAakpm|t{d%|h?oYLLKZXk47_yK2P5Bx5=LCN3MS
zUVd9st0VUbIqgea=%jSs1MJX;z}~SXkKlcb592kt*F47m2+wN8?)L!^dz53em2e0B
z^>apzFB0iBii|`8bmD9gb-haT<(zbCXPSd=?nv6iZRRtIq>tED57g+z>W7_$>xZ<N
z>xv??gzEC<IGZC&%~!?mg>phq!qacar`6)hDA`$J{HH*<tCS<`%FJvR&#4~j*I&;R
zE%Ay|0ol!%;8$_yV*IE+?aO5X9SL%mU9482y`)5;e4;LNMIvGxtPOjOhhl9~sIt6T
z{2Q04B|xUkxc4VAZYDLDa=iTvVWFMfeQk!aUGZM|JhOeKt!J;808`veSLJm_9dMcI
zVP}R8=LedKSCMf|H57MUrTLKSy>*)uB>8E;C~2mbRCDwiV#W{y=2x>s){Ut$-Q$&}
Ia;jSX3&Pa!6951J
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-019.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-019.js
+   Corresponds To:     7.4.3-12-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-019";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("throw = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "throw = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..bd74082c9a61646f63217d75f6546cf7219be058
GIT binary patch
literal 6271
zc%0o>&2AGh5Z;7Rr~nBG!GY5rK^1C2ASBpE&@@$3MWO0OMdE_o-DzU#>_)b?Y2JY+
z;LSL3M7#xK=RetXHtD7f^isuMf1def{LR>oj9Lr|P6LQvIO1WQlctroEbBD%JJxQw
zdg#7$y|4wAv!%ar7!|Vc{fTAW!>^pt<tKzwa>`&2JVrQ?Gz>J9Km0AMa~k;LSikU-
z+$^k+YbfelG@x<-FuJ7dLm=rH1+L)&(i|EsB&R{Wa0kcTQn6P4RCTs`W6o9&WE9KQ
za}_Fq6Q<!V2#coh6a@?}sYlq0?N{5=n1lb?)Bdts8jqVzSdh)1*URQf>DbMR&D%I}
z=)U~=dKGy5eSJJCziZ`MrIZPak8xr@k`V{{7zFSO@a@kb_eG|xmM&Wygh29KNhCDU
zNo^7g#$(wi62^v0^$I*Y3}8|2HgH@>!etGFG<di)7xF_F2(L#9MJ(#fLmY2&4DbPt
z0<VRYus-dR4%UxcOnUCpfbh<UaVnIk-Q7%Oa3(EI>kT=%uL9Z}ZnR{`8_;PrVJBxt
zcIS2CM42{PeSKfYaSVIJVh+{<K~Qk}gfj3~LEryeACDVaR6J-YTQZ^Y5l&P?djM+7
z1`pdY*#C9^vECJH@UqL#BO*k``B~$gVSUk^H4D9St3d*vp>uJ*@2W2*78%>|w{g{A
z_3GQ2+8w!1sA*r~QYU5b9w;+0Bc;7#OCG`dm>9-ua&LHy{}G<mj@{n}MC?(H*;Yae
z`updM8eb&RYZMuY1n9!qBI<gT7|S{7)WI|--`ttBiDu?A%A}7tRS(qHi}epX3-=Fc
zE7ui8W(nQp&2ctIm71@M-wWl0o`k30kWZ_{l~b~_#QaZzau>&C*p->tA)Zq`)L(x;
zQ?|q_P6cGQVuD{q%f<LnecG4H1UeGrF1uW<LVHPtLd8T~=!!(d1Xw%v1`oyBq)=sf
zwfHwKQ%itMS#j@ARNPE@Fco<F8FsVK&hEZ8L)or)uY8`FooV~oD;B^MchgmQ-BAZz
zrh3?!p~Lxsrs7p(TvH9rT~}#7<a%%2CIv};8Zb(l=_S>iy@s4I<be6rERl6%sZ95H
KrKz0imj41d%<u64
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-020.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-020.js
+   Corresponds To      7.4.3-13-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-020";
+var VERSION = "JS1_4";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("const = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "const = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..dd38b63a2dd7367fbd80008b2ee8adf3d1780f4c
GIT binary patch
literal 8801
zc%1E8O>YxB6rGelJ_JHfLTp%|VFyCA@ZJ*(2$g6WL{JH+2|T^klRI;hxHvO|?P=P7
zz>+op43=yV|AK2znorLpnK)A_bv2D=e0}e^$H(?{%QB7_Y?V7e{H?b<Y;)3e)*Q##
z5B+0jyH<bIc+&8~2%Pe!{-(^RkXyH1$GMJQl}Ee3C!CUf20P#}!il6|piTM1-@^Go
z1ApAscl@L@%T~y>De5~kpmJbfv`fv0K++ZkuFVCcJ9Jt|PJ{N=C2Vh0E6v)QdU><o
zR^IFz8MW2W?{=vKPM9`#NLV~&PeH)oh<b!Qc=*?&jRP@lcJS1}p7gw+P4a9nasv9T
zSU}%b_ZqeUy@)TWmDkVzfAl*5`J*@>|G@TUt+`vZ0^?15@gkNn2X_wy@I&z3e?#uu
zrDydh;vfWq*N{X)7lYI;!JyrUMujjo?5ca<{9yojvAcrpLJ}^UAY?{_D+^(57y{w#
zSXmKygZUHNdmIz|5?g^c!`-kw9g|Mhmy&^=+cY5jc*HrCO4RR!sSH}u;k4b6ljABw
z_lE<m*yJf_wR+*Ev%}teotRN)i+(Du2>&w7BOT5slO)cWfu{<y4i&D%dFpcb7*h<v
z4I`z$?g2R@!s9fO8%c}UQ2jjVLZI~4Hy}M5;aY2mtinkR?RaP$M^|konBHa49a~%U
zXaKZ{Wp@UimaL?0CzKQ2!u<pAB>JM<lE=l!>?I9@&WzP*)FsmEq+8TEj!d-MgEj_u
zLOX>^L?r$QoE9T(VcJ_Hj2aHse>%!^9(rxF(EBjXu<VWV-zLre{bV3B*E*2K5<+0g
z#0=2;&12Y)V4Nf{8DySy|6CT%WnqMjJ>Wd#=dy76vM`y6Vr3!cIq_?8=R}1OW;SL9
z>C6fF3qsAitHRIQKa0chik?RvXfj)Y@&>-Bhwi|rD?2>w8EhAiYr*_PeFD?co|B(%
zi4d0g+2qF)>Z}CY>5#x@7@R5gg(dy**^u;gH9BISqUZlDq373>=^*a9&s@o4cxp@4
z)qu(GmqhH~8Pbzgbl_z8Ql`XL)V89+NGw3_;3A?b-l?fv5KW!SZ0;>gr2FXRnk6DV
z$5-t@eVwnI^DK8cXWoTtNsU=SwdM3MTVRn|Y+Il2=wOHcb6B~oPGn)CGP6@`aZfl~
zadtr_3nut=^jwTj)mtZOnF2?O+}Y!59eOKTCsa;UeZ4}2A;CJZe{fQ)PYRXIO7GdI
zZLh%OoD1&N@dek)4ov0Uy^DKU=-I2D&k(jHtNiz@`8n@ycFFaxu$zMAt3B)eV%Z$B
zoGrs^14+e$$hf3t?Clbv`CRJ%_d%9`q+irzD%yz2sf+Dw_GWM<y{wg0SV_N<$>7w8
XkA^$Z)GTJMy#42lt4W=jsm=E<<7O#o
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-021.js
@@ -0,0 +1,62 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-021.js
+   Corresponds To:     7.4.3-14-n.js
+   ECMA Section:       7.4.3
+
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-021.js";
+var VERSION = "ECMA_1";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+print("This test requires option javascript.options.strict enabled");
+
+if (!options().match(/strict/))
+{
+  options('strict');
+}
+if (!options().match(/werror/))
+{
+  options('werror');
+}
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("enum = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "enum = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..39a9aca701bbc3d9a58b34e8d969317678588c8c
GIT binary patch
literal 6271
zc%0Q(&2AGh5Z;9HQ;-l6f&-^Lf+{Fbae-|_o2F_|2vrjmZphso61VPdWP6+D9e4uX
z431n7Z^794Pj;Qnc9Vu&qV>;b&o|?5#&%@bVo-3JK)k{s4;q}DTY1Z}P6DrE?Ut(_
zYHw?9&;rZZ)MFe*g)Dr3Y+3hklruX0m~cu?80>+|2q%&TzJ~IK-@-bhzBi8b8;9g(
zVFg@6QO}}2l>>m$DP<3QNxxCx8qO!@!%YjxsoyBv#`apNSTBF7I-9*VXR`+~idEBn
z6)J%frr|CK3#ahzV+Vsv>Js++<?F2%r(zm*@UM;S&%B`_xp@~U3H`NPLXS&FwX6ue
zg&n2h$DOaQR)NSr%Omn8w%5z`N+}Z>A7RISC_@hR5eVQH;Mt!8?qwUErOOrvA&|V9
zBofZiNWCQ(v`4a0B#aHG>KS-`7(iO?*0Ehk!et$VG+4MW6Y@h72ycW6MWi+60k*d}
zI`{xvf!Bjd(3rMKJL^X-B0P7gPk3i!bIO&d-`z-M@J(8rHkxvBT?Mo;Txh|N*Pzv^
z!;X)R?9S`Ni83veQkQ-%PnVP+quWCkaj;VA`#zxzyj9TmzsuusU5knfEwz_SsC<YW
z)xaKr+Oo-mb_DkFd0ldRqF95QU3?xAAu^87I`0hgi>|I&;GS7c;(H8@i?V%JjhL8Z
zEXm(QWrNkrZ)<9G<US^+eTfR4gw9hJ63ILEwk>%G?;<=Ht;oIRG4@ATR_k@Y4~W>K
z9AmA7>-SgB85O=rq}wbq5(?01vqjVeE7p^9lBr#34!ybKXal#I&nS*|u&d##(dnv(
z?bOvn(!6y=iCI8xd3~JCk)!6T;r9YLp(eq}De`HxxH3w178w5tQ0^$*2)ZIO+r@LL
zhx+x`Get|Z;#5F(^Cfsy+_@M(s!#f28AC^m++`Q5RcJ3LO(>tJ>s*nD2nTD!w(wA_
zO$t?(7mNSnDzyN}g!%UFSia4q{!(tYpJF8o?d<MqGj#2Wcgkm(?K5dDd&TsZ;9j~a
zFFWdZ%S4YlGgLS~P*l8zj4P_4wCn23`&{p>+oT`y&jLn4Gd-i4qt_5Kh8Qrvn8mVg
OOq9tUt~8ZXwemkG5bv@8
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-023.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-023.js
+   Corresponds To:     7.4.3-16-n.js
+   ECMA Section:       7.4.3
+   Description:
+   The following words are used as keywords in proposed extensions and are
+   therefore reserved to allow for the possibility of future adoption of
+   those extensions.
+
+   FutureReservedWord :: one of
+   case    debugger    export      super
+   catch   default     extends     switch
+   class   do          finally     throw
+   const   enum        import      try
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "lexical-023.js";
+var VERSION = "ECMA_1";
+var TITLE   = "Future Reserved Words";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("try = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "try = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..8f4f5a90348a177c7c5cba6a82810807d58b4897
GIT binary patch
literal 6252
zc%0o>O>Yx15Z#1QC|r<`IB?1lRG~oC6D$!l4QfghDmE%d<m^rpQ+FNN4r%@h{|qji
z`4^16`OdDhNj7aDmuUU*?0GYOGq$U`9R?-04J0U?3EmRq%E>#9)8s+lIjYuAz1N=4
zJK(rQGsb09s#5=n<2=Ms?&S1yA}DDxI0l~)K@{bofeOao(z&EzFpc#ahvXJvabcin
z;Lwn&5y0e>Y5<|47Zikn3(3`Z(^3f<wo3P~-K&%v)lYS|IB0W=1CU89&-B%(0zsI8
z`%YMQ4o_3S;F|h`y?A+WIFC8{H<k{k-7$E=zJ(Rp{CTr%o>xA5S+RK+J5Ie<U$=tC
zUpL32w!2Yn)GC><cpp1HLchmFATuSha@`RiCGzDdqTmYcGP{6Ldn^HE!q|AKnSsZJ
z0jx^b9=1zGgld3P77I6KLVj!l5v{I9k*gZ>2-|xCeR_heAR4^JTk|#<XZ^^<MC1_-
ziRe#kPP-E2Itoq(7s?T|)mF3XYM}k`LK}v>1!>kDh2-eS?ugEuDBD8YFX_A3j&AR=
zn1i)~6ExfhLKy_xAnAW@j>kPCDn4}dUNWKbF?Q5>VFX%GZNYmn*#C9Ou^Wjs_}Rth
z8IdyM_-u&&IKP-;nsNWqX_GKuXk47_M|#A}Bx?nJ7?%yUFTd^R)sg#zoc1LybW%F+
zLF9@;QvkVq6XU>mK^`<ukv~DQUM~7RA@Z0C47Ca_KU_R#75Fkye!I*_SAxl!9ip#O
ziH=;7OXEp<<SiXW`?$?~Mq%_GyIP?hy;||`cIDzBZQ5E>VKz`&-X3R5q^RXe_+zeS
z#Dq7$A)ii1XrokrgYlmNMc<DUk2Geni<eXn{Tr@li<WrBsey{pB?NWcxtu<#PlsBW
zKu3byWf!Y;=xr!VXrJiYT$#ui2OGl<@KEf`3RRZ(ihtuKwE@VK>2_~2-DdVuQFw-R
zEcCLwsV$JTHE)#9Guvm{N_Nfcm*Q5sE$=$|bgNWPItxTNKN3{DgiH&nrLv1;=3Q>^
nux*o%<VOLkp4pyF?a^zA8A}Y<-^&tNx8})o&sK)Yxl;Kr5cKIA
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-024.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-024
+   Corresponds To:     7.4.2-1-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-024";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var break;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var break" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..aa3e59877d2d36190013e5c81bbe26e6788c4ccc
GIT binary patch
literal 6248
zc%0o>%We}f6m>#rsn{SPv0#-Ys6s6jY+#5=)1anAp<+U}$enQ$Q+FKM4rzXcKZ6Zx
z{(@`gF?q~5lf+2_*+k>VvG2Lp=U&@W?G__NuSsxNJQutn@D0i%gf4m5MaPxeng7NQ
zc#9x!-;D7Xm8#f&g3v=4<&93iz=GmSMovh;u)vD)$Uuehw?x-83dga2!;su8EG`Tb
z4H1o~8Ul<?se~j_^okN;;39kzZ(1rrqegKD+Wm5=Uinn>_WNz#ejj8M%Qt;hs))eM
zz<tN8J%y(!VC0qtn7ueSd_9dh{5O^krrk4m!oGzC+5EX)HZRJbeOGMWhmJG<<=0o6
zz~is=@u=;tSL)TW6BZvp$4Aoba1lzUM3!$`f=CH``3fs?19q8RkYRfw0VT{>Jk`vA
z<H878l&)Q9mkJA2CsJ7~T$u^^*aR#ZZH*!qHRchtcLezK6k3U>^D1vl+hm;eBbN}7
z$27vCJF+?LN|5Vba58eGkf4pGnp{@{?ZpeN81fFJS$7oDqr=@1oj6gpg*IQ(x1k-}
z-ew60YXK){xDS{z5^jQ||5+c8yGB$3($afzLgi!VsPV!Ow4j=TcM`Dw>yl%;C)Olz
z7oX=?O2_e87u`6&m|~jo;2Je?6f!U_$@XJCVq%iD0zXX32Ah}Pw)E=2eM(OIk`y{~
z6guFF!W9>96Wo_9$NlCp>PINni}k)wu{@yy0<8>-50=hZ<-LSe&@3_Bmc-=D7S@-k
zR5#Aar17IY?&c1nJ=kX6Q4qa{u12IsFIGCdTex({nzWYGmlYJ2cgNWr32MFq{)DRu
zDdCsjfKSvC+9=gsVf<%6(W0SvPhn=ecuw`uzrlL8Xh~L_Dp9>;Nx~ZJT#g^rrvs%-
zp(91^+{J2*bXJrjv`_S1u7qWRgN<Paa45DWh05iv;@`MOtpGA(vfYW3t+Q8(!ZWC0
zNyptSZHA~Vd7FIhY@b=H*d=pch8yXoyy@t(tuj65%#h&xP)^|jGA^f<x~?ZON4fr^
mwoN?J9|WvwW_vQVN3SJjEHPkzD@$eFnkBP6Ss5y)3gy30^yiWQ
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-025.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-025.js
+   Corresponds To      7.4.2-2-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-025";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var for;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var for" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..3b5d230297eedf3465f14241743b49ac850a6f97
GIT binary patch
literal 6248
zc%0o>OK%e~5Z;8+QgJ~-;=n0KP=#75!~vG5G!1G>6e>3Kirn34V(P9V+ab+g;h({U
zGyj6I^VmFgolUYy1Gz-&$7jzs<8Q`xRlCKY=r(}_#dE<Mg4{TH$8j!s&~=V0wKMOH
z=kpdg?!Fo0GAdQE{lsw|;wX1?`UMe`TrxNTpAkV6<)MKJqHpP3(=Zsv`i(<!v#_`@
zP&9C8NYxNvbV?<FP|+(2!oY>(Cfc-Af`*Oa4z_#cQoZu2=I-~~-2FbtD3)jXs#Jj>
z%)osotUZONDPV9*eZpQG9KN2$9R3?i2h;8uJYnC$f^7a=FPj(T&t6t+-p7tJ@8#E5
zo516*_3^0fu2<^SawaT3z>bg5?QjvuOo=StwggCte0ho}xIw$jE@0RmOF)S*7ELuX
z@VGF5Md{kbcBzO^b&$$p;mS<NM<x)_XloR?s4<VQy(7@4r`QUj&a1pJZIf}<k6cVd
z9@CJB?#Sk}D^ad{!O7rCIf6EtYI0o-v==S3V#qs?X5CRpj*je(=){S#EwuTPzK!kZ
z_BM+-SPM8o!+ju>L9hvu{%3tW?ix|?p{4hd36+nrqs9wE(1L0T-ig8fuS<^Yo>+sQ
zU3{JsDKn1Gy68sv#T3(w``1pBgaJe2;%q<GBPJ$UEAYd(Y_NIxZA-6?+$ZF;FL9wW
zN1=nRD1^{?8{@usIqo-)Q9nYlUaa?hO5_O@7-(f&e6V!RD(@wt{AP)fwgi(iTSQ-`
z65Ti_lg5wsxSKnO_Hdi|jDqMrb~Qphda=^s-NL0q+N8ClzO10IygSb3NKo??@F!eN
zND06EhI~3Lp^Z}A6~=!G6fGKx_Y`Kfi|14i{Tr-ji<WrBse<YyO9*PXb2)xgpAM8V
zfsO>Z%Pv-H&{<KA&_2<3xe}2v4mO4z;Gx)>6sjz575~OPY6XxflkHBFY%_bMC_KX&
z7CPD8(q@R-lDEm{ne8)e6}x2aOK~IJls6rHwpFU<oEZ|FAId3SK*r_NQrGoF<|x;H
n)V7I7@`Hd?&1_Gm_UN_5j3ox_Z)J(BTeD=kCo4ncRH6JAm#62M
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-026.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-026.js
+   Corresponds To:     7.4.2-3-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-026";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var new;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var new" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..a29bed12aad5bc0fb704cec2979e99b70ceab20b
GIT binary patch
literal 6248
zc%0o>%We}f6m>#rsn{SPv0#-Ys6s6j5)uqiX&Tg&C{#@77P&KSV(N|~+ab-b@Mo}L
z&0lcsJSLABXOcK+AW{^?k7M6+ug|@<r`jz>ie8i8uy`(bL*N^fM+jZ=u#1i>wKM;X
zAMh4I-o6>*F)CHD{RE+hFv=U9et`wWmyDc{fMJ0Z<&l93<Np#}(<mIr`VB*Jv#_`@
zP&7m|qG|{*I;9elNYN`wgn^6jO}uHT1dSTS9ccH<rF!L4&D-y{dHa2kQ7qr|RjDEZ
zGXwV>v-T98rht)K8esO~;PCY{=J3~8I+%9P;0gN{7G(41dfB`vfA(Fmc^^8?{Fh%}
zZ32(K*2kl^yI!eR%T8E)039Dmx5Gs!of28TZ3!YJ@Z~G4$PL(Kc0q>ii3F4|WARio
z1C9$LWKp_yp<OC0RGmm=v2bN3<YN=CXtXtoT-2CH(B2W?(^F_AqRy+lF>RA^){k65
zL>|)!i|)wgv@1cbd%?-bl|q6xnrd=g4YU_8v|`9RkY?RcNRJM8M|9#u*%sP-N#BNc
zaC@629IOSLpy57X%1F2glKy9XJnkA%2}n!t#R-*<p`*qNL(qb13f@V;{;x}p?VebZ
zz+HTvV<{cSXI*sT{9=k}#)E6r#8Jq=xFp+;^@xc{)(ZSEDI08Fe%sQk1NSL8?MqVV
z%u(ooD+=&^o8Z1=Iqo-)Q9nYlUaa^36w4DTAkfON_+aUrRo+Wj1<ew}ZAnbdY+-$w
zN_FF$Od3Dh<8JOC+JkN89R<;Q=xRiI^kSvMyM;@KtVwH0eOW<ad3T)6k)Y-);7_=k
zkP?3R4fsSYp^Z}A6~=!C6fGKx_Y`Kfi|14i{TZxhi<V@?sS?#omL#mf&gJ+~eL7Ie
z6gpDm&Rwk5NM}VkLi<GD<w{s4IM^6=0Ec30Qm9<sD*lao)CwRoCfl7j**bfrC_IB2
zmUP_R(q@R-lDEm{&i0wLid{1IWw?=U%A1Zp+bYv@&I}3859JgtAmegssq1<obCl~p
nYTLvk{XxL0X0|6&d-Pgj#u5Yex3W~$tywbLla--zs!;w5p91HY
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-027.js
@@ -0,0 +1,61 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-027.js
+   Corresponds To:     7.4.2-4-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   var
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-027";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var var;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var var" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..c0ef34a00cd7dc9ef0be23f44e5881c58730a81c
GIT binary patch
literal 6268
zc%0o>&2AGh5Z;9HQ*q%(;=n0KP=yMJ11j4Hng%r`3KbjmTDiN^#ME6!wwE-Iz$@@(
zaN*2bF!ts@yUr%vw1Hl#*z3<T-;BQ*+f`AALD_8s3Cc%;w*<LxijL!)@}TGJ)f$K1
zj_30ZIPSLj#${Bh^7ki>b05EQ$Cn=yLCGnDeef9(L{T0Zs9^M4I_ESDCb53wCxv-f
zTo@=CI5ebc2r#~+7C@-z83keBLUJ)OS}H-qR{1WDd(}#__POD1_s87rKFBzhXXffu
zfgsGleIqQI!P68lxTHQ|FJ8WWJBvB|Z#*3=yJhf%-Gn9C{CT}>9#_A3d9isLCl0+=
zCvVn)$6wdSqxQR5Yu2l|uy_wAK0&X`MIdt}vU=GOASLqUDWc#4{W4a-a6FNK3Sn%t
z)U3ec!T^?~YZJ$%B0@DmDvO6JbD=nLfrwV5QRK4DJizg;z?dH3D2OJn^VY0SCRjfT
z2^qOZLn3-(#_3R^T*t}D;7mD!w%TfXUk$W1+Gxd)Hz3V=qLiK;`5n=z6J^_I{U!Yl
zj$_y(mT<6^2!e+DNGO9~9VGqF_3^lAM8$`Wwj~!TALB%WmxiDv)fT*)fc;;$9Cu=|
z20y?2JR(x&oS#k68`T%nOf&AEJ8cpM44q5zeNTTewaD6myGhkx{p#C>-W|D5sc9!k
zsgp5ykK$02e2zwh5$q}v!MlV&CJS?acp?a6Wb19?-v>nQQ-LX0MKcCQ6s$sDA<A!8
z7>Oj9>e(UsT9q2m1vxblwP)bM>9mDr7IR9c4>;8d_1DWa5xYw_5n0RE6_sWME#}Q}
zwm_*`td-yAYD!f2=~v{_=?LwV>a8&UGoa{ulH#$}%n$K`>Y@Jz``NN3S#j#1;<5=r
z11*=6NA>AIGgIhDk-PkIwE^7~RSO*xeXFYwnGj&(*bW|wjcK9E^M3Jf+^ALnnX&9X
zOe(v%y<C)@VP6Z~{BCY@<n4+#%;&k;nYFXMVinAAOI??D9(~GHrYD{`Vq6>wD_%+_
xh1JsG#d7n$(0}N*$w>MmfmPRR&#3n7wd9N?2kh@>sjOS;WwvK5L*-1%{1;N;@DTt2
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-028.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-028.js
+   Corresponds To:     7.4.2-5-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-028";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var continue=true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var continue=true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..e79fe5f1e264706967fda0b39ca45ed95ed1a421
GIT binary patch
literal 6272
zc%0o>&2AGh5Z;7RsJI}3IB?1lRG|Xm0&F8_8q}01RBY5Ma(AbRsk4r3FKHfv7vRm{
z!kM>V?9G36olUxF1HDwS*Pmy;8GkdjtD-K0vfBm{lurb23DR+jj^mv1pzj>i8pqxn
z&*xom+&%M+%cxZ4?~fek9)9IcE<YuLk~0Q};4>nKqC7NE!T7gyE@&7`WBtZY3X8C~
zFi<pbXh_uvU~)+<fKbtM3c|pJq%$^JDnY|m`3{bI)k?GWsp0Mo#@xLD$Rw6$=IT^|
zAk4shBP^Q3(-bhcq&{KKp1*uOk2(5pJRL5(W$=XEgcaHRdA)3&RzG`rv3VOOj=dLO
zUTp%8zpjr*?RT@*tXFek@h(n$gno~UK;}wh^|C8KO61E^L_r7rGFHH7JduD3VQjqA
ztia>K09K`I2gju%LN!4ui-&7-p*VJdh*qRg<f_ix$MK%Pm>%IMh$gS|*1S(9SU(C0
z8F@fMBKi}?=}@9v$H~dyTseZa+G=)R4YWJnXw8r}AkBKBl%5^=9nqN+W!q@;C4C#m
zG3*gbI9MwLLBo9@ltHiwlK$uVc-%3f;zL*4k_(j&aH7FWBhZp+3*Jk>{;yk(?O3eA
z&o4huh?F_!XH)dY^~E&PjQbZ(n}h*F=aPIs&|l0fvUcF*q-wBv^=(V<j@+lzG?J7$
z8H4vQ4n^ra3Vm}T_Df1c@HQco$<jO+o(jVR-FoBr_YskYRAACo(U74T1*_Coi1OPN
zMj{EOes+nzSfz$^Nmflv?K!w~LhYiN#heoAJx;Yk{q<^X#Qw@{MAia!MXgywlX-KT
zEm5qNYvvERnvoTL_7(Ybx<Wgp`fJSp3@G}hq<E}0i$lDmdg#C5ezt5$R-8JhxNt(y
zK+EOyQGGmA%@jIP<SxHlZ9s2L^+Lx)-|H$wCImQk3=hTDtWf27!}vGuRBM1-q7_Xj
zyt%zzl%8O33%&eqZwmzOinq+Cx!IYuyS-u^%y3iPl(!yz&Q+#oo&|DT97!u)Os1vP
v(&NQ~^R6&>?6wI>`a^+L*=$d#_UyIfj3o!`Z)mBkTPtR^rz}I|T+{p)nuhSA
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-029.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-029.js
+   Corresponds To:     7.4.2-6.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-029";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var function = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var function = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..5acef3d410c14f60d5cfee0f2fcd7cfb927a6454
GIT binary patch
literal 6268
zc%0o>&2AGh5Z;9HQ*q%(;=pN-pbE7JPGuWG)1anAp<<(6D|dIAn7Zr8c1ZIGyaI0q
z7tXu|V{iVm>ul0Z8|bBqz5YD&&G?(KJ=JM5D0wX)Vd+@#rXZJ2(Q%wJ9`>C5YW>LH
z^#k4p$J;jFc#KL_`u@yu9^zNt`0^7XC^=(r00AR{D9R%P6^?#O=YmGzB-U^Iq%aSQ
z3j;+%helKl0mhe9Lx>bTryvYmL@q~0OC@O3EZxU(zfx{gKi9qO{+PGj2N}om&0LKt
z5QG`HZ-jMb@H7Psu4q8mtDQGHvzWvG#?!&FI|fhKO<0o6pEt|qN#%>57n^r+;>dq}
z`gR?7{B?6YYQG!RMy-+yiw|((6ZE=VgfdqmD_3m+QX*fzA_^|iFJlD^#}f%C6UIhM
z%?dm&3}9KhHgQ}kB2)vUvUs>M7m6bnh-h{+id@#2M>yUU7}G->1<~L&-kkNx1nWm3
zAtU!`L_}}QI2}rq>o_?XoGVArW=l=)tAVyg8?6}f7Nl8ExarxE-w~ZUQMQfNU()a4
zIEKB$5)Rf9LC|m?31twjgQWktIUYBSs07f~w&X(PQ=F)CcL?gLmf+n4?EkvuxEG5x
z1o`FXF_ALo{A`HcsJ@tHn(^SmX^|*o=v<QT`}&KiMb-}7OR5IzSKl`D?#O*gO*>6W
zos7YI5{JSSpgJOQ_gp19@Gc>c$->+po(RGi*?Qaf_aTu7RA9<g(2Ri*1*_1Pi3(a}
zMmiEq^=uP;tx65(f}EO&+B0zBblO5Qi#es!2b^j~`s?MIh`ptoh^*!7no6^R7W4Kv
zTcA`e*2*7nH6<$i>?`u=w1sv`^;Vew8Bp{+N%2@~=7)Ge_0WHV{cPEitT;7LaoL2h
zj+V>GqxyWHnJILn$X$N9T8Hk6s)de;zSWh9ObD=XY!?s3#<Wo7dB6BKZd5CP%vg3G
zCzajYUM}1h*w;cgznj|}dAsHf^JQ*!X6<aRSp_rPQrG33N1t+)>4|5K7#D}aikFf}
xVYPI4vD~~b^dGuyGLrsCVAVC-Gpap%EjeS!0sH$|D(lvIne7?NP&v~w{{?DJ?*IS*
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-030.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-030.js
+   Corresponds To:     7.4.2-7-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-030";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var return = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var return = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..7430834e08b2cc23a5dd02dcfb08977b35171ad8
GIT binary patch
literal 6254
zc%0o>O>Yx15Z#1QC|r<`IB?1lRH0H8F0e$<G^i<2sMx6DhTPq0V(P9V+aZnkC;T(G
zaOPhycD|EcXOlW@AeU(U@$7jselxbO+ARh}zX>EN9t++O<ig8)o_ETluD4&Q9R;s~
zkhj3|cgz@{QK^dGA9>z=9OaKsKOusWQw9eRG9rkgJT_3#=v#W{G>#^*e&dkbJS;8@
z6pcI@Q#Aw_pHhh+R`iU5FmN%s7;RcALE}d84z>s7QoZuA=I`{|{GC3?I96c#s#Jj>
z%)osktUZILDPV9(L&Bat-`kzV9R3?i2h(mDJYnC$l5GCGUN%q4p8{8G-o}ojVE4<5
zb>Q*W_3^0fu2<^SvJ)2XV#f#QcDRV7QzFZkEdf#@Ux6YDF3>Ks3mCR15>O(Hji#Cz
zcw893vUF`>yHrG|I!I-)aAhXsM<x)_XloR?tT7L;y(7@4hu8|D&a1pJYm;%-k6c1T
z?$elv?%3wED^ad{!O7rEd4e{YYI<D_v^`pA#gI23&AOwI9v$wE=+ud_EwuiUzKQMV
z_BKm6SW7rT!@VbzL9`B%{^$C5+%lpPLQC((36&4Aqs9wE(1L0T-bujzuS<^2o>)WZ
zE<TTml#b)GF1n-qVv1?T!*j1m;)tPfNw)9n5mS?_75K}fY_NX$Z9}h)+^6KU&q<-P
zK=F;PC<st(5x-9GV6r0jn<v;GV_C1)`#vP{fC`MYGOj;ZJ!e(;5>a8Z#7J9$Nt-RA
z?^CIsT#!uTN_*%n97o%@&Ag*HdWT(&SdU(=dU&&R^^i4hT~T6IP+Q&{XA9)0#cKEi
zuBOz4pMFI?y_V2MsqPBnKLd)sASvDxnfWeWP(Ac-u%0bik`<>4s+TVzs^QM%<WYS*
z5X%%gQsmBEtk$5jqBNm>qOWr$A`={J4BNv)u`w-FE-x1U##L$skQwvsy@`D5?5(2k
z1S?tSxVx*((X}hyDW5vqXVzNwis>)Iy>wk(cJ%R9nI3iKsBnI$sCW&TR8&i8*VCD|
px&G6(O+V6~1+0Q*dpNa6uO((IF<^f&OJ&`fD6>6W87gOL<-dt(>Q(>%
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-031.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-031.js
+   Corresponds To:     7.4.2-8-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-031";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var return;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var return" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..daa962e4b9521b9b21242cef03fc1ccbd31478cb
GIT binary patch
literal 6260
zc%0o>OK%e~5Z;7Rs1OJVi36t`K@}=5Aq3k9@<2_ALd8bCa6s<vG%<D7k?oM?$lu_f
z!G$ybg0b^XcAZVSX#>4fvDcqxz8QZrwyQdA26?v$B*-5L-VmhaWF5yj;X%(SRBDIb
zYtQFxaNIrfjmxN1`S14~=N5kDPA)$tf|3&kCGZ&$L{T0Zs9^kCI%hNtrm=qGCz(Z9
zTo@=CI5ebc1TeXz5<sZvDFtERLed%=EtQ~QBYy+Oy>hW$`B-!J24n8t0Av!&Gjmm{
zKoDl&z7f`$!_yQnIHx{gkDok$Hjg>_Z#*3?yJql&-Gmj{{CT--9+y9PX|Z`7Cl0-*
zUtVkikH0RDN9}jLQm>X%VeuwTe1Kk;i$JDIWcj=;KuYAxQ$#@v{W4a-XgrdDB4KR2
z)U3ec!T?sKYX`@rB0|+cDvO6}b0Ir+frv&&qsUdAxr^gnfiXS6Q4n=r<&AltOt5}r
zA~Lc-Ln3+;#_3R^T=$cc!KrctZ8X*Fz8YwEywRE=uRxmhL@qu%(mSFvC(5?b=1clE
zj$_z6EaG6T5CjePo=^tCCP@09%j0p!h>8zwZA&Ut-ouF+&y7HHswsFk0{g#iIkx*^
z4Sst0c|@d4IX~;7H?A+HnP%KSbDAU!7&;f_dqICOv&h<kzly2`n^)hq^zO)gOilY7
zl{yK7cgJKV0|mMLoDv;)6A{E{Q63CW1z>_`y=DLR0g)vtFx|>%!q9+>Rpg6A`OP9D
z9SNp#wu!z{#RhXpK20?3*|&5m?V_34lv3#(PBlXP^=b{o{>lwR($aN7m03f3d3BsE
zQKpt_<4au42ns*>ihMe4p`B8_HRgW;6n#fhystBhL%gJV=)d89wrq)3oGPe($%LSW
zmdoj*`e3M+F?7VpU3$4%gYKFtg^r27(G`h|2(WSNB_4{cS)oevZt-v2rq%$Nu;kvJ
zExD<^SmYjJKMURTZfpyr?SePUN2%GFw4=RX1x#=|-IVtoeZp0ur=0~toE?cOUPh)x
w)zaPdrRHsB@W5@8kod;|tESnWPwm-j$r(!y*x$`!S+~~8WY1TI%DHy=FCZQ3x&QzG
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-032.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-032.js
+   Corresponds To:     7.4.2-9-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-032";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("delete = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "delete = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..079b441d7d92d9bda3abdc532708fa3a534cbf2c
GIT binary patch
literal 6252
zc%0o>O>Yx15Z#1QC|r<`IB?1lRG|Xx3APb54QfghDmE%d<nB%rQ+FNN4r%@h{|qji
z`4^0x?_}56q)r>iC0c(xd)|!SjP0v-i$T$E0*Q(zf;R-Y^zxqPo$;va9aL(^!J8oD
zE%5vuGsb6Bs$%zv=RL$x{`mA$A}Bdya0nqIf+)&k0~L+FrFTK&XcFr;4#~~K;=(}D
z$fGe;LxAxql?Y-*&nXB47n94;rlk@zZWQlfdr&UbE1zoqPQT6H>4S`81*We`6$ru%
z+;_s-GkBT;23IsB?8VF7-C4}xzp->M?T*0{_AM;Q=FgjD^R)aqaK+|b>^Kfyecf9J
z9)H~&kJ|2frCu#NVevk8e1vX?i%2>pvV7GNASLn@D5BsJ?J~Q7VS6G0CBoQfs+obu
zg#j!}*A})*MTDw@R2B<YW<q{s0uhb2Mv==J^9b8J0)2Xftsv^W${Vvb8E5^-B}C)_
zjfv=vZBDxq<+>M~49=A&Xrrm7*VRDVqlH!sc?;64I|}L1;qHh|ohaKv>o4h>*p6;*
zvxI}SgcCH}2SOP{>mccWZjQ$-BPt=Z^j@4$`4~HDyf6eUsHWhZ1nmF1<k;+qHH7Zs
z^Mpw0I6mv5JIXJnm}We@@R}r!7#f#k`+*)YHOX3m?<Hk}^~-M?dUfPJC8vE!3Z0D3
zd!WPVys%$Tq782o9GEP~{pJbs$4J)8^}dgYJfs3ct&GbL7SCA)zC={mEHToSV6tY5
z=<8IfBNyb-c+wtu3y0A*ZZq#FjNW5cBi5srD<1ZjE*`R`t!paG3QEh{<7|NxwO9#%
z$kmjX@Uw5or`HnNDAiqI{AWPX_anu78Z+O;3#y0y4c4<oOS0lrLG{ulL^a&GoII*e
z2U?jzM~d9Ji`5!*R+J^QPxNiBL}Y@4jbX3xP;5*KmCJj@zj2dV0c6H>yEUF}oxM~P
zo?#se9d|diIkI-m8|8Cn`^;L&UNie;xRtKUyN*8HD$|qB91+eB1r;wLlY(lg?0Pcu
qF4uq9w#i5OqkvV<Y|p0l=(WU*B?j#8WvQ%N^JKPXD?{Z>sr(oD&gfSF
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-033.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-033.js
+   Corresponds To:     7.4.2-10.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-033";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("if = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "if = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..b3278d53d2172070ca4eb24cb0e59065c638ef6c
GIT binary patch
literal 6255
zc%0o>O>Yx15OqQ+R9ujdIB?1lRH1?>7qpF_X;4$5P_a?P4Y|A1#MD_wwnG|;U&23w
z3upcXW9K{Bb&~C-4dfE7Kb}2r#&5><bf?Xs=rw_c#ZxI7lD0^m5OOZU9yzSkPW(51
zAlg8@Jv+wZOzGnH$Amn<QQqYAGb$N9=Wql8r;=(WA`2CczZJP;Q8<nD8;9f;VF_uW
zSV&mJ^ax;bN+pCyvkL~&!bP+--n7z^MUCP;Z1>BhdgWuy+Z(ibdjpV3EZ_E3nFdL@
zh5JT%XAaL$z~PDols|v*YJVPc^lvR4PP=3Aq<ae~+5CC4Y@U@r`B|}f7duY;mtQu5
z$6q(cqp`bQsaMOHuy`LkK0vQ4WT-MFvV7H+pcL}uYpS7zcG+FPs6Cc|66Jh6)y}}<
z!U59KwS(<SQ>p8qw8O%+nUEiwKxLz2P*hrD9%6e}qEC;p6=YphMPuG3>#QHSn20=N
z5tY4(%^6psT=#>M!-Xc2HJW;MT?4c`UTDpbw;;`?qmUdO*&WfD6XjZH^Cf*7+tKYE
z9&@l#IKjZZr;J0m36lQj=6Kw(q7p#c>?IQ_A7MvL6h@#0-ISsmgZ*EZ9NT@dh9JB6
zJf%uy9G`XB8|N2WOmh)jk|vEpj>g5=erQI_OmbG>uj8`8=H<67vpRC0kkdZLh0Y4a
zw{9|3I4Ee@ffx_QEApUuiv0<e&3gUsW2%mr#8@li`oq<8PK7T~9W+avb`;pO*{0?`
zmFUS8$+WI?hu+F@w2Rx!XB0>8u&WW7(dnv(gVfc-vU%&860?Td^7c4eAxEuN!ygGf
zqbB0~EAmO&(io+CYmEOTP|O8Mi@wM#cJYepVSdB)T+tG*I91U7d<kI<cdn+7>XV^Z
zCeV=}ciF{i4Z3Se6UHazI#;49#=+LGeLNIfvqF{S#p2(%O05Aht9+aCv7+!4OIhe<
zcUfB?Y}dS0KFe&M%NDcO%zsN<OgH6e$DD7y)T_<{8P1O+74IR_lIp1K`a<(IH+b82
l2}tt0fK$<2FQ@M4b;OJ#2Ha0(iL5&_<#I1qmdd$e`7exa>G=Qv
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-034.js
@@ -0,0 +1,58 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          7.4.2-11-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-034";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("this = true");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "this = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..b5015535d3c6013bfb084d5cf5c3d7d0f8af230b
GIT binary patch
literal 6251
zc%0o>O>Yx15OqQ+L|l-NIB?1lRG|Qc3tA#*8q}01RBY5Ma(CUt)LlomLz=(BKZ6Tr
z{sm)izO(CWwoV(!C0c(xd)|!SjP0p@kCCd^B{-~}2;LF+5)~0bXFMFDgGTGvf9nUl
zN03)BV?0Kss$M-t=mCuKW~ZNGLGc+Qha_NFU`2Ukpu*|5L>Dv)=dpgnkise~E({b6
z5sj#t0L)Hlgd|e*oDyN+B78aBv{Zsdo$5Vk_v^KG<8#ZajM}`)2xJz^H+@a2h``Li
zeaEc7gr_NB<cbEEJ%6$PW*KwxZ!8^8yJPT#eG56+{CTr%p4PwkuGqW_9moF5udla(
z$6q(cqqe)<XgBLlSiBD%pU7~)MJSyTS-<KDA|>$UE3C*R*kyJ>Chds?)G%Yysb&To
z7e+{4x=PS46&9*Zq_SAJF%ybY6R_y?HHyq@%tL4&2=M6<v=Y(gP2O3y$vEprAt53U
zXoSUZW^>w=AlGqlGIFkvpq;K-Tvr3_O&8iQ<Sj_E?kJ~6hr1)XaH4DrZNH@NLOZy<
z&k_z+4ku{1kC-wNZiA%%xj7z7MpOdQ(|d73<s;~5@$v+;th#~^60ra4l4Ca(YZADN
z&l4=A<M?cg;WWRPVw&;b0(Ef|GB7U5_5(d)VUo21-%rX0+n3*V^y<KUN=`dX3Z0D3
zE5)uT54s>Q3I0pg<5BY*_cI*p)#C3XEDx!GNUOu@<FyM`eXn5^bZZRvB{4~}hxKhL
z)sJgZX&h+}ytSif54Kr!6h$APs}t$b`D%xExod~4S?ihtvw_O;_BdN3L#<cAA9A&z
zCH(9g@QHdt8>NODjQ<QM`g){zEHSHHyrz2S-*`P+v?MD|lc+dblCT9km-9#U$yh2=
z=tz+}cd^<cgAFAK?Gt^Ot6`boU}M-TI21dJLgn&W@o!wDHUQ}++va?zC_jZVmJHlo
z)K<vaH7}IUob5AfA$!g2m*G;nEzdgobgN7+Ix9rDI1yC1gUk!6rLv1<=6zxGu5FW#
j^fv*kp4nba?a^zA8A}Y<pUYBNx8})guU3Z2rBeAXZ=UG}
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-035.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-035.js
+   Correpsonds To:     7.4.2-12-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-035";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var while");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var while" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..5836694ee868559f4d00ebb8d6c62420f5e35786
GIT binary patch
literal 6256
zc%0o>O>Yx15OqQ+RB%8-;=n0KP=yMj;sDzSng%r`3Kbhw;)LAYX=3WGBikX(fj`1O
zg9~T=1!Lzs*>yJQrVZp0tv{YUZ^m!N_H?_&q3AV%hQ(tk8j@a+JR#&%gk7><sU7*R
z{Xn#Ucsq8C$C=W_?~e$%hoijl=_gb&ddlGd0!}5>Ohgtc9DOTt&Z2M<>o*R`&BGGX
zLa~sri0L7~_>@Wrk!EKMq=k#<#c0z?OBOYXcd*?rm+F;|HE*Zi=I!)B#<6_cS7jO`
z<reN6<?R_fLji|N7Eu1|`O8<cn8SZ->0sI|iznS%Sdz`3*URQf`IDa&o42v!$ba!=
zcO7{Ab$vV<yX%#DwVVlycd_FGbUQ+ZDpMlMmn{iOAz!|x8ZOW-y9*e$#}ZJYoR6m3
z8F*Ycz_N60VY|{)>N+UxuyAE2<VPk@*=QRSwX87@u)QPEr-#@IvM#EkF>8}`){k6F
zMDDYQ%I?_aj4M&Dd%?-!OcTi(O+CG?0ooodv|`8`kY>|SNRE!|j_A~haxJv}lD>)U
z==L^`Iao_L!N9$zj6=8%lK$uVc-*q05<tuBB@-$iVn<CBhM)!Al%f-Z{a=?Hn?13H
zAiMZHrb=ZTpLN+C<riB_a}k`ACXGUl#>LsbZ$?Z_a#rB4;<CZ|<+ly9I&z<o(>}+A
zPD<z9H_%)`VXvTN8{WjYFkX`T%@g#G(QFp%eIHVFz$6A+88<LkKIfG964gPo#A#cB
z&6_Q1E>wxGT#!xcOLy!o97x-^&3s0I^bWfkkr};Q`LMTi`H(hoT~T9JP+Z;|XA2~$
z#fta?p{L|ToPI?<NlO}|ba#dEp900)khJKj%zPIws2=7wSkDzL@rqLg-AkAd)^O))
z@~A!@sAU2j338WRtk$5jqC8=IV(xP#s$v{$4co;-u`w-FS>7!Ejl0weAQyP;8cVpD
zy;c;SU@Z%s>~3pwgzbvA%BPv_Gi^0{#r&7zX1XqKJLY`rRL?qdWH>*RRJ@2xN~)u_
t>j}-<T>o*~B_PQU15QPAJ)OFv*AX+07;wLtC9>|!l<A(XER{3G@?Y8l>Kp(7
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-036.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-036.js
+   Corresponds To:     7.4.2-13-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-036";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("else = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "else = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..ff6c26bf64799bfc29ef046af0103552d987b619
GIT binary patch
literal 6246
zc%0o>O>Yx15OqRnskk5^ap06As6wHL1A-+gO@o>eg^FGEirif{F?H9G?U3fL@Xz4F
znSa69oA2y8o78CoxkT%aXV07Qo3TCB?J!dD+5|_HQ^8vTU!fvG=$uD=bXaem_;3A?
zcL?&zW{k(ER2BIIp@%Tao1A`z1;yu#9FdS=ffePkfr`f85?#_bn#TGKLkf$qxG+#O
zLNumo1TZ<J9+6nl3rd86i}BTX(^3f<w<<f(?$@e8{d3bR58Ax)0Av!&H+>DNh``Li
zeaEajho>oE<eG+<y?FWR%{=Dl-&i`FcF*7m`xaJY^XKidc~<-4yJGV`be#D6Utezm
zkH2n@M{Rdd4;nQmEIxpaPo&@DB9cyttX+2mkrMdw6;|X5>@vF`qxMt+s+h6yR5JsP
z3nOGzx^|&mDlAk$q_SAJHWP|t6R>D?HHuu-m`Bjw6X4ThXeA=x4c?l!$vEprAtfRY
zX^cgGVsqM+AlFH7GIF7ipslu=T~`C`jTc%o<Q+(}?kHtPhr1&>bE0euZN8*$Lp!*=
z%Tf;33Qo{)A2DSl+5}1eb9+4Q8c_*JNAJZ6m5-sL$x9>9l4=XyOTqrHOOEYCtV!rD
zK2Ncfj^i^B{c(OV#WdsLC2He1VqjdF?T32A%p_|CzMqy2HZQ+z>D7VzjGPvvg-%ZA
z?If-!(fD18_tMpP&^*Qb1jBl*<og)QBPt-yYOwZj<$_h+t5}8YD#Kk#Ov>zFeV5Ag
z;*vxfH`>E)=@{CBZ5AEH&<E&h#d`E=mBag$D~G%}>xS~OhPv|ZI9nn=EmyxEaW$hP
z{QMj6i8?|XrTS}({~Rd#a-?`7FpFKhq<ZMza6MbJq$^H?s3cdCs0lll(?|8`P$)C#
z$dEgCvDzfPHKhpc6MdDdVwvJ#V^|pu#n!A)xx7^T8`r2cKrT@zCArqw8%60ERIsGy
z?vA!V({6Z|eC}+Yd284kroJ5a(M@^L(MMb5ddyj%z{Qc8!u4ZXO)X_zqA>@B!IQR4
kJF=extYT(+FttaoC1xx!V1FsgWZjx1^F3G@D(C9tzn`||t^fc4
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-037.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-037.js
+   Corresponds To:     7.4.2-14-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-028";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var in;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var in" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..a490d4fc7b2a0a911f741538856a303b4d7405fe
GIT binary patch
literal 6260
zc%0o>O>Yx15Z#1Qs1OJVi36t`K@}<pgeurZ&@`wiQK;Cc7Y@kXohGKvdSyGLIr2C7
zXK>-nzhLZqC%euj-L!#Ts@Uu2nK$D%W4o#yF(|rCAVKk1@P;5QC+|4UDG$2Nex-Kg
zz4m+_f#dF&Z(K&DDt>?HICt<XcYOH?5tN)VH~^m!K@{bofeJ>yrE^ZhU=r&$ev+Gq
z#f5>QfkQ*8h5+MBDglIwo>346E+nmy(NYN-Hj1}!+$)#rm5()dr$6TI^g+h4JTq6N
z3It&W?i*q489Yq^gA3{t_Vn3{-C4}xf8*(3*$smy>?SP9=Fh8T^Q8RA%ZkmLIC11X
z|MGGjc>HyBJZit|m3p<D35&OJ;sbO$Tm&*xBFh(%04b3#PZ0$z^vhTQ!|_-GN`$e|
zQnLb&3j<h|t}PswiU?H)sVp9@%!T~O1tJ=4jUtzI=01*h1jh6bM?util{aR6GQs+h
zi^<4+8WPbRGfsyR<+_)g49=7zXrrm7_tik#qm5P!c@5I6Ckn~gk=+rUI#ITb)?d;$
zaU8?mW-$kAi6CgW_k=PC)<M$$Tpf>FMpS%=v@MxX`2Z(syf6eUsHWhZ80`PL<=E_r
zHTc=(=P{8o<NU0P?x?<)W}0#T+-Z_9VCY<&@B8|TsYTWfd^fHdtY3ZG(7Pk|2{r9=
zT<W9@-aVX9-3a(uVXvS>8{WhOF<zAW!xI4*BU*3S`+Z2{0Tq~TWi(-6K+Y=iC8GRh
ziIKJhQ#m7|uT+V_T#!!_O?&n&oJ!khW<H}-dWTbuP=CE#1F^Ss1Ch3LT~cLM&|Y32
zXA6|6#oG7-uBHTqpMFI?ok(b>RCk5>p8`eSkreOg%={29s2=)nu%9hk;uWU~s#h{0
zsG;R@@~A!<=w$*O338WRuGXNlqDrA-qHlC1B4Yw<9D9X_Vq;pUvb<aT8@H(yK&C9Y
zcc)8kW-k_n$Joz8C%YTl9BI4c&GJcRcBbuUFIfRo+)mf!eMg^gmFj6{ju7XEqKcQ1
yNl~?QcRi_jo9jPt+ax6Ualoo+w&zoO_F8hrk^}a4vqaXdwKCoFm7#K`UH%K{&FlyO
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-038.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-038.js
+   Corresponds To:     7.4.2-15-n.js
+   ECMA Section:       7.4.2
+
+   Description:
+   The following tokens are ECMAScript keywords and may not be used as
+   identifiers in ECMAScript programs.
+
+   Syntax
+
+   Keyword :: one of
+   break          for         new         var
+   continue       function    return      void
+   delete         if          this        while
+   else           in          typeof      with
+
+   This test verifies that the keyword cannot be used as an identifier.
+   Functioinal tests of the keyword may be found in the section corresponding
+   to the function of the keyword.
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+
+*/
+var SECTION = "lexical-038";
+var VERSION = "JS1_4";
+var TITLE   = "Keywords";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("typeof = true;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "typeof = true" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..dfc706264557637de7d73d1fc86684715e547538
GIT binary patch
literal 6253
zc%0o>O>Yx15OqQ+t+*f|ap06As6uU3F2E8&)1an`Ld8bCB4^i44DLFz9n$bq_-7mt
zXZ{6aZ<5W&uCqy<Hqc8Id;P}qX8dMsPxZQtl)VnYVfkF}w!l}Yh!AS=aDa|$jWhqX
zAMh?g-oE+9V^pg0_a_KFgs;5G<ri2`++yT}1PlwTD31(OnEaOLD~-Zwtl#iSVG$M=
z28xD=MpTUfCYRJg5-EB~i7;>xzDhPNm7r0(`~b%NYNc8G*zop;W8VG{WD?6ab9JhS
zz|6pX!>l)lrzv3Mng*D?I5>JWk2(HtJRL2&XYho53oEku^LE+1sDAQYv3VaR&iupA
zFE@e5U$@7j_PbeY)~n8PGBGNha#_9Z3L+&?<}0ko6<9GFA>;8>4l0<jWT{yJCx#KS
zDr37aE)^E4Nu;uPxHcDxi3?b?dm2Tq>dYe;?+Xa)DU1@)<aOSj_sIn7M<FFCk7<O(
zU}AGRl%Uvgell{Ykf803nzgHe_7X#DhP(rH))S@d>~MEVXHJyO(B`Z9HjG2qdo1N(
ztq=qa_W@Hz!c9>1Kexx@t`U`hboE}GQ27`p8oV?HEvb&+{S@r~y6f1E#hL`}^79-^
z={P@|Vvy7q(@!%Vd_^4`g$$fa^Zi(VF|)|pgde3<gUzdNTiQBspHb5;(o!d9@OI-+
zln!t!c#{&pbUhvpPjNrNv9=cfKE?8c3dpo7SRdIgSoOVvRnVz0+>^u<%`Vm#s?0bp
zNu>#-J@J;#qCMDV(NPw?hpBd?zh13(c)N1%khf~xP+->3S>7FIOH`=kI`|W=X0(L2
zz5t)7E3{K;u*Uq)fwBYRipLVOIK)e;hyEMcvt>)V;?#+Xt0f5=uyZ+mRG*HdGJ}o`
zxpSAR4bopzk<c;Gm$?d-DFHT)9m1j5niVRS*NT7RBDDs{oYi(`qS`v?y)<Cy8FaCv
z@9v(qK-F$|pM36YpLzS(8y3GDchXIH)zODr<$BOrpuxqlp28JmT2C#FU92+i3d5Ie
mn|fqF30URK_HJs=UQ5nca=`vtmdU!cOy+yEGE~lW%6|bUgXrS`
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-039.js
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-039
+   Corresponds To:     7.5-2-n.js
+   ECMA Section:       7.5 Identifiers
+   Description:        Identifiers are of unlimited length
+   - can contain letters, a decimal digit, _, or $
+   - the first character cannot be a decimal digit
+   - identifiers are case sensitive
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-039";
+var VERSION = "JS1_4";
+var TITLE   = "Identifiers";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var 0abc;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var 0abc" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..fd39cc1f252e5610d90e799b96fe785fa68aa89f
GIT binary patch
literal 6253
zc%0o>O>Yx15OqQ+t+*f|ap06As6uT;Pq0MLG^nYfP_a?3$k}xhQ+FNN4r%x){4)-S
zGyj6IH_7H>*V&{_8|bBqy?*0)Gk!C+r+QsR%3g=yuzW6fTi|O{L<qHbI6%j>#+m=d
z4|ta#Z{K|5F)CI0`!j?d!&lzq@(U~|ZZUE~0)_=vlt%_COnysrMWb*U>o<H-ScJue
zfubRz5mjS=$tAUrM2cQgA`D!FuaiwnC1}(xKZ0?;T4~lkHN5@dn72O!nZ)wVT%9T+
zFf(x9Fze0XX$ly*p#f&E4vr4yF~|Rnr=w*L44$xWVMR87-YuIK)z7{wHXp*onSc1@
zXcKt+b$2{!znisYz3MC{6Qj~8m(`oDAW{NlzQT%JgB7z8G9FLmpn@4omYNlCVi+N-
zGPVojQemN*L@JAiYjdHPxPV2wr%~jp&OCwfzJRcv!YC0<Ugzz3pG>fR6jGA%m_}F(
zCN`%-35p%(CnJ{%3EJ+cS-To&FEO-c$a_#{JyFWe4tJ+?=0w>HZN92+!#IS!$5IZ~
z3PI3tA2DSl+yqtsb9X%M8c_*ISMS9Ml}}-!!AoP%lIjTFPr?4LyN>NxtV!T5KhLq0
zj`OoA21$J}{WRmj73$z9WZ+zy@5lO!nMKwn{B>G2*u46-rL6<^88z)9Ep>7RZ#ND_
z=@7Sqw<+;U*W=;v6!#MxYisfEQ!G!YfK01`^^xs@Ro^RE1)U1RJxNT_>|%YP%8cWZ
zRGL8A6L0A(+JkKt9c9r6m}*D*>(zRPcPsY}d8^hf1!fJM<^6HCM1@+egFoSFMoW0>
zEAWZBLOZ1fYs~)~C_6B&cq}oCL%gJV=)aLYTehStPMxT@T9U8<JD1Z(_4!CDGw8^W
zJ9oL-ApJEJ2^|xCnX6!#5@6%lAsmXWS)p=yt@t-CQfq+BS#5VFs;!gWO9Pf(Ko?8;
z?(S&|RPC1c$(PRdnYWL<W%0{#C*71+9eub}t_Ph38eAOfDO^FO_0-bX#VYf@Fnrmz
lsYmvcfK|?H@22+bwd9N?2kft9nXFsOWWGl$L*-nj{1<;s=-mJS
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-040.js
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-040.js
+   Corresponds To:     7.5-2.js
+   ECMA Section:       7.5 Identifiers
+   Description:        Identifiers are of unlimited length
+   - can contain letters, a decimal digit, _, or $
+   - the first character cannot be a decimal digit
+   - identifiers are case sensitive
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-040";
+var VERSION = "JS1_4";
+var TITLE   = "Identifiers";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var 1abc;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var 1abc" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..57264e20375fcc7abebb470b315ba9b4ea819bc2
GIT binary patch
literal 7088
zc%1E7&2AGh5Oza>RuvKwCwj^eRH0JA36`jB8q}Z=DiZaIoLx6Db=HyXkmgl*7ajy8
z#F@8X>@?X;vg>TNyJ;($OBDZn_Ixw`X6!hs-(#fYbO`oJCxW*H?xF%hsKvb@I;_?|
zG~P5^-XqA_HDeq`r7Hb+iqIn%<%Fl7VnK0>kt5<VEU=>7H&9;iTcUI7d(&8dV944c
zEG`Tb^$_)`ngE2SR6XJ=dPa#ba6aw^o0dvYzg>C=?Tt#gS^ZRZb}!qU-Aj-#R>Snw
zs3HP01NRNH{v6&GbTD#3UCds*e7!f1Ir%o0j;Gx-c*4Gglx+T5Et{v6&yB3ud;lGl
z^2dWOH-gCDt0VG0v^T5GS|zif3>KA{a#^|P2_hv>)=*fHF05iULMH8z9F#F*!BjH?
zjtnCtEn}O|E)^E4Nu;t^n41ZOzyvJXeT^d18uJ+12LjxB46Q^od5yQ{Z8FaKz7`Rb
zht$Vn7}}h6B}n!tJ{dVvNYHji&919~c7la+hP(!O)*Z$8=*aGr&YY<H!|(0{-JPKS
z^#rBN=Ra4M&vhXKZtt^*gO#!_dXFh1-c6{B{;rP4O(QBU>FK>>Lgf?asPp0kw5U3Q
z4<fKv&+Cfg6U3Uh*~RAxmNMh`Y>Hu!U(A)1arYc`u<tQ2F3R>pJz{2(^&a~wDjVFq
z{I;%F2kv8X+G$kiBy`^9$Q8wX+;ZPW_%B+IFPo>h4{@wl8~r}U@`wtEv<j>~UVF`|
z?`5pqPMP7pBqnM0uzr(>_2ZIM8b{g#Z|Nx7fo&EtilPJPYWsS0y4vAg>e?Y`*1Dp=
z<WN~&A7@KssO2j7Bd%t&gtxu|pQtCaQEHfD{3k%!fOf@460_LFOR9(djMuY8OSIzD
zh#F-};?-g2a{8!lkEJq(ju^SiE>`PgkW-S-KGB!CGL{hzHiqrNp;(_4sw}S+x8ov}
z17yN%yAjH^nbckyu=otBSTe}&p0+^Mu6Un(p4mQ=*0EPiez)jVM;~sL=s{<J1{WrJ
z3RjS6J+%~eBbC{Q-ED<5Hc~y}p9HLOX8Y^G9=(>BvBZG=wJer(Ynn{<Xl1CJtCar%
Dt*QEl
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-041.js
@@ -0,0 +1,48 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-041.js
+   Corresponds To:     7.5-8-n.js
+   ECMA Section:       7.5 Identifiers
+   Description:        Identifiers are of unlimited length
+   - can contain letters, a decimal digit, _, or $
+   - the first character cannot be a decimal digit
+   - identifiers are case sensitive
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-041";
+var VERSION = "ECMA_1";
+var TITLE   = "Identifiers";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var @abc;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var @abc" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..47f879d5daebdd7c53c0be93ff95dd359160a195
GIT binary patch
literal 7085
zc%1E7%We}f6m>&ssVXESR<OzvRG~iT3WlgO4Qi?=R7~g=xifBJ>dr*ALz-XVQ}`1W
zh&6w~wWrDCG2={9Pn$xsiQ>nx@446KUOSHLv>7QmErR{hF%O#@U!Vd)=rr_uXun!N
za^JXK*e1x?)MFe*g)IGehR|ae<qS_h!JOh#Mh=L_FvpUHfrj$q-vXV}z#ql>4MUcu
zVTD{nQ6JHO$^pRel&VhxNzW+Z8ZN*W@ur33G-#Gqq1~;N8`Y0>XY;Df*}MW7#&UIE
zjY`5X({SG~>rCLSLkA<5)Whu6*6z+E=HOdf+Mo77<8kvA=4A8d&9Zq?`Q+MS^C5H`
zx!YfM7lFrLH^-y0yHRb_D%N5$UQ}4+vU1txL<peFl~|GsSVeDy4B8VpC}YOrsd@&S
z7)HpvjIBYtkeJH`5z=5`ZYC6B6EJUf6pEPFm?zNQ<>1ysXeGQ6*23nbP1;%CmlA?<
zp9YxshBl{M35p%XCnIMPaoTLj@pTo@M!ZnYkhh@Ds-u`59rjM?*on$N{O(WC{R#SC
zPtfAmMJvz_Ztt*!gEfZ}6x;_)8SxjPF8XtGJg#X`@km?k#R`>Ap`#ua2cSjS;$b%d
z`=74cS0b?{p1t@y#zI(*&j#<s`9<GIS?Hak77ly{#wFRluSSebGG1eMlCr_#<+o+E
zI&hzo(>^DKPDbZFid<3L-g*5t!F|bceAPTc{Sd`!vFP_976+6=pjBY;{?bcEc`sw>
zwaN^41kpLOjn#`psvBoyQv1;ycQXgk25hrnDTv-fS2Iwf=PMoF&0RWVO<LE~mmCVq
z+v9A81T|X$e-O$sDG5)%0-vbOl~J;nWBg}8QKBKkNMWYCct-V5pZ<ELXh~L_8j(@5
zBz_%sE=G^)^S)B1(2*i{_F}b8x;f<t<r8(6D`S!1U~SkI9E#;}p|W|axEuGV93V3$
z+toPPTB*F0&x<dhh9zBlx3npucFo)5OKbbgTE$*7_uZj49d)*4rstd~5?mO_DO^BC
z<<wBuMIy5YyIUWU*hKM2e-JRLndyHAbMzWw#t;MMx3W~$jaf3=la;1&qEP+|&ae2H
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-042.js
@@ -0,0 +1,49 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-042.js
+   Corresponds To:     7.5-9-n.js
+   ECMA Section:       7.5 Identifiers
+   Description:        Identifiers are of unlimited length
+   - can contain letters, a decimal digit, _, or $
+   - the first character cannot be a decimal digit
+   - identifiers are case sensitive
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "lexical-042";
+var VERSION = "JS1_4";
+var TITLE   = "Identifiers";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("var 123;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "var 123" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..483ce6f420cb1da7077a22bf97bcdeab264f2ae7
GIT binary patch
literal 7567
zc%0=~%We}f6rHr?Q796E9c-+!X%(TiQYEA^iA2+&riwyEqOOpTGvg+v?l`g?(g-2(
z9efI(!3xBJHGhHaJSLAB=jEg+WD~`YGrrgNo_prT74;fHX}5}?pFU-@!r-N|;y6y3
z`c3CBS2!si6g^r)j=Q7RxCC>N{_@mu?#oqf@AfmuFf0>vgggQn6qp7Y$`5~Y=K=?Q
zKh|%#Bryt$G7W`&2M1Vm0eZLOd=v<LjuF#v0lW+k%>~0jC4EPZ7qgjC?oGknX^*)(
zZIE89qMplRffytj?jt1iAw1;*g08R!$@AU)7sHs{Z*6I3+p5N6<|9n$&7X_)=2`Y_
z(Uv!F$%&KV-uwM!@Z+z=`BB+j%9Zk2D_&fe6X%oxLTQa#^<?&{#t`SyVMPH2x|D|L
zW1#MMqz5vPkZ`NsA@hYGG_Ajsg<L=;N{9=Cg>y4uB{TuDN?oDwX^nX(#~Vyu>aiR}
ztVHv)GHjE+tgnfPkUYczWX+z#sjHNH-HJ|v&V|Epr78xWtALW>gXRo*4cx3IKzwxA
z%h7?1GCgSdIsLXAm)Bk=5s5X$B`CPp5EJAt1E>F4oFCUUsd%WS&SJ%tkL5&xf-Wc!
zRYn^T*#ETVxZNUa<k^eQQ^>jH_$;wzSYNc7Ce*udsxa`0G%m{aL$zXHlTm{Ikd(Ay
zNrHb{tZ4LTJ&+e;_F+NRRffIJ6{=4MYH75LO(C$Ro-Ttlructfy|Kmrzl9u=gdVjO
z`xa;?21tS3dsg`EL6~j8O@X}#)EUq>LiA)3Y}*A_x%J5|<YrggfMg169sp3G0tgCl
z5TMo@)8<S2R(v)<#)!uDa9@1(6at0X`YlPi#m~quNK)bL;bX{;Fq2g>D^JzW^`OJ`
zMncw06GjhYpzx|00_z;<T&Y3TJBlq@6Vjn3V{;BnTr!iZ5hZiVO7KcfRRXnoI?6~*
z{h~CkM4wSj&EYlr`g}Hl9G|RRaYV&{9-!q9(w|O^DWgPlj`2SR%3V1wXp5^xU-5)2
zWRhfYdlFsd$|KRwTz#qfWPqgx-4R2Z_F}bw8gmkQ>P}SWDg$}M1#83dGAY&uiOOaV
z<!0!o>yu>9<OIP10%eBa1qTf*syF};D4iBYjunlj;sI>Qw|UgC*RL8ucr*6Zwym9W
z-1qqz>*5%_xn=2YtGpLuHMZv{65q+wZ48LSA!3PdjT)J*2Xg4&Ba<dIN46oJ4Dr!}
V8S#%o?2Q<!Yx{ddV?SD8{{<X~l|cXi
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-047.js
@@ -0,0 +1,50 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-047.js
+   Corresponds To:     7.8.1-7-n.js
+   ECMA Section:       7.8.1
+   Description:
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-047";
+var VERSION = "JS1_4";
+var TITLE   = "for loops";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var counter = 0;
+  eval("for ( counter = 0\n"
+       + "counter <= 1\n"
+       + "counter++ )\n"
+       + "{\n"
+       + "result += \":  got to inner loop\";\n"
+       + "}\n");
+
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "line breaks within a for expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..5db347b431af79b0b2aba67c99009649ac9c0eb2
GIT binary patch
literal 6779
zc%0Q(%WfJm6djWEk+h3S-Bev!=_V<vl1N!pEg&U?Dny7z8I)C}%FGyWW5&ofC8&Q=
zsjL1)|D>y~`ww08+Pq<KU@{QG28|zQ=AL`*!%nGYgON<CMzEhb7rZKP-C1)Sr_BAf
zbDS@px$j($H;9wkGiy?eN|j+R9OntFN)2zn#Dd~7BPYaTSYSnYV4(cLvvjU#;E!Vc
zfhCEXu(&W#)OTn=RUcq@OWr4eq7_PnfeUbb@X=BU8dNinVBF1ROZkt*)LwTiwbun1
z#&XSEfhr;}GjLxqYfj*43K+Sj9%gU$58qB=_WzBgy>06TPuM>pBAdUL%jRY7!i|f~
z2QYEw9(+Dr1s?w`k4J5HDPJn&Vqx*MMynBY(PTs-UO`7q#p__Fhg?#p9%np2`9Kn(
zO^=o8+;u|`DFN11SdltdZoZTB$3rQ~V#Wqr%?=1CMo3gbH(^{VEL4d|WwCH!Caeui
zz@pmJC^D)s&tSYI!0V?lN<@hlcy-by<E-zA5X~Ob0E_m}$7xqWLhs0zk&1Ezt=81|
zdo@sU@S+7n-a+!#6KJ|R;tS%jh_bzC^^^WX7zejESx8_-aDs;WfGH#XDkS~C%j0p=
zBo&V|!n1G$Dxbqdk)u8+QZ>O_@n-n@p-)KG#EVa#=UB>^^;r__L47gpHsjuvQ^SGJ
zz_>8mkM)YNP1YX$CoEZusYm~{+^*8&%>W!@=dcKMRZy?zLjCJOtxPWyXCtto-wq<3
zQv82}xoAd}pTk6j3$%l}%%e2gf4|jxNTtz1?;)8)yXf0irv#v68g0KrRjv>XB=rf>
zD2(&Q_HIbLgxA0B@QBujG_5J@JcHgkQX_s5_>tY=Q!G!YfPl||ZKJY9Jx;9JGD{QI
zx}3$zt7RE(N@ALw2G-}~sqr_bXN|7xa-2K*lj|YTA5qjtFjWoo>S#S*I&#l9YqxRB
z!mxl7!QF8-M`tnL$?JrxvDC)PUw}`iA+%Ady+HlXfbtl|74Kxcn_WC-7P3{BX?qg=
z%vB(2G;@uF>dUb#HBQHrv>BgPi=?%nnx%cB58+uXLmX@jD?m_ej3=r%kAwH)0K5Rm
z8H@ibm|!#@s4NJ+lBh*hjRpvtT0T%tEbX+`1KNRu32DW5^u8hC-SUbctdWVo0>xMt
zXSilqm5VwZ_iCm)x&=0gpWy4Bjx~uBiDmjNk2TZTZpv*vsa@F?Jz4Z&zZ{+F5o>jw
K?T#|M!Tt|aPnG%r
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-048.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-048.js
+   Corresponds To:     7.8.1-1.js
+   ECMA Section:       7.8.1 Rules of Automatic Semicolon Insertion
+   Description:
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-048";
+var VERSION = "JS1_4";
+var TITLE   = "The Rules of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var counter = 0;
+  eval( "for ( counter = 0;\ncounter <= 1\ncounter++ ) {\nresult += \": got inside for loop\")");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "line breaks within a for expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..53d2a5856246e0912b2898833835b739ee172a49
GIT binary patch
literal 7602
zc%0=~O-~a+7~TSYpu`xx>1Bc!urWZwMQocusiCB)gf^T^%&<GOBh#H`X4cXe|A<%r
zg}=j#UOf9BJowH~y8YN)+A@U_duci!&(8bxyw6TEDrhp2%hU<>atDIf1a3HUj^iA2
zukGv<%lnnBip!hC$*h?*8AhebeS7XW4`EfNcl!|*6dyCPOI(HpR+Re&$_sx>=al+h
zKh|$plDZ6w3j;+xhx$}?0eZI-J>n~RLWwYNK5m4EmP$~+mb(Yzl|sH+d{@q_b;dGl
z9gtqEikT}>MFeIB?h|Ig5T14cBWKjb?A7|_>tW39x3TnM+q}UO$w!#bn?JADn@5Gi
ziY;&6fr<Uf#)r*W@Z;a>^P{%ATCA1|R=oI9qtyvI3>cA!pP=nP@dnuGq6%qHmox68
zqA!WirdxG&;jAf$lmJ^%Sdj);Zq7-%<B=}PW5&X*W(O1$BV<yCF2cA}Sg0zID#603
znJ^ccfJH6PC~{I`9>aJ`K-BkOl!z)X@!GIWCRkrn5jnd<eJt8Nhtr`1LO)MmMoyF?
zXsxaWpR0k=;e)0Oc?0CFCs2HL*el|Jib{IW?34ao7>BS2ETXU`2!e)tizy@CERg=6
z>+|EHAr+T2qgi+YS3ZS_GDlrdr0RmV>@xiA$WI_^;@Zp411zQG{H%(0*k6p?X52k>
z>e%-f7#C&xj$SdaDN&>U0!o^*q|v`$uc~x;;6q@NeOQLRDyVxALjAdbni(x)QwS{R
zr$ds)H2)v-x3>BJw~!-}&=Z(A;R3CoPGO)dT7O`L-yVh4hB8^S@g@TH3h+xId^(L*
z?Skv#`fL~SMOWRRbQUddp&D0+`jUDC=?E~+o6DAcq|Nw}02w12JHve$+S3X&>iKV=
z>2roAUKwabc82$`+@%8gWC2dq&-Uno?Gq{4EKMbPAdi(>&odlIVydNy_4QJ0+ZvM)
z4IL*}!PreRJs;6DC+r2=Fje#Q>d8nWJMpX1s3QG}dTI(U(l_U`F$DQ|7Z$r*4JZPB
z{1N==G=(-wwWpZ>BcR-eamCNM>hche$wEn@EN)M#%UmU*`kAY*RG$s7)Sx?JXwzP<
zmPu<$QcuT3-(BUgj0mtXtOP}|Fi2E3Z&7ZCg1R|TrlkU-K0(KV;8TfORMn}Eu+a%&
z=2%f_Iv>yqyw8)Cy&J1b2=9tFYpd4IIqDnz75m}{w{x>{zpd+DjdZm=MUnU(PPa55
v5{HN-{&F;t>3SfC{$NVdq{*3`kWUHu(SsTBpF(Uz61!{X`;x2uXo39?m(il7
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-049.js
@@ -0,0 +1,49 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-049
+   Corresponds To:     7.8.1-1.js
+   ECMA Section:       7.8.1 Rules of Automatic Semicolon Insertioin
+   Description:
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+var SECTION = "lexical-049";
+var VERSION = "JS1_4";
+var TITLE   = "The Rules of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var counter = 0;
+  eval("for ( counter = 0\n"
+       + "counter <= 1;\n"
+       + "counter++ )\n"
+       + "{\n"
+       + "result += \": got inside for loop\";\n"
+       + "}\n");
+
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "line breaks within a for expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..38c0cbdcfdefdad1ccbf659d1cf6cfe938e78830
GIT binary patch
literal 6284
zc%0Q(OK%e~5Z;9HsJI{@ap1H^stWZ57qmpQX;4!|p<<(6k-IxhOr3RPJERffhrmDM
z#F^i~g|YKacAaFqY13Sy_2aYWoAEbed#c@HQ1BW+!or#0bwQd=-f^4@9(J9ha`n`I
z=Lft6j<;jRc#KL_`1!(dp5iEPeEK;Nlw2@4hJX=46y=eD3P<14xuQ`xiS-AE<mO><
zVW4Q}(1@xb!1$DM2$7<f6oi3`NOQDlsRWJcg~!<Lmx{IWr>eKpZ}WEgAmdoR>8nr$
zf-nR3jj;9%o~D4oH4O-Rz58}|7IXM-EFDaHVDN-}3n|(BeY<R)mp=PhvH1`?PW`<v
zZ`Ogwf49e@w!2oYRZ5w#xP=|1YtqDt(&d-#VO#Mgni;r0G-<#YkKA%3L1@b}Wx90T
z5+EhQ`idxMqTyznFl>)ys7M$aO*J#{JTZW@d~Ra9R79v6NM*5bWhUfDCJ<3?YZRH*
zm}l7D5$N<2Yz0x{6<(jU$vEp*E+%A;XhcMJY;)R`sOP=tWpJq+LF)}Qy{-n@9xb$D
z$UD$(-QgxjM|Nj;>O|QVT7S)dgzf0|Hj6n}DV(6;J`&0xTnEkndwV=?8c_+L6|cf6
zsC<qcRqhT!UDXi0ldZzvkN8Bfh9JB6JR?$O9G^AO9px8OZ8IKRISmqp42_Gk{Ya0P
znq)1}58|@H`sKF`y*hHAkkiiNLT5qe=`;4--E;TdAMQbn|Kjzy-#o$n7{_|G-uDTS
z$5ddXm2maJ+BvJf7l{fQMMl~ZOww!-ecej*<C0VwN7@5#=_uO9ZRRtIqC@PeM|yO+
z+Tnfb+F{YGbwhz!L1lS&oGp=|maE{8xth`ve(@FgbXr0irMfGO{{>K<V7uZyiJ9->
zCDlX!2J6|PC0=nVpnBO7!Yb}uP9D{l1F1})BSG%6i`6Q0R+J>PPxNK3NMwwIjbZzE
zC^n{rD$8rd{kTZ205Y3wn*vdL-F<~+EOfHFsLheJ8(t{4GTY~(h3pNp-vXD?b$Qm&
zr&}%bqBBQ?^Fu+!JIJJ<S}MDq%zVi8AHHq!k^ClL)ic|(sy%uwF=L4V`*T?$>()HE
M*sGPHa;8-N4{dVt#Q*>R
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-050.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-050.js
+   Corresponds to:     7.8.2-1-n.js
+   ECMA Section:       7.8.2 Examples of Automatic Semicolon Insertion
+   Description:        compare some specific examples of the automatic
+   insertion rules in the EMCA specification.
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-050";
+var VERSION = "JS1_4";
+var TITLE   = "Examples of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("{ 1 2 } 3");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "{ 1 2 } 3" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..fa840f33e0af9c2ca316c15c9a39b9a7cc395288
GIT binary patch
literal 6321
zc%0Q(%T60H6rH5>LA$9`sS8#XD-f+H65T+E3LzCiQHnYd+sc`7CN9o6vYm$fN<XIm
z(N)*|hHiT8yptK{!3>0KqVeO{_uT7quborv79;swgJ3^@C3qlk)5$uHQ{#TuIV)8z
z-6PlIE#l<%&6pgcQssZWb(~i)DmOm;8VibRjGPmXVSyFpp@H&8-_p6Ep+AZB2Zm(k
zVR2!gsPE8_sv*Gml#)+EMeCFZ0~g}vXwy;&8V332(C!us)zX(rZol7_+wX&nW4WfU
zOcfEB8Mq&qwP)}&1&rKM53~0lJ|4_s4*!j%gK19;p0ICWMK*umFPqoJuWnLoK821;
z_u$*%I`H`K{&>`OS4-7$F%cGbp`&<<n=nx#UPq^G#hYNJhg{O69%np6rBD)~El-r`
z;%!S1DFN11Sdk_eZnjB=?U4)>Fk_>sW(J%mM#!psZbG|MSg0zI%3@(^CS*q@U=g%6
zid@y0*U;V(;PeY<C8Em9Jeak~IO}I7B4p2Kh(&j7bJ~@l=e_7<q^=x6gNB-3R|D;h
z7D^fN0km6pp!n!W?hH?zDBD8ouldiQ9o*h#5eI7pCuq3Om@?w8gXaIeKOQ%YsCc9m
zt->o%`35>F91TH{Y6#v*R^cB<e1cdLFS+=<!crz2pH<Nv<rh<JGw$6u4IKImjEl1U
zOplnFWG&IJqq4#J<+lyJI&dG8)4EZiv!L_dK}Venw1baP?d2}&=@!~MLEA?t;0h^@
zXc!WK80W3+;|Lc=OLo6`!aZYd&>QM~UtoDo1q5ReHaOT`#+m{OSb2>C!)-}SUTtB0
zBa3zQl587a+hcR-K-+_DW)ljuQ|JmpJ$kkB;$-FWV$sBQM-57$_<T6dmPlgD75V2}
zP00<feFr|Bme5A2Zi?~00Llw!SG=b}^Ig28dg$L^JzKOyD^8iHUP2{)1$HhckLuPy
zO=IYYk-Ow#wL&^6<q_=@ecvl!8R1}K*dZK>jcK7u^5*e4?pi58F7aG8mXH&v(6ryt
z4%E7&liY1?j<DVF))`@V3YjLs{I|f(bzR<m^!Zi`J^Rd&;p|XS;i57rsg~NVCp4cj
p{nv4ufW$u>SQX9o_G*t_OUzhe!2YHd%epmFF7~u#sGKR5{{uCI|DON=
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-051.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-051.js
+   Corresponds to:     7.8.2-3-n.js
+   ECMA Section:       7.8.2 Examples of Automatic Semicolon Insertion
+   Description:        compare some specific examples of the automatic
+   insertion rules in the EMCA specification.
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-051";
+var VERSION = "JS1_4";
+var TITLE   = "Examples of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("for (a; b\n) result += \": got to inner loop\";")
+    } catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "for (a; b\n)" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..02ce208c76af3d0eead046fe47aa23d7891667b3
GIT binary patch
literal 7315
zc%0Q)&2AGh5Z<Kx6*wSqqNhDlRj7dAf<mMwP1RH(RBY61<?gzPi?fbwFKLdv22aET
zaN)$6XW+uv`A;{_X5&rMUeb)$vz~AMzHtgN>QG!Pv@i;ar<^r8YCCzyaV}WUb4u0v
ziTA<tSqD3Xef>;<5+RG<cO2&_JXM(7eug+f7Ze|2pCXPVVWCzPjK2%#D+z;XU4P(_
z+#+3!YgHt0NJ!*J!Q_@|fI~?x3FcZ|h}z>r3&}~?EItIeS1C8DpX-JFfvm7UP%^2@
z(`z*%F-KIZ`-W(AL*Elvp!k~jh`xIL{_Rbjqfc$=aNCyF$IVAbiRSP1qIp*N;@Lv;
zJ}jJgZ_eLs0*?RIhoiE)QEk*JR#4o9g~~N*!$#q<OZOm>tPN)Ru7}&iXOx9*H58aD
z%dH|^x$bZ*1gP~SlDG|q>to`PJQkrcqIA4f?|^)w7^lT^8{|SFE*n@#gN2!ykRO|X
zcr#L3L|S8>fxOGX>Bk_&yuoU$dDABCtRK0UkS&oA@!rJYlq;d0_oJ8MOX+aZY{}X8
zDn)za7iFyS7HYRzaOX#dy&Rs&DAS8Jzve#xIk-KdF^QGJ2}<1&A`}OkQ1kz;565j?
zRD9ftufi#yd=3kB=8lxQvc*}~ZiT-a@d?Em`}X4V6bWHDJ{!C@?k}2cQ|5nlS||)C
z7#C-INj)*M$w<+E#(};mE&4IYKlP5H&|knprZJuZWWsRuH++MszLt^nTV;wOfpydB
zAT{pH#c@faG>~S;FYU!WIA-3G7Y|^m8LFq#_3n?Udw0^Vv0{Q}!0c`hvn4vja_M=<
z<P2A37gvC%)8Wb}*~>8g6KHt^a>@GjIYD8_rcg}oQ3vgRuVLBmRye4`$;EW4?hFg=
z95~|XpT$_M<8DSni1LXVrpidfI9MB2f~2@NTc~W(`nxg6WS}x3Re3S+H~jB%EF&Je
zK*R`#%%(jnWJpDU`x0m+?%Eri7L>Ua2fSTt=S)g0SL}ufhQv+ba4Os7(l;za&Nn$i
zZ1s7+EgrUrT&_gOuJSR2EahDEYkhN(k_&4iQNO-y;N_vsrl;Z?0|av#-btME(tBba
zJuvf`{D_-C*i3VizW5l4L)`-^V98>>B4+tYE-_8Ig`;E$&UtR|1J{C@Vq!7#uLg~@
d%Jl1sxoH|&m7(>RZ_Vcxdm~*>c6lA|*8e=2Knef=
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-052.js
@@ -0,0 +1,47 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-052.js
+   Corresponds to:     7.8.2-4-n.js
+   ECMA Section:       7.8.2 Examples of Automatic Semicolon Insertion
+   Description:        compare some specific examples of the automatic
+   insertion rules in the EMCA specification.
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-052";
+var VERSION = "JS1_4";
+var TITLE   = "Examples of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  MyFunction();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "calling return indirectly" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyFunction() {
+  var s = "return";
+  eval(s);
+}
new file mode 100644
index 0000000000000000000000000000000000000000..10394859b5cf6c6e27b63f679536519ccf1d4d6e
GIT binary patch
literal 6943
zc%0o>OK%!65Z*lcNUKVfdP+}LPKlx_t<qj1f)of<h!Bkm%C$1P1Gq73WSbIhJ@+T{
zpY_ype?u=Fn>Xw(uvro)7r<VBJM+!>8;?`E)#Q*))q#5HD=BJ{Hk?hzaVo;=IGKF$
zvUE~%MH8IVk$on`nbK)z*KwZXQ>oGA*HkiE;cyNvr;=(Wd<*3b|10N)`QA9zZ+v89
z7M73}ig^z6nH~U)F3Ee~YgT0-Eu2pqL!*_J%&(=N;CLyQE$2TKQ%AkA)KL#)6su(C
z3QU8f+`@gMyfuYqDBy6*T*}|P{ct>uIrz4o_Lps0JQ;05Og4YrFPqo7&!wc;e1sF1
zrFUQ6uL6&M?~h00cR61!<Pu@=04H*{w1Ep15mj>5(xQQGx}*dR<_a!+lJ^xz<9VV?
z=Wd%4ltS2&rWzXPxHS_7<ADriDd)qbb_MPy4iJ~m9UNDhN?it}BRpK13!6h1sI0XN
zii+#ZOB`=Y4EhC*f-H-Is7?E1gY|PGAZ0Vmr?N9*oCziBc{h7GRJ9{nt*$5EYk&@i
zFIqC>18BFIAmQ1O+#a6TQBf~iea(N2;~4f957<~Sf?(i2QpUks1<n6+e?0D3QE{Oe
ztimy<e1#K5K?a~i*QIDDtMKcQpD5PgCYPUARH=mXvn)Hq`eIMpT(~z*o%$X}=Yo9C
zm?tI{MIO<Ape0+Aq{pmpXE;^!&C~Hz|1`Ghn{gUVW=04O)DMm2#xg7a!!lD@h#B+g
zgRJLaXxqFUgBx-H`W~b+bMEwGqdir!Pf40o4xRy5K)QvF9G;TB6H*hJXw+9Tq56F6
z1;|2hnePpcg=b{z8oRpxFQ__a5(O-Wc82HhIOE!_XE|*tu({Wyri%}ihZu<lGZJl4
zaXLgZH`iXA<~<DEv2OiWvbDg$XR*fcT<8ha5tXmVr_+?iDcxCO{?CE(6vwsbiqY&4
zFQ^_-%063h3ZT1(Fz||Kxf<W9ulu4JLPv<)C6}v3XfLUpn3$M5f-F@50k)21a8qng
z3RRNb>U#9&OMslSF7Ni@jlZ!T>z4Eh_7}E5@=hXWe3J!aAG;-JCwCt(L+0*yZ*h>A
zo%8lfcdUkU+<mOd?V;K2dajGZ8KS&75Lj$=#|1Xxq}P=lj@G>x5#2yJ3BP)Z)VHYH
i`{1rCxZ{Y<^oab5$d~9F+|UR`*4X(jQZ4OM$LxPK2+t${
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-053.js
@@ -0,0 +1,45 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-053.js
+   Corresponds to:     7.8.2-7-n.js
+   ECMA Section:       7.8.2 Examples of Automatic Semicolon Insertion
+   Description:        compare some specific examples of the automatic
+   insertion rules in the EMCA specification.
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-053";
+var VERSION = "JS1_4";
+var TITLE   = "Examples of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  a = true
+    b = false
+
+    eval('if (a > b)\nelse result += ": got to else statement"');
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "calling return indirectly" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..142d4f35c604634dec18f9fcb4536e533cf7b326
GIT binary patch
literal 7538
zc%0o?O>Yx15Oqs|77idGE^yf!ttwQI;DXXXn+7#i6e>3A6*;?3V(P3T+ab+ALHrMX
z3@6UqxN~9bd?${RY<JtVxkRzoZ#{3uZ^o01YBd?jX6gio*;B!50yoe)La4&S4mvE9
zPW*R%z?%eR_RKRGMy1NWc#hCRcq%ix{0s|<D~ueGfMJ0Z<&l93hrcB{r%^bL^&1{p
zn}@}PfubRz5mf_#(IthDM2c1^5e6>8jp3%H5;Ur1@58vC&y@?GN}0XhSZ1#WGK%G!
zxgu3WU}oUHVb+?$(-bgrK?BTQzIyv+8guY%EbTA5WAKD~3o+UJb+v4s<v;sLv3VCJ
zPW;zjR)WWWSI48ayId$2^NFyy0~7fR+<=AB<5lmVrFa9(3_PDSXuuhdyh0?2(3U64
zbpE0#h?D^9E38NZ3^&^(gK;ZEIn3B_saXN%i4hW)&n+023JX;xQaLP4&4l%#30Txx
z8b!u6<}r-71vvc}Mu{l%BCk!`WSsS5%@VSQG{T}YvN`Qa(DQEeGE!AY&{|zhzE=b7
z4qucq<TYrwp73TzM{;L);zYS#wECKV55~dmEoM1bF`S^`K4Qv9xC)y8=jwReGNKZY
zrd@?&Q27KVO57WOda5pXJ6VOl8Sx2XO@id&^At;&aD0|UXP941was{Nj_NoH85n1?
z{ZKzKvB+7X{{%_8J4t%X{B{6SwMai5Pxbd>tG*t`ZZb=dU<D2OzSN&SNQx={dMT+a
zMafin8<No9_qUgzAPIudhuce#MbMTfXfsuUQmm>s^xMIp8I^R!marB~8BcW*t9skm
z%X*ca2ZTxD1>U}A%OLiOus1xW{v#@{-`xFujO7s(kn8fWlm0%|oUX`W71VPKw<IyK
z*2KEuGc%LK2rS|btflkVE^KrC#^<p`>*h<AIJZismZ*`J>meL*HK8lK@)h_*O`(la
zofPAL0hCP`SG+4X^Ig28dbrA?`HE8{s#~v<umn4o<45&bUp8mZF+=W>i`5cor<5?X
zPjoveho!~A#xPy_Z%hhRl8ud<(aK2yGWpCK16@aew+)wS(oU{zG)Lkt+1}boY@dr>
zt1p=e7if{KN|RZibhS`_d5$2j55)Bhi*a#vRC!&=`3}2#G$OcGDVg1&bZVRHPagZ_
m+<rf`U&`z^5%;NZ#G)g%+<ywp^rkZx_rB-!=8cP{%JKg$0*Yk-
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/lexical-054.js
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          lexical-054.js
+   Corresponds to:     7.8.2-7-n.js
+   ECMA Section:       7.8.2 Examples of Automatic Semicolon Insertion
+   Description:        compare some specific examples of the automatic
+   insertion rules in the EMCA specification.
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "lexical-054";
+var VERSION = "JS1_4";
+var TITLE   = "Examples of Automatic Semicolon Insertion";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  a=0;
+  b=1;
+  c=2;
+  d=3;
+  eval("if (a > b)\nelse c = d");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "if (a > b)\nelse c = d" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..075236aa2fd129bbe9720356786f53abaf21b32f
GIT binary patch
literal 21482
zc%1EATW{Mo6lRm<((a0_PkZS6(1&Kl;y8AiX3)|mjyq)N+^tUgvJC+(F^(Ep5-7Te
zQS^2D5Bnnn_AB<fy${=CuwO8e@<mZ7S+Z!y7aBoqlj6t2!*k=&u{6?hEwrnhB53S>
zhn)t7O|Sp}s5?d*>>pOYseM_~9Tx#D&#%!e(<8f|e-FTW^eQbl{3XODtXt>+=@!J0
zn2yb%jQ)2IoSC+98S5W<$&Eo+4(3p%0ZiK@J%HelLj&2wJTVdGa5ilAiS`IK?Z)m3
zZLd|zM~Ba<TE5e!<vSojtQzloY7&H@#o=B<t91qM6Nbk>=9`e{r(bMr6xLsPSFwBV
ze8t`2iyRlnlQJY%{~9k>Usj&iWN~$wc2vsW?j3JV0wez$A0wA&`_bXi(~1-}=6b@p
z?qY{Hr0t@0E~fW#7&Xwjn_H90;L5p+k>^o9)(9l1N!QD%L%nt(W6IF7`a}5$oi-sf
zEE{jqc8@?zj*v%URyeXHEcBNEaihghykQsf0d3zijOVC9Cn!S?39Jj>stby+9G256
zogABbq^tn`T78^F&R9oLip1Wc9fi$eY3srE!<~(I$Yd+Kc$8r<5VK_uW7rM}EV9t$
zUFKU-6`77~T<xf3)YqvH>D#_Ye{DH+Xbl$ZHl2GZ%te1#my3)#7ZUo#1}7G5c;PA8
z1;tW-f&h~nQbd;#m@k&{a?oyaa*HMQSCXLz5gMLcl>eqZi$jWXnE4qPGX|(R)UaRP
z$*y5+{Ex<)!rKul84EP?Yz|3k_F>Q8z`AZASx)C}R%QE_a{E>Wzfq9F9o8X;z^^qz
zU>$PQpLJ|WLwX<$X<Hi7Lup7m(vSrDHHY^0(?x0ac5@8&c5}k*?d`1g_RS5!exwK^
z3UbV(<ltsYj!|Mz+j49PgA#4|9GZX~35ObP0uGc3ka1N1mG&%TFafYGO+$2Jax^4+
zGL9ZC07;#Pd(yIXmXHnRY8jGgP?f;2=|$h4NJ(Gf{MsL){91wu*cd<E8ZRLUpxBv!
zems^0x9r2wk5Zs4WH-oZW+-OWOxr-`nUUV7?L6O&ykp2LL8M*<f%h#(KkMtv;Co>g
zcL0~o33pKM`hw1K;!MmVr2Ns6AkVXJ+7JirD7%94!N2igp%VhI**GQPDH$pE`x7b1
zbdKO&Zlo%nF+Z7G>)cFAhAhFnWgvK!cC4*OS*Q^ky#t4YblR!ELOKC1X0k-uQcb~d
zvyInXEOjk&^j>gl^b81Ypk(y9q1Z{{o=^4pC7FBBlzUL_VfNg^3U?0?QRismSmhjM
z$2r7o`5gF$uas|4zF~HKgWHP9VU5UID(5h3&LLKc5;%t^4(@veAJQZ|!3tWgK|7Kq
zMu)70{awV>(G?YUl6R?Y5U^JlDuTZqv_v(nS<JX5HsdlEKQfg~kUJg4$yosXf{S%{
zmE9faS~QUpydU95vu=P;PSR$L7gq(UG_9fEXDcf7Q;;e^y_Nu#v2*PQX_TfmeF@2A
z9X};BrWopHXlguLdS@~8`c!B?iJ^TW0f-3hMR%YBF+*H98#RWJ>3^r8xgV7yqe|%x
z)x6}ojEr5zP-KsTgh`oue6=bmYs`KYl{Ko0mBGgm`5r|^oyl(>3rf_c^~9j+OjImB
zgR!`(Gf^R>l#o(Vory{phdH9s#nW-9R_S7uE}p=!N<pd+b-F`Tl`g(!&!*DFa~|8P
zbn$hNFu}`Th$g{rE<=~J#AN+RY5FKY*5Dj*=RNL+kAtGQ01K`>PBEaKp=a3zMqPPa
zU|>|Jg7#9+rShqmlR~tO7;M&K^grP91rL}T;Jaf?VCP-%TUlRl`2V{h0gR5dg+lm0
Df+HN&
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/match-001.js
@@ -0,0 +1,106 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/match-001.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ *  String.match( regexp )
+ *
+ *  If regexp is not an object of type RegExp, it is replaced with result
+ *  of the expression new RegExp(regexp). Let string denote the result of
+ *  converting the this value to a string.  If regexp.global is false,
+ *  return the result obtained by invoking RegExp.prototype.exec (see
+ *  section 15.7.5.3) on regexp with string as parameter.
+ *
+ *  Otherwise, set the regexp.lastIndex property to 0 and invoke
+ *  RegExp.prototype.exec repeatedly until there is no match. If there is a
+ *  match with an empty string (in other words, if the value of
+ *  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
+ *  The value returned is an array with the properties 0 through n-1
+ *  corresponding to the first element of the result of each matching
+ *  invocation of RegExp.prototype.exec.
+ *
+ *  Note that the match function is intentionally generic; it does not
+ *  require that its this value be a string object.  Therefore, it can be
+ *  transferred to other kinds of objects for use as a method.
+ */
+
+var SECTION = "String/match-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.match( regexp )";
+
+startTest();
+
+// the regexp argument is not a RegExp object
+// this is not a string object
+
+// cases in which the regexp global property is false
+
+AddRegExpCases( 3, "3",   "1234567890", 1, 2, ["3"] );
+
+// cases in which the regexp object global property is true
+
+AddGlobalRegExpCases( /34/g, "/34/g", "343443444",  3, ["34", "34", "34"] );
+AddGlobalRegExpCases( /\d{1}/g,  "/d{1}/g",  "123456abcde7890", 10,
+		      ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] );
+
+AddGlobalRegExpCases( /\d{2}/g,  "/d{2}/g",  "123456abcde7890", 5,
+		      ["12", "34", "56", "78", "90"] );
+
+AddGlobalRegExpCases( /\D{2}/g,  "/d{2}/g",  "123456abcde7890", 2,
+		      ["ab", "cd"] );
+
+test();
+
+
+function AddRegExpCases(
+  regexp, str_regexp, string, length, index, matches_array ) {
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    length,
+    string.match(regexp).length );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").index",
+    index,
+    string.match(regexp).index );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").input",
+    string,
+    string.match(regexp).input );
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
+
+function AddGlobalRegExpCases(
+  regexp, str_regexp, string, length, matches_array ) {
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    length,
+    string.match(regexp).length );
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..772363013e947c229d2d07748285db83a20ccd66
GIT binary patch
literal 36161
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/match-002.js
@@ -0,0 +1,174 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/match-002.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ *  String.match( regexp )
+ *
+ *  If regexp is not an object of type RegExp, it is replaced with result
+ *  of the expression new RegExp(regexp). Let string denote the result of
+ *  converting the this value to a string.  If regexp.global is false,
+ *  return the result obtained by invoking RegExp.prototype.exec (see
+ *  section 15.7.5.3) on regexp with string as parameter.
+ *
+ *  Otherwise, set the regexp.lastIndex property to 0 and invoke
+ *  RegExp.prototype.exec repeatedly until there is no match. If there is a
+ *  match with an empty string (in other words, if the value of
+ *  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
+ *  The value returned is an array with the properties 0 through n-1
+ *  corresponding to the first element of the result of each matching
+ *  invocation of RegExp.prototype.exec.
+ *
+ *  Note that the match function is intentionally generic; it does not
+ *  require that its this value be a string object.  Therefore, it can be
+ *  transferred to other kinds of objects for use as a method.
+ *
+ *  This file tests cases in which regexp.global is false.  Therefore,
+ *  results should behave as regexp.exec with string passed as a parameter.
+ *
+ */
+
+var SECTION = "String/match-002.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.match( regexp )";
+
+startTest();
+
+// the regexp argument is not a RegExp object
+// this is not a string object
+
+AddRegExpCases( /([\d]{5})([-\ ]?[\d]{4})?$/,
+		"/([\d]{5})([-\ ]?[\d]{4})?$/",
+		"Boston, Mass. 02134",
+		14,
+		["02134", "02134", undefined]);
+
+AddGlobalRegExpCases( /([\d]{5})([-\ ]?[\d]{4})?$/g,
+		      "/([\d]{5})([-\ ]?[\d]{4})?$/g",
+		      "Boston, Mass. 02134",
+		      ["02134"]);
+
+// set the value of lastIndex
+re = /([\d]{5})([-\ ]?[\d]{4})?$/;
+re.lastIndex = 0;
+
+s = "Boston, MA 02134";
+
+AddRegExpCases( re,
+		"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex =0",
+		s,
+		s.lastIndexOf("0"),
+		["02134", "02134", undefined]);
+
+
+re.lastIndex = s.length;
+
+AddRegExpCases( re,
+		"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+		s.length,
+		s,
+		s.lastIndexOf("0"),
+		["02134", "02134", undefined] );
+
+re.lastIndex = s.lastIndexOf("0");
+
+AddRegExpCases( re,
+		"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+		s.lastIndexOf("0"),
+		s,
+		s.lastIndexOf("0"),
+		["02134", "02134", undefined]);
+
+re.lastIndex = s.lastIndexOf("0") + 1;
+
+AddRegExpCases( re,
+		"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+		s.lastIndexOf("0") +1,
+		s,
+		s.lastIndexOf("0"),
+		["02134", "02134", undefined]);
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, string, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(string) == null || matches_array == null ) {
+    AddTestCase(
+      string + ".match(" + regexp +")",
+      matches_array,
+      string.match(regexp) );
+
+    return;
+  }
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    matches_array.length,
+    string.match(regexp).length );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").index",
+    index,
+    string.match(regexp).index );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").input",
+    string,
+    string.match(regexp).input );
+
+  var limit = matches_array.length > string.match(regexp).length ?
+    matches_array.length :
+    string.match(regexp).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
+
+function AddGlobalRegExpCases(
+  regexp, str_regexp, string, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(string) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + string +")",
+      matches_array,
+      regexp.exec(string) );
+
+    return;
+  }
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    matches_array.length,
+    string.match(regexp).length );
+
+  var limit = matches_array.length > string.match(regexp).length ?
+    matches_array.length :
+    string.match(regexp).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..1422b2f79d54876b0c68d87ce4a3a885164ec239
GIT binary patch
literal 21251
zc%1EAO>f&a7*>)x?N)49v7QDD6Sf{=bhW*<1BTXd;JEJKA$5v4>m>~WMxqrpvZPV;
z5M%9s+3(n&*kz|3ciCycu=5Th=`UHPzGcmhnL`p$((9KmA3o1Z`jx7<ZyT^yy?{Wi
zy+oFVKu_9~B<b8z2hx74{axotN3m=uRm<#}s-Zi$R(>f-cgR&$_wBC$(!sd_pFza{
z2w>eZnJIO8>`0fosm|K^lU%Y9X3Ij%l&(s;spE+O_bn|Inpp4Z5HWKm=uMq=Fw#w}
zc9XPsnvLVuVY^x$wN=X_BW_zAcJ4sO5CMak`w<xZIeQ;dd+gtG4`AiuL8bDj^v0RD
zJ^9OeJidL4*+s#wB#i3s`9}3s^Qe<mRJX~AX5&Tu?BOy5@}K+ySs?Alt>c4cCSjB(
z;4In5!WJIbu*6`xBO|E6D_bsR8sO%YjiBR@ICe0=ut)mKyn~Z=ZeSX~Fs8S%I~39c
zVbU<ZN7@|>5I%+u4(MTaU8s{&nn|yAb%e%@5a$pb2JB)9>DmSMdP~jkPQ8rTSBg3W
zgU96vYQ(KEUg#Y*z~sP`x(3i3ugOoy1v@9N)zhE8eplQ%dGK03-D8K3-xc@nO+U)z
zzjn=|OxroEo?udbL{98m4z|oM<rj6i^6;xik8=s0XO?YFXBj|RpIUK}&bPayy{@X?
z8rC^5hG1&|2XX?&IOS9F**Cm|ni16ZbrYaLGI-qQ!z1Fr7MOSPt{m)Oihd?E7XiC<
zguuW<!O(!SpkQNn#1q395%R<PP;C4Tm!3kNS=ckTtn)We!4eT(Vi*sSPOT`IkEn<S
zaB$01;Z-zbwFxI6T^Wxm{TUlw3zqtAwODH1h%d$h?J3E2OB3`HM=Kmx1-S}x&5v9c
z)};t|j9`T>zzt|>_#!+ty_V$v@7B7Lzt9t|b9Z=pvUYP`h@=q7#fxN8Iau<EcH13^
z!>)fU7zEoX;7(6e!l8bhh5Y9mLdb=XXDj4_mvZGLk!*-$WAVwx0%%h3L@qqxHtgB7
zp0g~mpTGCkYd7PYf=Gfy5|nKcB=}PBrAW?}tL}+%JdR!R^t^8>wD!$i7Dp}Vs$`Sn
zp5tE%x>(tIx{*w_wi!{<`nJ?__kD_2jLtGLw>>mR{!MM_1JcfF`Ji(K=#=pV@(gPm
zmU1}-X?UIQ-7k1!(493wF()aO>A)ZQw2cRk1548hy5kE5{eZV`vz2vfbJu5Wvvewy
zA!rI?(1eK4A&*&8&b&YsGK?s7CW{{WY^Gh3o^g8^cdmX;hIi9DYRk8Hxjj??TANGR
z--rA^B&@UL?aXSd3>IKALz;+~AkmusQL%Vt#WG=Pn!;UrBA}Rkv9nxAMlO;OArn7>
zxQ|>+$K_m3TI8bCxHP@01p8}25bQE+5Yds}NxwT3H04w9D&0w!iz_4qx2O=5!U|b(
zVd0o6l2MIL`mPB%%Y6luRee^tLMD6&@{jFYAA&UWp3d3Enn9^$sycOdZc~A6M*xF9
z;6?;FY-1t~^Vf3zdQ>oqV3eF0MPOj<F>sBk%|}2-mq&W&{kesv3qJ}3rhQC<`nF01
zDALy_33d4w9-<camWR;@g>8C9e{wK>ywm7)HSz9R<j$u{aCjEKXDIT{x^aic<jGrB
z-cP=p7}(!TcB{8;age*Jn<<~&6q_l+q}cNLU$%T`IEyElc^aGgVthq$8j(y9P%h!h
zWLojXB60u3Dq<N|5s?7k_t;VLuVeh~p>7V3NhUl@f}z?betQbY<Z&PayOGH4s4hH_
zM&H@{=Y|QKTTZV+LbmDe+_1R;Y~1HN{MW|lb%Y}q!Yj?f(mPlG=3W@+ii+oLZLYiK
zUWn(CSI)BuE`PYiq5+FqfBFb#e3yix`QGyw!=+~P;q-a)T1XBMK&7L<oXW-_nAq=o
Mo_Xw_vvYy@9}RW(KL7v#
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/match-003.js
@@ -0,0 +1,132 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/match-003.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ *  String.match( regexp )
+ *
+ *  If regexp is not an object of type RegExp, it is replaced with result
+ *  of the expression new RegExp(regexp). Let string denote the result of
+ *  converting the this value to a string.  If regexp.global is false,
+ *  return the result obtained by invoking RegExp.prototype.exec (see
+ *  section 15.7.5.3) on regexp with string as parameter.
+ *
+ *  Otherwise, set the regexp.lastIndex property to 0 and invoke
+ *  RegExp.prototype.exec repeatedly until there is no match. If there is a
+ *  match with an empty string (in other words, if the value of
+ *  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
+ *  The value returned is an array with the properties 0 through n-1
+ *  corresponding to the first element of the result of each matching
+ *  invocation of RegExp.prototype.exec.
+ *
+ *  Note that the match function is intentionally generic; it does not
+ *  require that its this value be a string object.  Therefore, it can be
+ *  transferred to other kinds of objects for use as a method.
+ */
+
+var SECTION = "String/match-003.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.match( regexp )";
+
+startTest();
+
+// the regexp argument is not a RegExp object
+// this is not a string object
+
+
+//  [if regexp.global is true] set the regexp.lastIndex property to 0 and
+//  invoke RegExp.prototype.exec repeatedly until there is no match. If
+//  there is a match with an empty string (in other words, if the value of
+//  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
+//  The value returned is an array with the properties 0 through n-1
+//  corresponding to the first element of the result of each matching invocation
+//  of RegExp.prototype.exec.
+
+
+// set the value of lastIndex
+re = /([\d]{5})([-\ ]?[\d]{4})?$/g;
+
+
+s = "Boston, MA 02134";
+
+AddGlobalRegExpCases( re,
+		      "re = " + re,
+		      s,
+		      ["02134" ]);
+
+re.lastIndex = 0;
+
+AddGlobalRegExpCases(
+  re,
+  "re = " + re + "; re.lastIndex = 0 ",
+  s,
+  ["02134"]);
+
+
+re.lastIndex = s.length;
+
+AddGlobalRegExpCases(
+  re,
+  "re = " + re + "; re.lastIndex = " + s.length,
+  s,
+  ["02134"] );
+
+re.lastIndex = s.lastIndexOf("0");
+
+AddGlobalRegExpCases(
+  re,
+  "re = "+ re +"; re.lastIndex = " + s.lastIndexOf("0"),
+  s,
+  ["02134"]);
+
+re.lastIndex = s.lastIndexOf("0") + 1;
+
+AddGlobalRegExpCases(
+  re,
+  "re = " +re+ "; re.lastIndex = " + (s.lastIndexOf("0") +1),
+  s,
+  ["02134"]);
+
+test();
+
+function AddGlobalRegExpCases(
+  regexp, str_regexp, string, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( string.match(regexp) == null || matches_array == null ) {
+    AddTestCase(
+      string + ".match(" + str_regexp +")",
+      matches_array,
+      string.match(regexp) );
+
+    return;
+  }
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    matches_array.length,
+    string.match(regexp).length );
+
+  var limit = matches_array.length > string.match(regexp).length ?
+    matches_array.length :
+    string.match(regexp).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..7643a2be422b5fb00c3c86ab6126240c46eb3ec8
GIT binary patch
literal 30346
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/match-004.js
@@ -0,0 +1,173 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/match-004.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ *  String.match( regexp )
+ *
+ *  If regexp is not an object of type RegExp, it is replaced with result
+ *  of the expression new RegExp(regexp). Let string denote the result of
+ *  converting the this value to a string.  If regexp.global is false,
+ *  return the result obtained by invoking RegExp.prototype.exec (see
+ *  section 15.7.5.3) on regexp with string as parameter.
+ *
+ *  Otherwise, set the regexp.lastIndex property to 0 and invoke
+ *  RegExp.prototype.exec repeatedly until there is no match. If there is a
+ *  match with an empty string (in other words, if the value of
+ *  regexp.lastIndex is left unchanged) increment regexp.lastIndex by 1.
+ *  The value returned is an array with the properties 0 through n-1
+ *  corresponding to the first element of the result of each matching
+ *  invocation of RegExp.prototype.exec.
+ *
+ *  Note that the match function is intentionally generic; it does not
+ *  require that its this value be a string object.  Therefore, it can be
+ *  transferred to other kinds of objects for use as a method.
+ *
+ *
+ *  The match function should be intentionally generic, and not require
+ *  this to be a string.
+ *
+ */
+
+var SECTION = "String/match-004.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.match( regexp )";
+
+var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=345818";
+
+startTest();
+
+// set the value of lastIndex
+re = /0./;
+s = 10203040506070809000;
+
+Number.prototype.match = String.prototype.match;
+
+AddRegExpCases(  re,
+		 "re = " + re ,
+		 s,
+		 String(s),
+		 1,
+		 ["02"]);
+
+
+re.lastIndex = 0;
+AddRegExpCases(  re,
+		 "re = " + re +" [lastIndex is " + re.lastIndex+"]",
+		 s,
+		 String(s),
+		 1,
+		 ["02"]);
+/*
+
+re.lastIndex = s.length;
+
+AddRegExpCases( re,
+"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+s.length,
+s,
+s.lastIndexOf("0"),
+null );
+
+re.lastIndex = s.lastIndexOf("0");
+
+AddRegExpCases( re,
+"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+s.lastIndexOf("0"),
+s,
+s.lastIndexOf("0"),
+["02134"]);
+
+re.lastIndex = s.lastIndexOf("0") + 1;
+
+AddRegExpCases( re,
+"re = /([\d]{5})([-\ ]?[\d]{4})?$/; re.lastIndex = " +
+s.lastIndexOf("0") +1,
+s,
+0,
+null);
+*/
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, string, str_string, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(string) == null || matches_array == null ) {
+    AddTestCase(
+      string + ".match(" + regexp +")",
+      matches_array,
+      string.match(regexp) );
+
+    return;
+  }
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    matches_array.length,
+    string.match(regexp).length );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").index",
+    index,
+    string.match(regexp).index );
+
+  AddTestCase(
+    "( " + string + " ).match(" + str_regexp +").input",
+    str_string,
+    string.match(regexp).input );
+
+  var limit = matches_array.length > string.match(regexp).length ?
+    matches_array.length :
+    string.match(regexp).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
+
+function AddGlobalRegExpCases(
+  regexp, str_regexp, string, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(string) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + string +")",
+      matches_array,
+      regexp.exec(string) );
+
+    return;
+  }
+
+  AddTestCase(
+    "( " + string  + " ).match(" + str_regexp +").length",
+    matches_array.length,
+    string.match(regexp).length );
+
+  var limit = matches_array.length > string.match(regexp).length ?
+    matches_array.length :
+    string.match(regexp).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).match(" + str_regexp +")[" + matches +"]",
+      matches_array[matches],
+      string.match(regexp)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..7c56b53f6e51409086a4a9ce792fdc20db17512e
GIT binary patch
literal 15866
zc%1E9-EP}96jsut>6~pB!?25847n)KWkr&99k8u)10=3HWJul4PC5*2QP9${%!L*;
zifU@0PtnKOL+k;DUGAcfF;eo6B2%&?%YyAH7coSMhvyuA=R1d_ROPNs;IP^SWE?(a
z)MTiqt!tXrrbb^oK56{Yy5G{N4O;cUd!|aT!w<KA(zJ?rsv7M63^9z_1RjD;5JMbO
z%M)dcuO00ITgFvc@5Li)(_~TRiNc14EzCy(f?ZAwusH5uV4gS&^~Op&oMFp6+!F1r
zdhP7wNuzo&XsaF!gal=^ynCmZ14G0U_Zks*Lf+@%Mib2X8~dQ=5{?PBVDHYIyOY94
zzn;m%{?|OgEMAw4ZvCfNw?3;kTY0(ly0}rVJwAH%?IJj`KzweB_Op|-(|Rs${9=U8
z`#U3e?sNz;7s0Ln7U$NFMEmji&yDlP$Mt4z2)*~+y&rQ9bum>897lMp#Sw>|u*}l|
zM(s)$)DR)#u3isaGy%-wFoz??&%og^7UqYBzt;*w!?tL@q|~rMzX0aM&&V;h5bFn=
zE9X(9Lth&L9j-BKc6oRZIr#0d=nN41L0bBnvi@Ehi@7u^2EDZUl`g`pUqL!$R;3Sw
z(96BH_`zW8ILLNfX;UQ^jDIQpM;Y$|vjl5kPqK{(2xJ<HAr=Pz>tp;QX1Y>}lNBtV
ziuNPJ@M*M$98loJPq$*!jWB@yZbMH?y==tAg{4Urc2umg|IPFM%bVjt0(k1hJ1=kO
zXZ7ks%0t~~`w!5$W-}Q$ykAJ*CM;V75y6`$ooF<BliO6~s)S)AbGjG0iZT2MQK^5#
z80v>O9SB_YdV#uyFIOvg-{%*+Mj5;d7QDaD5Fj6ilJJ~jxKI@f3+37CP#KdvbqV^&
zwRBl$220Qlziza}b<c_3+?W@^e7~k3m;?hzQej{UzvmJ#0|J{_*5)wyW|s7cq(;Q`
zE;z4{jF(9GUa86n)i1`-oW5W6;+CduPWZobRfI&Eri=9n{OQUz6(~-ri3O(9F9_rS
zZ{Mm{1X&juQs#pPYMBd{0CI%#hDSx9Pa*!NDps8}QeybN;Sw^WYxy@68^=}inEHIe
zE{kPK3)9BxS0Yf?!_&5S#pSlo{c?vyGJgc|R|HnCg^iiRrowWF%#kKiY}D;buJ}5d
zEOMoX?5fHeySZtZGQ!JrQAoN-P<uClyDY$RO1@Q;L;*TYOVP_puK#V8<eGK$wG4rK
zLl))Kr_Xdtz}3qR(igk?1T2$xlL?;N45v&j2{AK&)5;uI_>w56xnIiN=VUqT*D{Bd
zIqU<;VOw4fi`Y1v?^a})F;*vI#7y}IkTBkrJ4)q_QaZl1-Ix=!JasJ@ca<487Dfpe
z_Yq}ds`W);?w`83wjpjLJD1J)hT&f-x6bc<=)nSc+PO*(7}gUVt)zdOZWg+&W~ST3
z#;@4^gi7?e2kWqv!x<Pdn(A!tcJ_Q1I{~?z(EYZh2&HAMr=06$J+*8i%c?I%RT)CN
z&vR8X6`dqhQ{H%)kf0dSFJNi1MS23xY+qR}FJifz2mlcU^9)D3QGKME{<SD~{Yn>%
zhR{3o7V6H>ld)!GQo9Hh7TEmtXcheC8nU^oR_li7{8>P)xOYyc6+VOCi0|P7c29gH
z8(0X2K2Qwwn)n7ZGLoZr@&e)}Uhj@xjmFgJ(`i1A5MpR8;7rB0asku1>W2DUATWXI
Tm*st&dH-*Q@ETq2Dlz*%^-3kZ
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/multiline-001.js
@@ -0,0 +1,68 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/multiline-001.js
+ *  ECMA Section:
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Date:               19 February 1999
+ */
+
+var SECTION = "RegExp/multiline-001";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp: multiline flag";
+var BUGNUMBER="343901";
+
+startTest();
+
+var woodpeckers = "ivory-billed\ndowny\nhairy\nacorn\nyellow-bellied sapsucker\n" +
+  "northern flicker\npileated\n";
+
+AddRegExpCases( /.*[y]$/m, woodpeckers, woodpeckers.indexOf("downy"), ["downy"] );
+
+AddRegExpCases( /.*[d]$/m, woodpeckers, woodpeckers.indexOf("ivory-billed"), ["ivory-billed"] );
+
+test();
+
+
+function AddRegExpCases
+( regexp, pattern, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(pattern) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + pattern +")",
+      matches_array,
+      regexp.exec(pattern) );
+
+    return;
+  }
+
+  AddTestCase(
+    regexp.toString() + ".exec(" + pattern +").length",
+    matches_array.length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    regexp.toString() + ".exec(" + pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    regexp + ".exec(" + pattern +").input",
+    pattern,
+    regexp.exec(pattern).input );
+
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      regexp + ".exec(" + pattern +")[" + matches +"]",
+      matches_array[matches],
+      regexp.exec(pattern)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..dea41480451cab95c845c9b34c4344105c50df6e
GIT binary patch
literal 7566
zc%0o?&2G~`5O!NA6b@A41{{2BRY6;c0|GZvlLnD0N-G?CMH_pYm~On*dPABEuf+3k
z;m(yOV0N9@PGWBy$0=!Yv9dqk&U`bTnH?Lv=Mh{oIvCldOGeuab+t`R(^}LXXysbt
z+<b3Z)We!_DAyRo@p<X=rKUZFRYrXK6=Du*5qyR%f*9fsbtRM?{r9yS$F;|?e#4TD
zSy+@wD96?u*Wn>Rd`r#7E_bdS%p{zPx{=U6XO7!0J%VwwT4~lU8ph#p%s3o^#IZ~{
zS9dsOh)B5ai1eoLo``dL-4<rAkB*L~A;YIsbhK+r!ZEc3Im!HWw`5*bKbu97`4A?~
z&Ev0cSAoaBcgLg9yIE`2tA((r!$kGg!k*MjzotxYNDqC(X#laeUns%VTaRJihto`s
zIPQYJQaT)tClXUZghX5A4hx1b&P(GCjQboh-o!pvXt*>LHX{`fYxe|-pI4b(81FN%
z^(Pp`tV!#%J*|^8*6v1vr<NTTu|Z5YVM>VNfzuLv%{At<JACq70dx=@^q<4)E0`F0
zug55-eBj}E{8(l5)eo@SFb?+Xkpy?n!KQ%wh#Z3LRS2+u?vBSD`6>@XVj)yMhlvK&
zLr|S}80{xuuXO>i9fU}173ZIq$oC8O&n6p0QC(KHgjzRR2e~!@<&tzSixm@_l;!X{
zkbP^C^qg7c6sFp)Se-9?pX3hT!T_}OZKgdNxL;`I7Uy21oV&#Iy(FT~D4!?_0!}r^
zU;xYqi_nzCJQ<)K!}utTrgOfyR!ij~C=3?nLS%=qxX4CEVGQ3NuP(4$nXmF+pVuk%
z8RWFF1Qbg&;x{@^<u4V)txkoYo{y!yJtSH=sd;No6{Y8?iJCiW9)OseYmqgxxc!0!
z)mnv$IV$oMi540B|Gor@_#Po>@V}0Ea67<u10?syU)2|*TSW>T$=B@yeRaI%EV9)i
zY$94l733!vSSt1dUWx~kfvU)U$P(H$_X9HH)$mLBBI_r*i~D+TUD(_Ipa;WYQwZi$
z8%9%$lR8K_q!S*b@9_=;!3rxNXN1TF#1#{Y*4dJp01IZ)3=O?iX+(=i!87%sX9V;p
zIA0;A2+luY;j>t9PP!Z^uG*?#mHvrB89if=Q(uVG{;lvTMcuBx$|>9{wlU$`L8?KO
N>3sN{(ZWyk=YN&IrEmZM
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/number-001.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          number-001
+   Corresponds To:     15.7.4.2-2-n.js
+   ECMA Section:       15.7.4.2.2 Number.prototype.toString()
+   Description:
+   If the radix is the number 10 or not supplied, then this number value is
+   given as an argument to the ToString operator; the resulting string value
+   is returned.
+
+   If the radix is supplied and is an integer from 2 to 36, but not 10, the
+   result is a string, the choice of which is implementation dependent.
+
+   The toString function is not generic; it generates a runtime error if its
+   this value is not a Number object. Therefore it cannot be transferred to
+   other kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               16 september 1997
+*/
+var SECTION = "number-001";
+var VERSION = "JS1_4";
+var TITLE   = "Exceptions for Number.toString()";
+
+startTest();
+writeHeaderToLog( SECTION + " Number.prototype.toString()");
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  object= new Object();
+  object.toString = Number.prototype.toString;
+  result = object.toString();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "object = new Object(); object.toString = Number.prototype.toString; object.toString()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..f8d2838668daf7c2e2ac2b28f07eb990cd1308b8
GIT binary patch
literal 7588
zc%0o?&2G~`5Z<;>C>*H74G#F&s)81Tghbs)Gz}tElvZ`rE84`H#B}4e)*I4@N8|~(
zaOcPyFuP7-C$Tq<<CHYHSlOT1nQzA5%#Kab^(ZNrZG!E>C1)*;J7^OjRA+V{otCTT
z)<>(sJc7(awZ^25FAB#m5qb)%%;@%O%pF{(<cu^Z=2$q)Rif<hzmIMl*B+Pk8<uR$
zlEt_Z<=Dt^9WfFR-BPxRE1af7xDw~$PN=jmxZ}18k6_#?6>H^-s(CmVGY<zsqOvSC
zS8)X4m@0AKG3`#tdm_*2cIt$`K010gEpqf!h7NaaDREq{K}Ilt-7T2cr7J5hFdxFi
zx%Kwz`&Gd4@7>`j?XHz;l~OJ!zJiI;ZG(8qGNZ}3QB@K8MlHW+?(OG_Z|T<K#P{Ja
zOJG4dV6IY*jK*VeDPl^)t!hUDh6u@u;tq`a0&`I#zR*~>G!r&M6EJUer4&D_F}pC{
z<KXHqFiLohRak4<CgrSW8!>@;>bRKqBg#ov0*MDPOG#58?zGxs@?0tCAUx<lvn%8n
zGz?ykGr>gPBXfkY&gZL7uiG#V?(5Q+XwCqp6!#fBl-R34uYc|i#~t-14+t?AD4)Yb
zl^G+UhG=uvi;=z7>3=(5NYcnJJ}<HF=Nz9k-VaG#)wPs0ZcrP$HU;D2Y(JGNCN^n{
z;SZqu)+Fc|lgcNUYPoWCHugTr%-+%gtp07LKdYpdYvPvYUL>5m#O%E!pwF0?s0jj0
z5hO4WEc%PUl*T<NL_LOa!GiZP8S}-hS}GPnU9d0~GCPcFi*#V5tb_)2$~pvfj@8P1
zb^rRjO^MGSrH$pENS=|u;d#1vDPqxR7b))gMETppvX7IPw&pZZMV=n0xs&DrsJXco
zNi$8@FIZ2l6;;epkgo_^q=^6fLKM+GQqkalg^1vCK<p}L?vKB!FNT+j1UTYv+d0PS
zc*&V(qec2eHjIkck8!Xv><7FQ4<?B!&u+*Pnl<-BWXhZ2)#ybwP7IgyjNrDgw|{H|
z!^4&kOeb}VCYQ!_k20tx!^hZz>py6fTk$x99~V$pPH5U@OKJctm_}1H^H!w?Eonle
zYCq3l^N^XZG1oBjPguAcVdl7tk>;AMW2)qj6I$wwh@AR1q>pb+RB4KK{WVS#Ui!}l
Ti4N7~a^3B3@SM@vkB#+zILoVc
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/number-002.js
@@ -0,0 +1,48 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          number-002.js
+   Corresponds To:     ecma/Number/15.7.4.3-2-n.js
+   ECMA Section:       15.7.4.3.1 Number.prototype.valueOf()
+   Description:
+   Returns this number value.
+
+   The valueOf function is not generic; it generates a runtime error if its
+   this value is not a Number object. Therefore it cannot be transferred to
+   other kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               16 september 1997
+*/
+var SECTION = "number-002";
+var VERSION = "JS1_4";
+var TITLE   = "Exceptions for Number.valueOf()";
+
+startTest();
+writeHeaderToLog( SECTION + " Number.prototype.valueOf()");
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  object= new Object();
+  object.toString = Number.prototype.valueOf;
+  result = object.toString();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "object = new Object(); object.valueOf = Number.prototype.valueOf; object.valueOf()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..5ff1d672080e763d18823bad698a60f83ae84427
GIT binary patch
literal 8026
zc%0o?O>fgM7|u2r3=V*}0TMY5O|T(2p-^e<I?<_WC)({gxsBU~rEz4tbp4-PIKUZ>
z`~zM)ZIiW*o2F^kt(U0&c>R9)@#EJP@A)pySsje*+$kk(in_+8VHgc!4~%@Na#H(L
zYZ4zD*1jBLxenvGAFmAKF^saJ)6WrgP{YMXxalH_xI;WC$`1cC<I?f$>#}~skd0Zg
z2$iB7+i*OGj|D`hlx*yAr{!QO#d)Y3D$O``ymsyZwAYG-dZ}8m_J?iO{!mC%R!#Pm
z9gZn-rMU0N?M=yhB-ZJ58<@U5IQTFva{QHsj%IC1aa6BCN@xCDtuxPyUu#)8^FDN(
z)ZSlwTn9h?Tb&<;-StwvT+GCauc4!O)x^HE%xn>AR%C|0lf$d6-8Y%~w|M1K%or?I
z<A~!fm@AdT<94NA3dnWCsd7dWnlMi5#T{s898q4!jB6}hnhBes35d3PLJCW3%u{IZ
zQwa4JXvMTn%A`GQlML3A4Mn2n9S_k#L^%;k0P!GaUEJaZb=n<1xvmhj7cO+e==u^m
zM#<|_!U-Svc#bsI#eDtYbsO3td_7l@%_*EI#2q8Y#r8VD>)+M+aYydtAs}Yr%IDBg
zA?8@9$vc$v6|(R2@xL7)ByMJxpQnhijPtWj2O+3SUh9(PrO`p2?SgSC+w)??#3U^l
z{sq8yZ_?>050yjcYI|aII`saW8oeJ1I(Jw;D_&HO^*%i!eB#_Ajc<?#27okZ$p=cy
z(#=Ykh`}kLS34nAj8B^QJWO#e4o|Jw#3Vz4a&x&PLQ>7202k1Qq=NfPVo*YZ0C{3~
z)0qk>6JnLvDkZNa&~u=OsG5DOe_)roLzARKR(mN^<hwob%aBygcRjl^i4*$`w)8cY
z5Mcx2H(E}YE(OG!oq~&c49jr)NL1Tm$;F%&%EZ(AX>Mw>2WoEKdTNt2>lb9bcM2)y
zxHhc`SR}~*gognqanxZ&KoOlI6b=5DF%PbA*sg%)?D|%HF(NcE?pQi2Sss}aF%f0G
z0%D2)OT)Y^#T_imn$;3YYPUmVLQY(SjsUITUu@ORM9kzJY>xgCXfcBo%m4<=OsWYY
zW6WLNp}4OQxWMgD1BnZ$D>^jw%q3N37Cbo<R9V;MaX=sgPxLM@1HeNtK1Wmo#(!Yo
zvj`ZgY7`ods{<#^1$X#WJSb^_RC^7Is514~r{5QvY}A)qG`Sa<sCev&jkfk|*If{X
L-x=>Q%8l?Jz`QrX
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/number-003.js
@@ -0,0 +1,50 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          number-003.js
+   Corresponds To:     15.7.4.3-3.js
+   ECMA Section:       15.7.4.3.1 Number.prototype.valueOf()
+   Description:
+   Returns this number value.
+
+   The valueOf function is not generic; it generates a runtime error if its
+   this value is not a Number object. Therefore it cannot be transferred to
+   other kinds of objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               16 september 1997
+*/
+var SECTION = "number-003";
+var VERSION = "JS1_4";
+var TITLE   = "Exceptions for Number.valueOf()";
+
+startTest();
+writeHeaderToLog( SECTION + " Number.prototype.valueOf()");
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  VALUE_OF = Number.prototype.valueOf;
+  OBJECT = new String("Infinity");
+  OBJECT.valueOf = VALUE_OF;
+  result = OBJECT.valueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "Assigning Number.prototype.valueOf as the valueOf of a String object " +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..5a3c602eecff39f4a9601c03641763c38a7e88cd
GIT binary patch
literal 12564
zc%1E8-EP}96lVU~b=i8cy?|TvB0*8B*@gluoOFrnZ5~p$h|^pR2pEZx+0v3qQf&hC
z6?VVvW^c8Ny}({$BqiIjP05x_3vQ-d#1N_Tk>~K7?;KKW@Gv0gpwUCnIe0~Vm%=_+
z2LN37&NVn{cYf(U?b?2TK*Lh+Gzez=;C>x|&%|4er1%-67+w(c9N7d?$g%G!C};G{
zz+3D&<5>TSSJq}>`BXt+2Vf8LAwW{3?I4fiON^+3^I(58X~rq`+=JVqz1wP@wqJG{
zR@~OGVvr<OSM?oZjwmDw?mZ;o6yDdO;{>^_tHAPY4#}g(kN4_t*fjR=S7|&D-%z+T
zdnyI3`cJu5J!_qGO<DDp=x8-x9G-u(3WnTRE6tEwqW!dedfYN%#=W6))&j`I%O0!o
z9^^IK_c+8}?WJ_t7PDc1y69bqJR7Zq>y~KoJEHyQ^-rDGFOFI#My&owbo4k6o>~?Y
zycsg<B6L|mAh%f0|8Opz>b8rYVQ2r_@1E>^|HP=p#bQ&$m@sUYLyr2w0BWje*siry
z6B05KRT8#nLTC}YG7c#}MT}=?xHJ{kM=C(-h7yGpRpzc}KXjZZmYR_1qC_p#l^FHb
zq~k_n1HX~;ilY%+66i7=2kg{$f88665&r^-Y{Eq)Ut4Mn%Lv}4==iyP@17B`jR-6o
zt0NYaVmlQKM1MbMg%2r(*Aw232pV@0wVr>7p7qJ~oKp`eXUHV7LxU94L)zmCvx9UP
zo|_nc3_V+>jAS<1j8Z@#p8G7lW?fdm|GlOO_&ElUG8DPO?%5792h`_^Y3aEkxZ5Ls
zS{Q3Po|-8<NsXddKvxSReJR@eklQ`P&Y`4()aXhA9}(YvJBpmyyQJT00BlXU$K^PL
z3<MxbGNwu}eI;}3yI6!=A_yf-it(aCh@eXjD0X{X$3h=Jj<g$72YZlS7sK4&*JBpV
z!q0s^A?9DaK{f{gl{4bkMMK$Oq-`puM0PrBsYQRK+juP+c@yM5o(l;Xq>!jYh+wm*
zbQw!;ChUr6rqwWStlr<!<oeaCMYp5WB+F`<m{Ri6UE!-6lgbobbUBrWW+|jxNP{$y
z;{>BFxnd`sEKDcU1q;kwV>8Ve<yFckC1uR9Jvc!;qzR_ea;~N<N>FNEn*LM?_Tg4V
zuuI#f+)R>{pG$V@1bHs+%?G?RhRey&b8_bLRjX1(>AMR<YhT*oRQajk_o~*eQbGO$
z_}zNSQPy$~$138zImDZ><o^TS{j=iTig%0gZV+aCdNLW`74zO?=FN1Y8_c|aRfiuH
z^X8lG7m9hgAHBXa=V5cciwB?3afv(&8W<zrC5SRiQstag%sKgdCMEqWaC~1xX2x*R
zMWW|3NTX{#$ms~(S=`)&0S||5W8Z7Hh45E$=-3ijcXnoFxA-^ZGH7CHr|ym?>Vb)i
zy9ueOyV0q>n7*+~FFZ0%;b!w!mfL0oU&3ITTb{G>$&9R+unyPZrUXLdYU=-kLG;cn
IYqU}FAL}&p1ONa4
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/octal-001.js
@@ -0,0 +1,78 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/octal-001.js
+ *  ECMA Section:       15.7.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *  Simple test cases for matching OctalEscapeSequences.
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/octal-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp patterns that contain OctalEscapeSequences";
+var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346196";
+
+startTest();
+
+
+// backreference
+AddRegExpCases(
+  /(.)\1/,
+  "/(.)\\1/",
+  "HI!!",
+  "HI!",
+  2,
+  ["!!", "!"] );
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, pattern, str_pattern, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(pattern) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + str_pattern +")",
+      matches_array,
+      regexp.exec(pattern) );
+
+    return;
+  }
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").length",
+    matches_array.length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").input",
+    pattern,
+    regexp.exec(pattern).input );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").toString()",
+    matches_array.toString(),
+    regexp.exec(pattern).toString() );
+/*
+  var limit = matches_array.length > regexp.exec(pattern).length
+  ? matches_array.length
+  : regexp.exec(pattern).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+  AddTestCase(
+  str_regexp + ".exec(" + str_pattern +")[" + matches +"]",
+  matches_array[matches],
+  regexp.exec(pattern)[matches] );
+  }
+*/
+}
new file mode 100644
index 0000000000000000000000000000000000000000..3a42bcc33bef51ac10902d1b4981c354cb25073a
GIT binary patch
literal 16156
zc%1E9-EP}96lVUKrRh3gz1y(C7<Q4asMU5u(H2gI#Px;@sawQpt_lRS#K>%ANh7JP
z0s0ENA9l05y~5sP7khzS?+G?i@{cT2vLsWE;tB|?h(8~B4$t`xbtpBM=UQm5(L>PK
zdqEtNz&=<70CXMW0vsH+f9O2v=#Gm(L-X4-EKJ$nR}BEJ^Hz;;_ftqP>{{q4(k)0J
z!;bAk8RL5j-eB99#QKLfS(%095FZK~0Na?20K#1k4P-NXjuG+UY}g-9nlgfIb8nNE
zcUsMp!{_aWHYjUo1CTIQ$FDoW3=wGga6duIo5H)rD~^%bdh2SA&Y*So-n|F)*K`_t
zboC`3c3<;xN%B;3YW45MYW1{r+)<^~YrLY>e71k~pbUy!TUnSQH+cEU;mJ`;i5l;Z
zjI-uK#v9wT#(I#|bjM~8+qLJyWLs2+F6y8kJ!I>s6sEgCjc@VtgO}g8Up_l%9V^lL
zU0%^+%zdJ1l=G%XwXSDU*Mdx=J?G~$eplB`{4F+izy9Xo{YQ_LYMd`NL6maEb{J%+
z&lTWL6^+WJnrcGJ8h7=3=)4G_dGtydB<uuHmLOqaBCL)@fW-6!3e79bO<ull7=bS}
zA(eTFzf^y&18^;BxIwp}-H3S&yb+vR(4^79KH&{^>bIqTuO5vD9$bMKPKDim$}6-q
z1J5zWN4x^UZdcc#xbUlfIk;_Z5CrQ(;6RB1q^$WqA@CyNAIL(JM&(<;AAEhcq85-+
zimk8|O7tQs%81l0A(9$PREt#T+6|&h-0gBP^M4AM`LhIO799EbvdCGog~&0+jS&5a
z-%9{3jF$ghl{~Jd6yf@W2v@_mFP%**UM|7fy;lsszEM2G7r6cYJc;4e?Z7__lNnUS
z@)=RfPxEDT@QUUunlBa2&z~jYn{vQ1Cy2iDY+a-d!&yavgbmK_1omnC*+o&o=dTq>
z@JTU%=tGdn^`2}XDWC*@@qf=0!EKIX<=j}?gQ=;)6KQg68|dxaNFs3cA=7(^o<R|2
zV!bO2d|)~Ho3ZE2J}vvD2EfLYd7Mu|2uA?AV^cpBFVAQnIVR>V7ji<873Sjw32_UZ
zGeEG}V^KlH0Po(7rJE23+mKx3!`$7KW9HovK6O~6o6~)bbOu}^X2dS?y0St~Tlbj~
zN#e`|C%gcXQ;c~%FGB8<yDG~{+EU5-6tVPb+%At~QVFyA>KEKmSEI{TzUQLtAT){N
z6%m+X;?hlSt7}nV@-DiV${n>7vRFukG?8-0CgAFVD|X_^LUk~mbAx$X*-SHfc@;7i
z5;9Ue9vma)kr2~KIajhR3Q=lSn!c(8duO8}*uoxDmXl;Z5F}f-kZrPFI^e<>E+a#y
z<jmqlt3t)XpDq-w{gpg}NEZrzt@hegD9AS5O+OUGq_T=lj#b3FJj9!@<nICR{#NmB
z#k=`<*Yy&Po>cmG#k|YRyoqMC#LWA9mHeofH`{b?_{__kp!rV9WOKF`53W$UMC5{o
z%E<N-#3EEu#hfz6oNP7|6Mp7M-{<KwV>n?V!Tl*D!D~IpXmi==ptuQL=8eiG&TF@M
z=a0qE15G5ovokBY4X!aC1%{S(>Ko$FejxGzXQ<cIH?py|82?}wzwt=O!p-KdB(qI$
lzL3HsU;E99Co`gANIOi18{-IpsrkQO4!w8gwnpkD{{weUZM^^h
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/octal-002.js
@@ -0,0 +1,93 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/octal-002.js
+ *  ECMA Section:       15.7.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *  Simple test cases for matching OctalEscapeSequences.
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/octal-002.js";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp patterns that contain OctalEscapeSequences";
+var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346189";
+
+startTest();
+
+// backreference
+AddRegExpCases(
+  /(.)(.)(.)(.)(.)(.)(.)(.)\8/,
+  "/(.)(.)(.)(.)(.)(.)(.)(.)\\8",
+  "aabbccaaabbbccc",
+  "aabbccaaabbbccc",
+  0,
+  ["aabbccaaa", "a", "a", "b", "b", "c", "c", "a", "a"] );
+
+AddRegExpCases(
+  /(.)(.)(.)(.)(.)(.)(.)(.)(.)\9/,
+  "/(.)(.)(.)(.)(.)(.)(.)(.)\\9",
+  "aabbccaabbcc",
+  "aabbccaabbcc",
+  0,
+  ["aabbccaabb", "a", "a", "b", "b", "c", "c", "a", "a", "b"] );
+
+AddRegExpCases(
+  /(.)(.)(.)(.)(.)(.)(.)(.)(.)\8/,
+  "/(.)(.)(.)(.)(.)(.)(.)(.)(.)\\8",
+  "aabbccaababcc",
+  "aabbccaababcc",
+  0,
+  ["aabbccaaba", "a", "a", "b", "b", "c", "c", "a", "a", "b"] );
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, pattern, str_pattern, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(pattern) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + str_pattern +")",
+      matches_array,
+      regexp.exec(pattern) );
+
+    return;
+  }
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").length",
+    matches_array.length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").input",
+    pattern,
+    regexp.exec(pattern).input );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").toString()",
+    matches_array.toString(),
+    regexp.exec(pattern).toString() );
+/*
+  var limit = matches_array.length > regexp.exec(pattern).length
+  ? matches_array.length
+  : regexp.exec(pattern).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+  AddTestCase(
+  str_regexp + ".exec(" + str_pattern +")[" + matches +"]",
+  matches_array[matches],
+  regexp.exec(pattern)[matches] );
+  }
+*/
+}
new file mode 100644
index 0000000000000000000000000000000000000000..c1c1dd331e5158404cba2a717276213a6ac90add
GIT binary patch
literal 18706
zc%1EA-EP}96lR<sZ);Z!7<$#4U{?)-+R3sFL*S%nTzANjrbV3eW*Y)pVq`Y5q><Ft
z0DX`>#U5b5USk)%+|3@NBPlzUW$Is6>_k_BDDmi=!*jmxkfPLLu4AJ8Rv$rq|244<
z0tcW50O;BJ6*xFN{;|8;)ocfWR#V>7GBIWQe|7-)gx}TjcYgy3hCLHKN16!<WZ1T(
zD1CfR!6mlzNm>8#TbANv*+h!MI=~iY*8==q4s~QPe1Q>>;w(5AD@_@}ma$*w?cGlM
z^zhYjt2u0IHHSj{vbyrx5oU-$Q;Pcyn(mamFZqQNWOUv+O<QBoe6qE*(|Aj#WnUkq
z#iQ=aQZ9*BC8JkAl<U<uos(`+UR~oCI_;Ow&cB`qM=mdw=EzmvetLL%)G5S`+t<Ol
z?m)(Gw&*(RL$<Ej7K7MYe<eb;LpA82F8b9)mWJjcbW8O3r@Z~(?1$sCmj|7bLcIQj
zU+6RD>^7T}<EBfSJ=dU)30af&?cdM&Swl1MQ>^dpeDmG*PO&l02b&;DxnsKwGBn^0
zkgB5VcBQA<&@{(gWe<%vA(Y3jltIEy5oHk;&dh|`*aS!nS4g2*jd{S^pXs`nOKnJ1
zSt5t(ixmLYf`RLG8^w*#YnYAT!h{A@VL;>Ot?ljcGloYXBo~FRP4S3kw73IoL2~7D
zst7?|3V7LPq6-EHHu@|mUp#noEPBQw6B;cpz-W83hR}1H1-jY2w@72aA;L6vl{N6h
zKzZgxE1p2qecpaS>_NK^N!!*@cuvYl-ceN#$J_@5Ya>^C@#sAz09jG_op8K_8~sU8
zfJl*Aa5A-2(h`_CdAn)mbjiG+His|3QUmr2*U|))`&oX)qh^Pn4`}#YVpc%>&yoU&
z6DAx%2KRgJg!@b~AUQ8cTz$+Nxn<oOs#cUdkypHkL+^4+`kc29Ak+GYo<l<5l_C<o
zbebR))7CD>nG-*I{rg)0>QmuyF)2bM0^p@Gm8G$|!aTAK%u_BspNR*&e_t#|3YmL*
zYMFCMZ3U&qibP7J#ZcO76{Y3Pya2eT;)Mb$uBf3eChf9VrnE3^u71VQr4}5v`I{r$
z^QcKocLXto@X`YwtII)S7Ng9bfye@3BE`(7A+X|cvcj?mGR>i`xUf-}rYW<$qKr}~
zBf<3G1TmNRkS=1DF_E!8NKFgViwdxts};b`Y?^XAK~}uR+Gv=_GFU&E;F%#@N`y{`
znX@;oqKeXI7X^)dX^T_kQ^6lqtzA(;I(6%k3PP5$X1h360q^Yr-iRT;1GxL4D#0t<
z&4#;<8}aI?q#zfrLvl|{NPL$KI5%nQN7YW8imGlKRYm4q`t_<sWv-`d6?0Y0l}g?F
zlDU}e-TpY?Vtu-e8w<4DB-YYK&Pcb3<R)3}`<eom%NV1I6X%f=(*<#Qdd#>h`roxu
z_o173fE882MEKg4j)l5YJ7DDA8EA^p;RQh4E}A^#wXY_x1;Wf~iT>_FO`;|GDhBR+
z4BTR93*pn@?TJ2md0~_BMAMtma_*BH<T|<_phO#xGxG9Zs*sx9hjzme%Dsg>hrjdi
zbu05^GqLgc3LKThGZ{s}tQ#3T0?*(>#7&#oC)bhoDu*TQ*2<4{MdU8(;?1LawRp2=
zBC92)gdaj}{8X5#sbM9dn&QGQ34w}0?Gi0a6_eUyH@TLzs#?p+?(k~LFppD)L=l;6
zVJgSI;jlhJYww&_!CnE3^kZ%Yoh(1rM~;oODwEntRoDf?k4wVq!VJpIr&cj8tA#7)
zHMgO|T(!bI-ua<V;i&I4<BGcBG33V#KD(#><Kjbz;Nq>%k%9kf_ykV<!XyH7Lm^~%
z4FBBPr%GUt(8QIASF#b)>3G(Qf};pf^^Jq#M-FjyPfYdZb01U54OxQsBG`LZ8_1Ek
Lcv2FlGEx2q`G>?9
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/octal-003.js
@@ -0,0 +1,87 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/octal-003.js
+ *  ECMA Section:       15.7.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *  Simple test cases for matching OctalEscapeSequences.
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ *
+ *  Revised:            02 August 2002
+ *  Author:             pschwartau@netscape.com
+ *
+ *  WHY:  the original test expected the regexp /.\011/
+ *        to match 'a' + String.fromCharCode(0) + '11'
+ *
+ *  This is incorrect: the string is a 4-character string consisting of
+ *  the characters <'a'>, <nul>, <'1'>, <'1'>. By contrast, the \011 in the
+ *  regexp should be parsed as a single token: it is the octal escape sequence
+ *  for the horizontal tab character '\t' === '\u0009' === '\x09' === '\011'.
+ *
+ *  So the regexp consists of 2 characters: <any-character>, <'\t'>.
+ *  There is no match between the regexp and the string.
+ *
+ *  See the testcase ecma_3/RegExp/octal-002.js for an elaboration.
+ *
+ */
+var SECTION = "RegExp/octal-003.js";
+var VERSION = "ECMA_2";
+var TITLE   = "RegExp patterns that contain OctalEscapeSequences";
+var BUGNUMBER="http://scopus/bugsplat/show_bug.cgi?id=346132";
+
+startTest();
+
+AddRegExpCases( /.\011/, "/\\011/", "a" + String.fromCharCode(0) + "11", "a\\011", 0, null );
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, pattern, str_pattern, index, matches_array ) {
+
+  // prevent a runtime error
+
+  if ( regexp.exec(pattern) == null || matches_array == null ) {
+    AddTestCase(
+      regexp + ".exec(" + str_pattern +")",
+      matches_array,
+      regexp.exec(pattern) );
+
+    return;
+  }
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").length",
+    matches_array.length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").input",
+    escape(pattern),
+    escape(regexp.exec(pattern).input) );
+
+  AddTestCase(
+    str_regexp + ".exec(" + str_pattern +").toString()",
+    matches_array.toString(),
+    escape(regexp.exec(pattern).toString()) );
+
+  var limit = matches_array.length > regexp.exec(pattern).length
+    ? matches_array.length
+    : regexp.exec(pattern).length;
+
+  for ( var matches = 0; matches < limit; matches++ ) {
+    AddTestCase(
+      str_regexp + ".exec(" + str_pattern +")[" + matches +"]",
+      matches_array[matches],
+      escape(regexp.exec(pattern)[matches]) );
+  }
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..f520e8914f2bbe7043267ff27b287004f5abc42f
GIT binary patch
literal 23094
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/properties-001.js
@@ -0,0 +1,91 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/properties-001.js
+ *  ECMA Section:       15.7.6.js
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/properties-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "Properties of RegExp Instances";
+var BUGNUMBER ="";
+
+startTest();
+
+AddRegExpCases( new RegExp, "(?:)",   false, false, false, 0 );
+AddRegExpCases( /.*/,       ".*", false, false, false, 0 );
+AddRegExpCases( /[\d]{5}/g, "[\\d]{5}", true, false, false, 0 );
+AddRegExpCases( /[\S]?$/i,  "[\\S]?$", false, true, false, 0 );
+AddRegExpCases( /^([a-z]*)[^\w\s\f\n\r]+/m,  "^([a-z]*)[^\\w\\s\\f\\n\\r]+", false, false, true, 0 );
+AddRegExpCases( /[\D]{1,5}[\ -][\d]/gi,      "[\\D]{1,5}[\\ -][\\d]", true, true, false, 0 );
+AddRegExpCases( /[a-zA-Z0-9]*/gm, "[a-zA-Z0-9]*", true, false, true, 0 );
+AddRegExpCases( /x|y|z/gim, "x|y|z", true, true, true, 0 );
+
+AddRegExpCases( /\u0051/im, "\\u0051", false, true, true, 0 );
+AddRegExpCases( /\x45/gm, "\\x45", true, false, true, 0 );
+AddRegExpCases( /\097/gi, "\\097", true, true, false, 0 );
+
+test();
+
+function AddRegExpCases( re, s, g, i, m, l ) {
+
+  AddTestCase( re + ".test == RegExp.prototype.test",
+	       true,
+	       re.test == RegExp.prototype.test );
+
+  AddTestCase( re + ".toString == RegExp.prototype.toString",
+	       true,
+	       re.toString == RegExp.prototype.toString );
+
+  AddTestCase( re + ".contructor == RegExp.prototype.constructor",
+	       true,
+	       re.constructor == RegExp.prototype.constructor );
+
+  AddTestCase( re + ".compile == RegExp.prototype.compile",
+	       true,
+	       re.compile == RegExp.prototype.compile );
+
+  AddTestCase( re + ".exec == RegExp.prototype.exec",
+	       true,
+	       re.exec == RegExp.prototype.exec );
+
+  // properties
+
+  AddTestCase( re + ".source",
+	       s,
+	       re.source );
+
+/*
+ * http://bugzilla.mozilla.org/show_bug.cgi?id=225550 changed
+ * the behavior of toString() and toSource() on empty regexps.
+ * So branch if |s| is the empty string -
+ */
+  var S = s? s : '(?:)';
+
+  AddTestCase( re + ".toString()",
+	       "/" + S +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""),
+	       re.toString() );
+
+  AddTestCase( re + ".global",
+	       g,
+	       re.global );
+
+  AddTestCase( re + ".ignoreCase",
+	       i,
+	       re.ignoreCase );
+
+  AddTestCase( re + ".multiline",
+	       m,
+	       re.multiline);
+
+  AddTestCase( re + ".lastIndex",
+	       l,
+	       re.lastIndex  );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..e657089d33e6b87ba8671797fa1ef9142248436d
GIT binary patch
literal 37649
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
S-y2%*n7SYXaF=VjO!`0BQlM1;
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/properties-002.js
@@ -0,0 +1,129 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/properties-002.js
+ *  ECMA Section:       15.7.6.js
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+//-----------------------------------------------------------------------------
+var SECTION = "RegExp/properties-002.js";
+var VERSION = "ECMA_2";
+var TITLE   = "Properties of RegExp Instances";
+var BUGNUMBER ="124339";
+
+startTest();
+
+re_1 = /\cA?/g;
+re_1.lastIndex = Math.pow(2,31);
+AddRegExpCases( re_1, "\\cA?", true, false, false, Math.pow(2,31) );
+
+re_2 = /\w*/i;
+re_2.lastIndex = Math.pow(2,32) -1;
+AddRegExpCases( re_2, "\\w*", false, true, false, Math.pow(2,32)-1 );
+
+re_3 = /\*{0,80}/m;
+re_3.lastIndex = Math.pow(2,31) -1;
+AddRegExpCases( re_3, "\\*{0,80}", false, false, true, Math.pow(2,31) -1 );
+
+re_4 = /^./gim;
+re_4.lastIndex = Math.pow(2,30) -1;
+AddRegExpCases( re_4, "^.", true, true, true, Math.pow(2,30) -1 );
+
+re_5 = /\B/;
+re_5.lastIndex = Math.pow(2,30);
+AddRegExpCases( re_5, "\\B", false, false, false, Math.pow(2,30) );
+
+/*
+ * Brendan: "need to test cases Math.pow(2,32) and greater to see
+ * whether they round-trip." Reason: thanks to the work done in
+ * http://bugzilla.mozilla.org/show_bug.cgi?id=124339, lastIndex
+ * is now stored as a double instead of a uint32_t (unsigned integer).
+ *
+ * Note 2^32 -1 is the upper bound for uint32's, but doubles can go
+ * all the way up to Number.MAX_VALUE. So that's why we need cases
+ * between those two numbers.
+ *
+ */
+re_6 = /\B/;
+re_6.lastIndex = Math.pow(2,32);
+AddRegExpCases( re_6, "\\B", false, false, false, Math.pow(2,32) );
+
+re_7 = /\B/;
+re_7.lastIndex = Math.pow(2,32) + 1;
+AddRegExpCases( re_7, "\\B", false, false, false, Math.pow(2,32) + 1 );
+
+re_8 = /\B/;
+re_8.lastIndex = Math.pow(2,32) * 2;
+AddRegExpCases( re_8, "\\B", false, false, false, Math.pow(2,32) * 2 );
+
+re_9 = /\B/;
+re_9.lastIndex = Math.pow(2,40);
+AddRegExpCases( re_9, "\\B", false, false, false, Math.pow(2,40) );
+
+re_10 = /\B/;
+re_10.lastIndex = Number.MAX_VALUE;
+AddRegExpCases( re_10, "\\B", false, false, false, Number.MAX_VALUE );
+
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+
+
+function AddRegExpCases( re, s, g, i, m, l ){
+
+  AddTestCase( re + ".test == RegExp.prototype.test",
+	       true,
+	       re.test == RegExp.prototype.test );
+
+  AddTestCase( re + ".toString == RegExp.prototype.toString",
+	       true,
+	       re.toString == RegExp.prototype.toString );
+
+  AddTestCase( re + ".contructor == RegExp.prototype.constructor",
+	       true,
+	       re.constructor == RegExp.prototype.constructor );
+
+  AddTestCase( re + ".compile == RegExp.prototype.compile",
+	       true,
+	       re.compile == RegExp.prototype.compile );
+
+  AddTestCase( re + ".exec == RegExp.prototype.exec",
+	       true,
+	       re.exec == RegExp.prototype.exec );
+
+  // properties
+
+  AddTestCase( re + ".source",
+	       s,
+	       re.source );
+
+  AddTestCase( re + ".toString()",
+	       "/" + s +"/" + (g?"g":"") + (i?"i":"") +(m?"m":""),
+	       re.toString() );
+
+  AddTestCase( re + ".global",
+	       g,
+	       re.global );
+
+  AddTestCase( re + ".ignoreCase",
+	       i,
+	       re.ignoreCase );
+
+  AddTestCase( re + ".multiline",
+	       m,
+	       re.multiline);
+
+  AddTestCase( re + ".lastIndex",
+	       l,
+	       re.lastIndex  );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..d598f086e8c883009bde180203ff4079b5dbd298
GIT binary patch
literal 14141
zc%1E9PjBNy6nE2f*@Xj0tONofx#GYs&_7Tvl(efh&9Xt=Zq=lFS*_4Co}{LZZN`&r
zqlNFl4T&3{fFmD-8{)==BPUKAcw;-s#2$MbXPl(V_K+xJ&ztw&yx;pb(+cgm7T&F#
zV`S_e6Q@H^S1W0ncIFs;ZNGl>Rb#u+a$KxcHvD%gmg&)5cT3Y=hqo&H^v8&p=*+?g
zxMd-NsOi`~DP#28(=JTg7^n3Yys{*t<q)5gX=tWx(jftUO5MOVHQOd8J~<n8M@)N^
zn09CP6&P>Ss?GYNqsm4&R@n%N@U$BKvqO_&f-IlhGi3E*^lrlgf;;%iUBh;-3olc=
zwz>I9ocQqD7kMy$*(XfWdC95P-)F1V$F-A&Dz)B#2es<My{|uA1V#QkJ4LR*c(dL-
ztSM3Bhw$J8cL?@85KV7lkLqoQ=(W&P;T;_y?_xqt>@9+-|CpVsZ^8Kf>6b^R5BF;)
z%B*&4>+{bxx0I@~cIAdU*r4EEx*(a)10IeGRZvBiHJa+rXu%N1(<scNh)`xnDH0YY
zLTMxdBAp(i;^h_Q4H&;9u%i!P6qBZN=yc*T`J46AlE5bSO&gIu#~j;Ah9uuSE!?IW
zF+1lpx-KL1(P*K9NzNf6vIlyyb*S@)5k#del+zilh&H|$XT-)OZr})CDuwfnAUFU`
zIhJP^0Lrt~Ii9V~nK|zfg8GZ3@>{c2xgc~Dsq$Bu2Z4Z9psC+?NSzC8WthWx>%=-L
zhwcRYt9LZ}meaZzi6gHC{{&Z3iW*SPkiQ3yIyQSdUm)B`h^+**E-;NG6VBN;xJ5NL
zNP+tWI+6otersop1s1kD^n9|s?vXD<1h4L}q8K-m)snzW0t&|iEwJYoxF1O^CY0vp
zhzWtCRRg<ZZK#!HWsqk{Fk7^JOMJ%kij<^t3s6-QieX7q%s}Ne7)OS2oM`xCMa|nw
z0x+tHLN9<VCfHywJSHm_6WQNjoiwxM=P*Ws-;i(xxfV8#fa8eod}q)XNf1C@1J$}N
z?T>IGVpajR#<Mq-1^dk~kE<e2;0t~Ee}?tSIcz#}30y#hp0TQapP9YBqucmW4>H+1
zcfZhaIO3NSY(Pl`Uxf#(OL#|jb<@^~epi34<0p7M$Pk{wqR;gKj<?;9b)U*MdE!3R
zzXzt)Wtqg7!LUxG*%~k<Gs_ntkII161?l)PFwu#defN8Ii`ANZ8M++Qj;d-QSy4At
zIrEFC9$u_+CLau%=cdO^lVMF|&QTQI0z-4wIU;i}2j=d=@2;oJ>ZMxomGGmMFS9F$
z<5N4ql#)fXO_Rd&w>Je*K4<IeS8ZmkFUGQqJi#g3m^K{8!pKewhf_4F>g|!DmqXvK
zwLmra+a4Q37A$MS8$u!TW<N}Ms|k**z!M&(a13^s0F!@2TR*=9kAa4Qe_o#&e#tma
z$Uu1dr)l!TXxqFR?u=;RXO3wM7hak)(@S;DllqC(#Sh~}xs8~WEfpR(C*7U$vbx=w
zpA-3@bZw7@{~xX{2YXBpP~v8zIeEOE5P+iw(F5cin1r?4fo(akuX{7+@)|aC=7%X(
z5D)5tZAlwwUch2^C3R#G80+i9+mgmTWk^#NS~Ik0_*A+iNTpRL&^t;y0fn~cnJso0
zx?6y5S>iGUV%Ah@M6q0odW9+Za|~uaB(%TpWr_$H`D5_FhVoE2Rp$7E!pw1@+H)^K
z`4W^__=5oIIkwW!{H`{-F(C-ih4x=Fk|=43C#5O*ao{rE)5cFv1(Dx>FP=>=7B><V
zEz6jyBA52EGuj6!-{Ke*++Ga76YkP;MjJh;Nz2x`<sx@~Q_Ba**$}s4>|a%64R-M%
zp~MBHxRk^+n_DQ(x+o%Z8i`+d;;0cJwWurMwo`D^pCcC^jh_{A+ZZ_x2)`wF@B?G_
XKflw$Vlac*q#B28hZDnz7?J-06Pe^J
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/regexp-enumerate-001.js
@@ -0,0 +1,88 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          regexp-enumerate-001.js
+   ECMA V2 Section:
+   Description:        Regression Test.
+
+   If instance Native Object have properties that are enumerable,
+   JavaScript enumerated through the properties twice. This only
+   happened if objects had been instantiated, but their properties
+   had not been enumerated.  ie, the object inherited properties
+   from its prototype that are enumerated.
+
+   In the core JavaScript, this is only a problem with RegExp
+   objects, since the inherited properties of most core JavaScript
+   objects are not enumerated.
+
+   Author:             christine@netscape.com, pschwartau@netscape.com
+   Date:               12 November 1997
+   Modified:           14 July 2002
+   Reason:             See http://bugzilla.mozilla.org/show_bug.cgi?id=155291
+   ECMA-262 Ed.3  Sections 15.10.7.1 through 15.10.7.5
+   RegExp properties should be DontEnum
+   *
+   */
+//    onerror = err;
+
+var SECTION = "regexp-enumerate-001";
+var VERSION = "ECMA_2";
+var TITLE   = "Regression Test for Enumerating Properties";
+
+var BUGNUMBER="339403";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+/*
+ *  This test expects RegExp instances to have four enumerated properties:
+ *  source, global, ignoreCase, and lastIndex
+ *
+ *  99.01.25:  now they also have a multiLine instance property.
+ *
+ */
+
+
+var r = new RegExp();
+
+var e = new Array();
+
+var t = new TestRegExp();
+
+for ( p in r ) { e[e.length] = { property:p, value:r[p] }; t.addProperty( p, r[p]) };
+
+new TestCase( SECTION,
+	      "r = new RegExp(); e = new Array(); "+
+	      "for ( p in r ) { e[e.length] = { property:p, value:r[p] }; e.length",
+	      0,
+	      e.length );
+
+test();
+
+function TestRegExp() {
+  this.addProperty = addProperty;
+}
+function addProperty(name, value) {
+  var pass = false;
+
+  if ( eval("this."+name) != void 0 ) {
+    pass = true;
+  } else {
+    eval( "this."+ name+" = "+ false );
+  }
+
+  new TestCase( SECTION,
+		"Property: " + name +" already enumerated?",
+		false,
+		pass );
+
+  if ( gTestcases[ gTestcases.length-1].passed == false ) {
+    gTestcases[gTestcases.length-1].reason = "property already enumerated";
+
+  }
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..ed112879b60626265f2fca3a93b2151f56d07e00
GIT binary patch
literal 4820
zc%1E6%Wl&^6rDCa#j0yIUa&!;q-BMW8>vmQNEHHVLd6bE;u~kmWG2jvOY&=c3Jd;#
zPe9_1?Z$c7PMf$9idb3mI&<$i_hH*L!H7e}9RT$zAC>eK9g=-QNLP9ja@J^_x8JpU
zas<RJhkIPkw5fbPAml0Ta%YcUQpISOLk)VIDr%S%A(WSlHTlYfH;?rPx9qLLk}8B^
z9$|u+DZuQJh6lp1J_8lP2|7%S)<!YmS03YhyI$=yKD69&Jm;2UkXfvDxYlF_6y+h@
zHRZt)-b-9)!kG0auS#)k??)fY3Vaxk4taE3A08bYzrNDTH%^}+4>zEt@HUli;F?_j
z+%DIb^^0~<TtC8vdiDM3mpA_ck-xV`<U^eAG&;?CAv8Y6g$wWlG|;J!M+&q?7oGTA
zu|b;Pw+%HgL{~$@U^<`5NtJS*91Txkf^mR#8MKv38>&nPw8`<XI2TTF$rpC_j3bsa
ztfWz3aOfMNm_IO!)>`<J#L7GRYUfi_Tr=TDRBQ0ILfL}q`-$pQ`GG~z>+1gu=TAM)
zs$ZoVmfZ<M`v)E`EvED>xq6EW<+7s(GT@%m1&2C4IkZN<a)dNERB_HFEI4t0xOcI(
z#IiLZvNnU@^R$||en`g!DQmbxk@=#ueq`37$TX7?$i5@HSI{#vacbwCWFhK$;5itc
zeaX4}ju;rIBE_`(j8Z8)W?L`i3-!|=Q-pH7N1%eFhus;z1y;y31<shDYI64yY$ZO)
zsKKA|AaS<O#?!b+^FLBzioI7<Hf*Mf&Pd!1Vf&QvRbm&}j&`>O9Bfbnj_10Q?MDhs
zpoBxkP2yt-FoU=p;Oil}`aj`!I^iST3x~ap*ag&&ttb5EA0ZFoU|#()9XmA_*E2t2
z>;=&nzc*`f!*1b?Nd*c4e&N0+wqmTRGkHHpa^CH-KTq@i0Hg<X{)bvNgQ@cW1rj(d
ACjbBd
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/regexp-literals-001.js
@@ -0,0 +1,44 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          LexicalConventions/regexp-literals-001.js
+ *  ECMA Section:       7.8.5
+ *  Description:
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "LexicalConventions/regexp-literals-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "Regular Expression Literals";
+
+startTest();
+
+// Regular Expression Literals may not be empty; // should be regarded
+// as a comment, not a RegExp literal.
+
+s = //;
+
+  "passed";
+
+AddTestCase(
+  "// should be a comment, not a regular expression literal",
+  "passed",
+  String(s));
+
+AddTestCase(
+  "// typeof object should be type of object declared on following line",
+  "passed",
+  (typeof s) == "string" ? "passed" : "failed" );
+
+AddTestCase(
+  "// should not return an object of the type RegExp",
+  "passed",
+  (typeof s == "object") ? "failed" : "passed" );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..a3ccf7cc93a6876e15a53bf9977b885a4db8373d
GIT binary patch
literal 2735
zc%02v%Wm5+5M+}!eSJbNy0&PdAjd*5;MhL6aNQy@axG|Sr7)#QfusWa$NDk7_t;M;
z&?Ti<@=JDIC+JDwV~3pC;jRLcXB=9=4bZstMafjr2{|H!jAc9{m;K?#@Ix5M3`pR+
zJppIhwBElY<OFvG_3&$|7#(xyLd2<}hDqU|;%cnPHzwjmtlzlh$u=yh92AQQ6U@v3
z>LL9YgkcE-<=_OJRF~F9F_E^O<9yibjQXF4fnUxAehE^?3f<a(8BmlvxI4=86}-2&
zFn}qGDDOydXU|8DzJe5{*(oo=_38Qf#o4W1J#qeZI^2UEyVF$j1^3kY$Kz^!-Mb18
zrM0zNuk)$>_2PdJ^4H@D`3&br{n4Oz5E<X#!WE=BUeN1JGX+{BMX!uItVt{U&`<*t
zr0OmP^ZB)!bSURlsEfb{#sT(K5Q`PjhAJ}xZ5kLp7=@#X0##{lQS`oKUgLZ_jxCiA
z)v!v(<>@;fdA#h;9WBzu1>g7Do+^D(k@d=&hD&zJ^6;qe<oFgM<H^J`vkW}+7m`0a
zh+m)Lf>HSzp8H#-E6q}J3IZfk*y)s+t&O^5f~r|9(CTaVyNAvpF+{QS#w;^<WlMlS
z|A`1>Qt_x`7mD4BVQ-XCg9AYlPE)-MX*W#YRZ!)Z*n~Igw1dA+iUNVx+5A%e67q%3
zp)3-<{rQ!J=HXxEzZVu~&YfyXNov7QwVx|{KrzN1QnU|<hj^l1Y&$=3pH*{fF=$9;
X)4$N>mebVLo6GD*t(x7j)&+k6x(R$!
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/regexp-literals-002.js
@@ -0,0 +1,28 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          LexicalConventions/regexp-literals-002.js
+ *  ECMA Section:       7.8.5
+ *  Description:        Based on ECMA 2 Draft 8 October 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "LexicalConventions/regexp-literals-002.js";
+var VERSION = "ECMA_2";
+var TITLE   = "Regular Expression Literals";
+
+startTest();
+
+// A regular expression literal represents an object of type RegExp.
+
+AddTestCase(
+  "// A regular expression literal represents an object of type RegExp.",
+  "true",
+  (/x*/ instanceof RegExp).toString() );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..c013b642ee7c044cfbd4fb47d044306be14c3461
GIT binary patch
literal 7756
zc%0o?Pfy!06gQ>puh_KnE;&pCghl~rLfWEEw3Mj`x``Gp(}di_q=7Vv9A}~u+I=5n
zUt*VikKLzTcieHd(~^)nY1$@H3kNFOdB42({NC?9J2G)?1C`|tf@=9Awloa8pa1}9
zTWSwf>Wzcuo2Fvf2*@S=jBMx*DgSv6zytb}927r=Sch!`?IFd07!utwIh5*;9dN0e
z>TRsw^pS;8SQh3`x(aktCpQ2=k-CaZqMz#sb2t-reWe|ObyF+fr}NEPwN?MnkW2kJ
zxzq;<Vm0~Np-vEn28a6s4R;9d8C^I=TJ6fF^H;AnH@7w}oMGgfUvBR}c#)&xcts}k
z>92f!dRjYfrsdOnbfH!~+CAHz1xNnN&yh=XzEy7>)>3ifOS*8-lrYlJl`TP2=~!%D
zvP=neZPJsvkSHCg?P{~&<{aboA)T+Byl<QwRcgnnxVlIewzppIr0Ph@DHu5p^;eTX
zg1Xc$t^vB47doH{4Z|1Z5(=F{Xc~7p1Y*)c4vDcaGZPBF2@q>8LvbcG<_VqORaK9&
ztI$CLvgTX$lfJbWj>kzA+p|bW%xYgCg#a7V!iq^xDCH?R2tFodLqZ28I5(i?h=LGa
zU$=dO`oDmg5gTd=99QJqhLq?4;BGq-rE$V666@K|oGG&NDP1Tr&y+Tp1*<D7Yw_-A
z(5=L}5(y0W-`{sa;a!YjFO-1DK(~V<A76!sGfXlpyvW%6vhSJ-D=5KQQ}haiO~+j)
zx{1w-H{LD?cq73JSkvQ`>Zw!p5hrYXmJ%G(%s{3_I#WX}(|O)?Am<FSJc$h9AaKR7
zluJK6N1sg&>24LmdoX*o=&=`5tgNz#iU_C%Z59^8##D3@;vmbgCs--rJ(7XW3BbD6
zA>mgtRo49%Wek~+%a~7BrOd;AiVDJ7AZcwQDhou&la>5@i6Snu@3Kt^>f*kIeVSnB
zGJfD-6$-evN*9t<mI)6-Kk_}i_bGX-rpRkRJg5{7JJYa_EM}iHjn6Fd6I8@35<mcb
z!oxaj<zNQ}#ZJWC>k;%n?FI<rWZYih+maxa=Cv32UYy%rU_K!4OvkdwJC;w$FtbS1
zgnF`t&k0i>L*)|94G)h`ZCTovVuzK;u!t5*bh-;LcU)5uCBxM8#<W55dLyJZsNSL5
z7HQB^#hNjZ+Igrj!{!&FRq&>(&?c@}t*=z4<$zjo_bj7IW&HJi!0w?BfKKH1mw?pJ
pC$7kw(U?wbG~L7`Y`{Rlh5U%35`EF;?JocSA`~UjZHX{a{sS)E%CG<c
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/regress-001.js
@@ -0,0 +1,45 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/regress-001.js
+ *  ECMA Section:       N/A
+ *  Description:        Regression test case:
+ *  JS regexp anchoring on empty match bug
+ *  http://bugzilla.mozilla.org/show_bug.cgi?id=2157
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/hex-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "JS regexp anchoring on empty match bug";
+var BUGNUMBER = "2157";
+
+startTest();
+
+AddRegExpCases( /a||b/.exec(''),
+		"/a||b/.exec('')",
+		1,
+		[''] );
+
+test();
+
+function AddRegExpCases( regexp, str_regexp, length, matches_array ) {
+
+  AddTestCase(
+    "( " + str_regexp + " ).length",
+    regexp.length,
+    regexp.length );
+
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      "( " + str_regexp + " )[" + matches +"]",
+      matches_array[matches],
+      regexp[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..87be12f962e36b289af66c076bbeb7844789fb14
GIT binary patch
literal 5244
zc%0=}-EPw`6wWqa{NC^c5lCpep%Ms?SXQa+I#jfEuyngcZsMliT)T2yMnOCRH#`;3
zzy(ji190p%P1Yq&+qI>L-c&iq{^IkUU&oQXF2zNsjgen`CwL%G$6B{6tI7SoRj$?F
zy02Z2cd_LZ^cshfP!_*Ew5$iP%1LfNMS`Fv#e3MJNFYf#(@=i=99rju`IoVN!IHH+
zEG{$@@h!rL904S^)O^e&X%Q?m97CP>(4iEB1;tH}yVXjgc2su?Lzz<;f+VqAtvetR
z3q&>CM?`y9@b0Q3u}~uBVcxn5Ir`UzM!PmNoG_nYMlydcm(0`Zu{$p^Z-Js(IV^p6
zwhBc4ULKJ*LEfk}4ytpZ@ewGFaUgIQf@!wIp|o3E*yUdEnNW)C$FE*Kf3XS_FELi{
zfV_P2rhal*t{%^Y<{O}xJCW5--J#!Hi6riTUHSxgBu^!vf+&r*>Kz`4Fuo35P}PKN
zK=c?aOfg}<$2{fmWGrk99GKZsraYa3+vnU&WtnpC{4$GquTJXKFIr<Vca}XfdbtFu
zfT`69Un?%)-GfA-xFsz?g0>u|Ou_HQgiT5KZIH`0?g}n*SU+l>VJ~?;6DO<B%^pwU
zsXD~9ffi5!z_P#45S}nmwOeGri?b7TuKr$t`^tnN(VyORS@YMz;`=(TT>x)mg?~LR
z{73{ng%Zvhq4z*u@_p3+Dkw~eE#2LI!1j&t7CvDIbwSY@b_*LA+uF9jeBH4lN7%di
z5fo2H5e~9Qomd!0fSunKIHwq~=x}M}>HiJP!N6jQ(-|kd&9$XXdP<&h6HB7h@x@%H
zCFP}P?8#62zcv;wzdC%sMs;{HAjWP%&NF;rM+9$e?|>|k@;T1_w-SDW=$##9iacMH
zi-@{q$%*bDL!+{0^LYM;vNNbS*ssGI!^@TGJuJMhVk9rn%@@n8l54COrjJzFp9)N0
VW76ZnJUg1NfSG<VcdXQi`vZuRt+xOG
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/regress-7635.js
@@ -0,0 +1,55 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          regress-7635.js
+ *  Reference:          http://bugzilla.mozilla.org/show_bug.cgi?id=7635
+ *  Description:        instanceof tweaks
+ *  Author:            
+ */
+
+var SECTION = "instanceof";       // provide a document reference (ie, ECMA section)
+var VERSION = "ECMA_2"; // Version of JavaScript or ECMA
+var TITLE   = "Regression test for Bugzilla #7635";       // Provide ECMA section title or a description
+var BUGNUMBER = "7635";     // Provide URL to bugsplat or bugzilla report
+
+startTest();               // leave this alone
+
+/*
+ * Calls to AddTestCase here. AddTestCase is a function that is defined
+ * in shell.js and takes three arguments:
+ * - a string representation of what is being tested
+ * - the expected result
+ * - the actual result
+ *
+ * For example, a test might look like this:
+ *
+ * var zip = /[\d]{5}$/;
+ *
+ * AddTestCase(
+ * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)",   // description of the test
+ *  "02134",                                                           // expected result
+ *  "PO Box 12345 Boston, MA 02134".match(zip) );                      // actual result
+ *
+ */
+
+function Foo() {}
+theproto = {};
+Foo.prototype = theproto
+  theproto instanceof Foo
+
+
+  AddTestCase( "function Foo() {}; theproto = {}; Foo.prototype = theproto; theproto instanceof Foo",
+	       false,
+	       theproto instanceof Foo );
+
+var f = new Function();
+
+AddTestCase( "var f = new Function(); f instanceof f", false, f instanceof f );
+
+
+test();       // leave this alone.  this executes the test cases and
+// displays results.
new file mode 100644
index 0000000000000000000000000000000000000000..c9118cc73707008c915e4dfb7a429e9e9dae4cd4
GIT binary patch
literal 22400
zc%1EA&2Aev5MJAf?KJJFMFJEEusOwUTq_NbLjqZVttfyCS8XjdMG*u7z01gq_pe;4
zi4S>(zCa$L=e|P^z4qFk`vg6d<Z3N?#r@GPB})o@khDMib~qe<GeeHIP6mMk8}(BN
z?8bN4?_=N^tA=5m`1ZMRaM=F3^Q2?>0W|70eox&&A!$778paKJS6yuW9AE@a9QYJk
z4#0pQ-{VmB=r}aakY``U`j_6al85DE4uxz3d5By9h)oV{=n?b^LCoPi;Ese22}WMO
zu|dywTFvg^x9xguc&=U>f{0ihe(eYmh=If5egV#44DWM#0a`BTJ*-77YGL3Y^5ugE
zU+umQ#~*R=%{v~WtZ{gpEm2A3{xw_WK5rd&R4I3zUT8JH+3!7^2SxrjJ4Ifn=evj9
zqm~jie!*;>|J)6*PkeG7z+G;pTPB8m_%_%vU+g%@MdYQqtyI;mw*iJ>NHy9afIye_
zoXZI>&P!F)1dcOm%3E0U6oh3J%9tu70Fy2ZNk$K+)`itk7Xa=L7)n^SGoR4&`?lR-
zBiIBXl+a8xQgn!}B@MQq&9JG=O~i#tY|vnGr~qP$ymv1fY9C{8p0FS2z{^VKD*A}R
zZIo0IyC6}0Nu)p-lA{a>DMOOXxsph(G9-y%4;e1)aH-hg-7MIl4c{o`aTXCA!#>4K
zC-D;f`ItQpzA+={Er}1*^rGoyVd<s%ykkT`CJvpR4LplQ(_)}~EsBl<dhCYjIp&l|
z@9~O+^a}D$^fTK&iiV;vh?0fMXd97WJ&ITv>t@XAJ-`?))qX|T1IM?{Mz)#1Zt&w>
z$q3A!7rhx76iXMFJ*Ak_-!xHMOLpb}c>s(4f!#s%5M_rBd_@e5`lm!j8uv#J(vXuS
z1zTq236M3*D|iDo<IU}1#$61#>ddbo?Jas?d)M+kdOWb`$eDY4=6(txNFH<G`wj$N
z>T_1)txDPs8~MFGx$!*pNrD~xlh@E9Mt~VIIaf+5<(@WM-*Y`?`1GOVyml;G>Z<PB
z5&=&MN*2sg*+gPW$+7Q+OazO$us^g5(=KeuT-YXeVGi{A<g^&@)W|zGrY<qQ)9;w}
zfph8uiwu7OXH{|s?4R|S?tt+fsqFD?`ksxLxWGw}He0PQfJ2$Wqwbgo4)Esz^U5-b
zs_=e8W%Q{jMN`TgQi?VMZ3atBZwe|Mp80r`_%Tc1-j92sL0~f%RA{Zcq-XwJW>V8D
z@^JyNPGyViB37GDXN;^kT4#STlmdNM@z`~_$5z?-rJNoj^bg#qlYNZ!ACtK(%e|kH
zC|6a#)Ji7Zo><wGOr%9!+qtu$*LF0dUV)nZ3KY}j_6wzAPQ-f!#bg&=7GzQktTVVE
zPHl2OQMz|Jp_$W!rjQM!td+?M9fXJ>E0j%Z!^Dh^X;>ab<j`(Yxf3O0W~|H1Zj=(c
zs0dH!eXD{9lC`)J!p*-_vnyBnEDGO_nD{WiYUxjkvtD9;eGpYk1y_m-|C0djsX?1b
zHPvr-BoY3irYrAsx}qU<x^hM7%8o>r(;?Cdg5HkQs;kpJ<aFbG90^`&43iOe=sLIg
z3od?L*TIE`)WL-gF7nhm$u4-s4K^JQEba26qDnnoR*=+)E-P4s9T;6!aA_iae`ATt
z3fxT{N^8gkfz$!N4*1gqUE^xiWg1r%B<L~?ohRusjjIr0j=R5_E<$v=2?8>Zi&dkI
zKNZBvud^6_XS_cqFEkb=VPbV%nCZ!PRtahwdmE_$n0N=I&}!^8n}V3q&4Y}*On9KY
xpeBU?(&;D9UtIF+V{c{5_WN1EO9r<Nza=j+ip-IJ{$va@8zqB2mj6oU!~cx#a!CLH
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/split-001.js
@@ -0,0 +1,112 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/split-001.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ * Since regular expressions have been part of JavaScript since 1.2, there
+ * are already tests for regular expressions in the js1_2/regexp folder.
+ *
+ * These new tests try to supplement the existing tests, and verify that
+ * our implementation of RegExp conforms to the ECMA specification, but
+ * does not try to be as exhaustive as in previous tests.
+ *
+ * The [,limit] argument to String.split is new, and not covered in any
+ * existing tests.
+ *
+ * String.split cases are covered in ecma/String/15.5.4.8-*.js.
+ * String.split where separator is a RegExp are in
+ * js1_2/regexp/string_split.js
+ *
+ */
+
+var SECTION = "ecma_2/String/split-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.split( regexp, [,limit] )";
+
+startTest();
+
+// the separator is not supplied
+// separator is undefined
+// separator is an empty string
+
+AddSplitCases( "splitme", "", "''", ["s", "p", "l", "i", "t", "m", "e"] );
+AddSplitCases( "splitme", new RegExp(), "new RegExp()", ["s", "p", "l", "i", "t", "m", "e"] );
+
+// separartor is a regexp
+// separator regexp value global setting is set
+// string is an empty string
+// if separator is an empty string, split each by character
+
+// this is not a String object
+
+// limit is not a number
+// limit is undefined
+// limit is larger than 2^32-1
+// limit is a negative number
+
+test();
+
+function AddSplitCases( string, separator, str_sep, split_array ) {
+
+  // verify that the result of split is an object of type Array
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +").constructor == Array",
+    true,
+    string.split(separator).constructor == Array );
+
+  // check the number of items in the array
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +").length",
+    split_array.length,
+    string.split(separator).length );
+
+  // check the value of each array item
+  var limit = (split_array.length > string.split(separator).length )
+    ? split_array.length : string.split(separator).length;
+
+  for ( var matches = 0; matches < split_array.length; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).split(" + str_sep +")[" + matches +"]",
+      split_array[matches],
+      string.split( separator )[matches] );
+  }
+}
+
+function AddLimitedSplitCases(
+  string, separator, str_sep, limit, str_limit, split_array ) {
+
+  // verify that the result of split is an object of type Array
+
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +", " + str_limit +
+    " ).constructor == Array",
+    true,
+    string.split(separator, limit).constructor == Array );
+
+  // check the length of the array
+
+  AddTestCase(
+    "( " + string + " ).split(" + str_sep  +", " + str_limit + " ).length",
+    length,
+    string.split(separator).length );
+
+  // check the value of each array item
+
+  for ( var matches = 0; matches < split_array.length; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).split(" + str_sep +", " + str_limit + " )[" + matches +"]",
+      split_array[matches],
+      string.split( separator )[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..918343cc2e0648f6ea57a586bd626b8ccc7b089f
GIT binary patch
literal 70881
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
V`7|YlwSrfM6J?D@Y9fKe{{ayH*--!h
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/split-002.js
@@ -0,0 +1,270 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/split-002.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ * Since regular expressions have been part of JavaScript since 1.2, there
+ * are already tests for regular expressions in the js1_2/regexp folder.
+ *
+ * These new tests try to supplement the existing tests, and verify that
+ * our implementation of RegExp conforms to the ECMA specification, but
+ * does not try to be as exhaustive as in previous tests.
+ *
+ * The [,limit] argument to String.split is new, and not covered in any
+ * existing tests.
+ *
+ * String.split cases are covered in ecma/String/15.5.4.8-*.js.
+ * String.split where separator is a RegExp are in
+ * js1_2/regexp/string_split.js
+ *
+ */
+
+var SECTION = "ecma_2/String/split-002.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.split( regexp, [,limit] )";
+
+startTest();
+
+// the separator is not supplied
+// separator is undefined
+// separator is an empty string
+
+//    AddSplitCases( "splitme", "", "''", ["s", "p", "l", "i", "t", "m", "e"] );
+//    AddSplitCases( "splitme", new RegExp(), "new RegExp()", ["s", "p", "l", "i", "t", "m", "e"] );
+
+// separator is an empty regexp
+// separator is not supplied
+
+CompareSplit( "hello", "ll" );
+
+CompareSplit( "hello", "l" );
+CompareSplit( "hello", "x" );
+CompareSplit( "hello", "h" );
+CompareSplit( "hello", "o" );
+CompareSplit( "hello", "hello" );
+CompareSplit( "hello", undefined );
+
+CompareSplit( "hello", "");
+CompareSplit( "hello", "hellothere" );
+
+CompareSplit( new String("hello" ) );
+
+
+Number.prototype.split = String.prototype.split;
+
+CompareSplit( new Number(100111122133144155), 1 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, 1 );
+
+CompareSplitWithLimit(new Number(100111122133144155), 1, 2 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, 0 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, 100 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, void 0 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, Math.pow(2,32)-1 );
+CompareSplitWithLimit(new Number(100111122133144155), 1, "boo" );
+CompareSplitWithLimit(new Number(100111122133144155), 1, -(Math.pow(2,32)-1) );
+CompareSplitWithLimit( "hello", "l", NaN );
+CompareSplitWithLimit( "hello", "l", 0 );
+CompareSplitWithLimit( "hello", "l", 1 );
+CompareSplitWithLimit( "hello", "l", 2 );
+CompareSplitWithLimit( "hello", "l", 3 );
+CompareSplitWithLimit( "hello", "l", 4 );
+
+
+/*
+  CompareSplitWithLimit( "hello", "ll", 0 );
+  CompareSplitWithLimit( "hello", "ll", 1 );
+  CompareSplitWithLimit( "hello", "ll", 2 );
+  CompareSplit( "", " " );
+  CompareSplit( "" );
+*/
+
+// separartor is a regexp
+// separator regexp value global setting is set
+// string is an empty string
+// if separator is an empty string, split each by character
+
+// this is not a String object
+
+// limit is not a number
+// limit is undefined
+// limit is larger than 2^32-1
+// limit is a negative number
+
+test();
+
+function CompareSplit( string, separator ) {
+  split_1 = string.split( separator );
+  split_2 = string_split( string, separator );
+
+  AddTestCase(
+    "( " + string +".split(" + separator + ") ).length" ,
+    split_2.length,
+    split_1.length );
+
+  var limit = split_1.length > split_2.length ?
+    split_1.length : split_2.length;
+
+  for ( var split_item = 0; split_item < limit; split_item++ ) {
+    AddTestCase(
+      string + ".split(" + separator + ")["+split_item+"]",
+      split_2[split_item],
+      split_1[split_item] );
+  }
+}
+
+function CompareSplitWithLimit( string, separator, splitlimit ) {
+  split_1 = string.split( separator, splitlimit );
+  split_2 = string_split( string, separator, splitlimit );
+
+  AddTestCase(
+    "( " + string +".split(" + separator + ", " + splitlimit+") ).length" ,
+    split_2.length,
+    split_1.length );
+
+  var limit = split_1.length > split_2.length ?
+    split_1.length : split_2.length;
+
+  for ( var split_item = 0; split_item < limit; split_item++ ) {
+    AddTestCase(
+      string + ".split(" + separator  + ", " + splitlimit+")["+split_item+"]",
+      split_2[split_item],
+      split_1[split_item] );
+  }
+}
+
+function string_split ( __this, separator, limit ) {
+  var S = String(__this );					  // 1
+
+  var A = new Array();                          // 2
+
+  if ( limit == undefined ) {                   // 3
+    lim = Math.pow(2, 31 ) -1;
+  } else {
+    lim = ToUint32( limit );
+  }
+
+  var s = S.length;                              // 4
+  var p = 0;                                     // 5
+
+  if  ( separator == undefined ) {              // 8
+    A[0] = S;
+    return A;
+  }
+
+  if ( separator.constructor == RegExp )         // 6
+    R = separator;
+  else
+    R = separator.toString();
+
+  if (lim == 0) return A;                       // 7
+
+  if  ( separator == undefined ) {              // 8
+    A[0] = S;
+    return A;
+  }
+
+  if (s == 0) {		                          // 9
+    z = SplitMatch(R, S, 0);
+    if (z != false) return A;
+    A[0] = S;
+    return A;
+  }
+
+  var q = p;									  // 10
+loop:
+  while (true ) {
+	
+    if ( q == s ) break;					  // 11
+
+    z = SplitMatch(R, S, q);                  // 12
+
+//print("Returned ", z);
+
+    if (z != false) {							// 13
+      e = z.endIndex;							// 14
+      cap = z.captures;						// 14
+      if (e != p) {							// 15
+//print("S = ", S, ", p = ", p, ", q = ", q);
+	T = S.slice(p, q);					// 16
+//print("T = ", T);
+	A[A.length] = T;					// 17
+	if (A.length == lim) return A;		// 18
+	p = e;								// 19
+	i = 0;								// 20
+	while (true) {						// 25
+	  if (i == cap.length) {              // 21
+	    q = p;                          // 10
+	    continue loop;
+	  }
+	  i = i + 1;							// 22
+	  A[A.length] = cap[i]				// 23
+	    if (A.length == lim) return A;		// 24
+	}
+      }
+    }
+
+    q = q + 1;                               // 26
+  }
+
+  T = S.slice(p, q);
+  A[A.length] = T;
+  return A;
+}
+
+function SplitMatch(R, S, q)
+{
+  if (R.constructor == RegExp) {			// 1
+    var reResult = R.match(S, q);		// 8
+    if (reResult == undefined)
+      return false;
+    else {
+      a = new Array(reResult.length - 1);
+      for (var i = 1; i < reResult.length; i++)
+	a[a.length] = reResult[i];
+      return { endIndex : reResult.index + reResult[0].length, captures : cap };
+    }
+  }
+  else {
+    var r = R.length;					// 2
+    s = S.length;						// 3
+    if ((q + r) > s) return false;		// 4
+    for (var i = 0; i < r; i++) {
+//print("S.charAt(", q + i, ") = ", S.charAt(q + i), ", R.charAt(", i, ") = ", R.charAt(i));
+      if (S.charAt(q + i) != R.charAt(i))			// 5
+	return false;
+    }
+    cap = new Array();								// 6
+    return { endIndex : q + r, captures : cap };	// 7
+  }
+}
+
+function ToUint32( n ) {
+  n = Number( n );
+  var sign = ( n < 0 ) ? -1 : 1;
+
+  if ( Math.abs( n ) == 0
+       || Math.abs( n ) == Number.POSITIVE_INFINITY
+       || n != n) {
+    return 0;
+  }
+  n = sign * Math.floor( Math.abs(n) )
+
+    n = n % Math.pow(2,32);
+
+  if ( n < 0 ){
+    n += Math.pow(2,32);
+  }
+
+  return ( n );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..ce86209d718ad3b09a210323f8be3f32d97964c7
GIT binary patch
literal 38042
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/split-003.js
@@ -0,0 +1,123 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          String/split-003.js
+ *  ECMA Section:       15.6.4.9
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+
+/*
+ * Since regular expressions have been part of JavaScript since 1.2, there
+ * are already tests for regular expressions in the js1_2/regexp folder.
+ *
+ * These new tests try to supplement the existing tests, and verify that
+ * our implementation of RegExp conforms to the ECMA specification, but
+ * does not try to be as exhaustive as in previous tests.
+ *
+ * The [,limit] argument to String.split is new, and not covered in any
+ * existing tests.
+ *
+ * String.split cases are covered in ecma/String/15.5.4.8-*.js.
+ * String.split where separator is a RegExp are in
+ * js1_2/regexp/string_split.js
+ *
+ */
+
+var SECTION = "ecma_2/String/split-003.js";
+var VERSION = "ECMA_2";
+var TITLE   = "String.prototype.split( regexp, [,limit] )";
+
+startTest();
+
+// separator is a regexp
+// separator regexp value global setting is set
+// string is an empty string
+// if separator is an empty string, split each by character
+
+
+AddSplitCases( "hello", new RegExp, "new RegExp", ["h","e","l","l","o"] );
+
+AddSplitCases( "hello", /l/, "/l/", ["he","","o"] );
+AddLimitedSplitCases( "hello", /l/, "/l/", 0, [] );
+AddLimitedSplitCases( "hello", /l/, "/l/", 1, ["he"] );
+AddLimitedSplitCases( "hello", /l/, "/l/", 2, ["he",""] );
+AddLimitedSplitCases( "hello", /l/, "/l/", 3, ["he","","o"] );
+AddLimitedSplitCases( "hello", /l/, "/l/", 4, ["he","","o"] );
+AddLimitedSplitCases( "hello", /l/, "/l/", void 0, ["he","","o"] );
+AddLimitedSplitCases( "hello", /l/, "/l/", "hi", [] );
+AddLimitedSplitCases( "hello", /l/, "/l/", undefined, ["he","","o"] );
+
+AddSplitCases( "hello", new RegExp, "new RegExp", ["h","e","l","l","o"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 0, [] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 1, ["h"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 2, ["h","e"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 3, ["h","e","l"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", 4, ["h","e","l","l"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", void 0,  ["h","e","l","l","o"] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", "hi",  [] );
+AddLimitedSplitCases( "hello", new RegExp, "new RegExp", undefined,  ["h","e","l","l","o"] );
+
+test();
+
+function AddSplitCases( string, separator, str_sep, split_array ) {
+  // verify that the result of split is an object of type Array
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +").constructor == Array",
+    true,
+    string.split(separator).constructor == Array );
+
+  // check the number of items in the array
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +").length",
+    split_array.length,
+    string.split(separator).length );
+
+  // check the value of each array item
+  var limit = (split_array.length > string.split(separator).length )
+    ? split_array.length : string.split(separator).length;
+
+  for ( var matches = 0; matches < split_array.length; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).split(" + str_sep +")[" + matches +"]",
+      split_array[matches],
+      string.split( separator )[matches] );
+  }
+}
+
+function AddLimitedSplitCases(
+  string, separator, str_sep, limit, split_array ) {
+
+  // verify that the result of split is an object of type Array
+
+  AddTestCase(
+    "( " + string  + " ).split(" + str_sep +", " + limit +
+    " ).constructor == Array",
+    true,
+    string.split(separator, limit).constructor == Array );
+
+  // check the length of the array
+
+  AddTestCase(
+    "( " + string + " ).split(" + str_sep  +", " + limit + " ).length",
+    split_array.length,
+    string.split(separator, limit).length );
+
+  // check the value of each array item
+
+  var slimit = (split_array.length > string.split(separator).length )
+    ? split_array.length : string.split(separator, limit).length;
+
+  for ( var matches = 0; matches < slimit; matches++ ) {
+    AddTestCase(
+      "( " + string + " ).split(" + str_sep +", " + limit + " )[" + matches +"]",
+      split_array[matches],
+      string.split( separator, limit )[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..6b06c09c12642fe477212351360c1f68c963ce9b
GIT binary patch
literal 6268
zc%0Q(%We}f6m>#*6gD6v7OZC3s)DviY|s$3O@kT~LPesA9dc*f#H}-qY=;mbK7e1~
z&tMB1{(@^y-kEVG(@7e#iN=p(-*d0ey|$}5ZAJ=ilVHDaDtJTS7Rn=p&bi-1N9F3<
z+N+w!+XT70W{k_IRE6(P5PATk-0|sWSWtY<$T9I47Fbap7$|@AEzuPX{7I}oFeEn*
ziwgrqeMAGQh5+MJ%03Acy`V%GxB$0Co0dw@pi#IB?X^;|UVdM7cl&MbZXaYEt7iHt
zR1txhf%}YEX9n*fbV!92X~ELZ_V)IlU&>kF;lD9=F!z=L7506kr1aNnDLpHFsAWaz
z9q1?(-yMG1Uk4(8ua3yu&|WXsE2T_me5BEu#JS+Y8AfQPjF!H%1(6bns}1nYcF3?j
zl8GW_Y&6x(@Sus1w7hMGXHcj*kv0pLW<q{s0v3&qMv-Za(Sp(y;M@~vC8EwNyfJH&
zan_GqL}(t-0E^z(=Cmt8y~8MF<U%1q8%;I6t_Io}Ewp6F8&GQ9;lxKrc4u|!MA;Tf
zsYyRqr%76j!R;Luaj;Tq`x{Id@z+7y|E`Y5O(QBEY3sdYLgi!VsB&ir>ZqpR-3aW}
z^Sa{r1hFPwcJX<NrOY@!>!LTxFQ&F;+`B?e9QX{3i?aPlkC>WdEy!O+WrOw0ZyS1b
z;65g&eT)j7gwE5~5nb(U(QW7J{cjN-j8^1+^91{2EbH~c?-MMKseo83!TN*Mb5?~f
zV&yf940j|kX|s*>^(xkr3zBJEX%D@H<7fxAna?PW4xy_N=+Wt_hu5jAhopJyni8{w
z+VbW&TOda*R>L22HKiu}{1W&?ZJ~`)y(Pwf0+f5uu6QUi^Ig24dg$L^JzKOyD^7)|
zFkceC3OkpRNA>AIEMw@1k-O|-wMx26N)y^A`Z`y{GQz>euorMBHl~Ft%ZtVTag|yE
zWWs#A8RlD)ZX>d73PkO7XA25h(#`IwHb>U3d8ORWY@bO>*=uIM1lQ7adDzjXTP1qa
znIppap`gMoWKvKqm0c(^2f6-3w@p6cUj?jsW_v-kN3SJjEHPkzFpFi~nkSRJTNx^6
GO67l}LhbYb
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-001.js
@@ -0,0 +1,47 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-001.js
+   Corresponds To:     12.6.2-9-n.js
+   ECMA Section:       12.6.2 The for Statement
+
+   1. first expression is not present.
+   2. second expression is not present
+   3. third expression is not present
+
+
+   Author:             christine@netscape.com
+   Date:               15 september 1997
+*/
+
+var SECTION = "statement-001.js";
+//     var SECTION = "12.6.2-9-n";
+var VERSION = "ECMA_1";
+var TITLE   = "The for statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("for (i) {\n}");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "for(i) {}" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..cfc1b8b7e7485104438a10e3b4c4581f894de9f0
GIT binary patch
literal 6326
zc%0o>&2AGh5Z;vXQz0ZI1P3no*s9PJ#0k;}ng%sh6e<!`LI@!zJ55YC>y_;gBH%@M
z9iD<CC&XJY_U1nuXOnK)KrYda?a%Y)Z^q83R^UN4(*Wvbj|Hy_+H}?&$Ek9+<Lnno
zN9AYb8V|t9q|Ka+$E3>sxaT-GaaLw{`3V(_Ry{a?nnwjyjQa-49ehjYjQQ>;)-Rlr
znuW!Mfnu)1e5U#U!%GS-_==q}5C+bt&4JQV3Fg<c*HK>1=PHHQrA)dj%cQ#?!&qfA
zR%8kU^$gr6>a`~DZsCAbR6!HBezd#$WD>RiZ*1)?ykZcAU5N$#`SW7^d6IuqPRgHG
zap0)@_`}mx@Z;}`^P{%AQm7R3iFom@Mr!~$<zi=t`J|triF!5vIS?QvI<MTrH!4A2
z9_fu7^}NASv!aF~fJJ?`5uQPzDj;nZF3p6sfeBR9TN*_!YRqkvw*?0H5Tzh0yvXa5
zHkn|3Per8XKJ%&Q3@N8WiR>L_st2da5v<-&<NIo$?ZHM%hP(u()&pdEb|iOR$4-=O
zqt)m4YbeLCx4ejhwLlOw+$+jFa94rf|6H6OHw>xNAkexb;>tTXP~xNyN>oGeb_Di+
z-G5vQ$r@_O<>xV#GU5EJh|ZwCnBLmswKJzdeb+<dqHN#SGsYHK8}heN)nN7N+q&Kz
zeLtn9eT_<;n88bHhR2qNY!ZwJVGl__m_8RwZjmn}q%pF+XC&`}_s_|<h$u(1c2_(S
zp`l1<ox<-!Di4^ze9WVcJq=UVDv+b9*2sCZCBc-|fa)vQ)M(G?a1(BOdd{6|+o<MR
zLb>)5hw8qby;z5_w{V9Mx3-;=hL+HOUY^h9sAKc>`3GE$F%GYOM1MMg&_=1w67xR>
z$_<n&9um>)5YNdT`q$gfmMzhYQv?;(RB%hExg0&J_j`mo#T`@VF1cJSL3>H1M8`y5
z`Epc71lSmMh=*c*oT!q#eEb{NttCLltjP~>pveVb&80r!K9D9ft02fAYZ7VPbS{uh
zY=NPj+$C=Y*`4z;x|Nuoahu?C*2EYW+EsZH(q~@9dJURE&1-#{#rw-B&06}skbGXG
px=-XbQknjqU}ZVm^Q%33EjeS!0sB+iRIgjBXS^3L<I0H!`Y$_Y15^M2
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-002.js
@@ -0,0 +1,69 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-002.js
+   Corresponds To:     12.6.3-1.js
+   ECMA Section:       12.6.3 The for...in Statement
+   Description:
+   The production IterationStatement : for ( LeftHandSideExpression in Expression )
+   Statement is evaluated as follows:
+
+   1.  Evaluate the Expression.
+   2.  Call GetValue(Result(1)).
+   3.  Call ToObject(Result(2)).
+   4.  Let C be "normal completion".
+   5.  Get the name of the next property of Result(3) that doesn't have the
+   DontEnum attribute. If there is no such property, go to step 14.
+   6.  Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly).
+   7.  Call PutValue(Result(6), Result(5)).  PutValue( V, W ):
+   1.  If Type(V) is not Reference, generate a runtime error.
+   2.  Call GetBase(V).
+   3.  If Result(2) is null, go to step 6.
+   4.  Call the [[Put]] method of Result(2), passing GetPropertyName(V)
+   for the property name and W for the value.
+   5.  Return.
+   6.  Call the [[Put]] method for the global object, passing
+   GetPropertyName(V) for the property name and W for the value.
+   7.  Return.
+   8.  Evaluate Statement.
+   9.  If Result(8) is a value completion, change C to be "normal completion
+   after value V" where V is the value carried by Result(8).
+   10. If Result(8) is a break completion, go to step 14.
+   11. If Result(8) is a continue completion, go to step 5.
+   12. If Result(8) is a return completion, return Result(8).
+   13. Go to step 5.
+   14. Return C.
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "statement-002";
+var VERSION = "JS1_4";
+var TITLE   = "The for..in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval(" for ( var i, p in this) { result += this[p]; }");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "more than one member expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..c77fa4f7e1e8fb83aa578062499b3b9ca0b78c2f
GIT binary patch
literal 8692
zc%0o?+iue^7*5w67y^WZxIseXa?`W}0we_81noMlQ|YF)+6_X;OT5-Bi!0k@RES65
z1$Yi_xZpv!<O=Z?{C0Xs+azmJ_b_@B)s8>g|MC0(WJIIx;GIkjBYWqF(JDh1#++do
zr_^p5*+S`{{Gx2pIyN$!>Ya>3xY+sr$S`ifTN(fI6T}EQb?`2>9K?_y)KyS+_dhqz
ziEH;_{f1XkS7A}6ponb{mxvC4e@Vf{t{`UwGX>|Oi|(PhV8pHNEWvm=pQ{uOOPS5q
zSZ1>Y;>RkhxgrsmAxFV|L{4J>?>0<ufdsyQt=G4<o(!UPp6agcg=vMzq7RW!p1&q5
z&y)OdS(iK)VB(<s`2EvakmH}p$x+_BQm7R3TBLYiqSdf@M%l&&am|i}YL#mKQ=MVX
zL3rghzB&@_j0Z|1ha9K7RIRXJ2;-!(TlRdAi3;XXHyqm)=DJrvtlE$$Jn3cb!uTZv
z1@FTsW))hb)xkR{WqnHpm}i!_h&6qOld6R1?OCdW&xFB9wI=%al|XCVjm8W)g-9(Y
z%y8?_=dXPp6}8dq$M;1T2emhx0LMz81PQl?h=c7}i0^+VC&y(KR4iPVXVD_cdoWR=
zW(U+1HAXK3u>WiRvFHVBZ0WPlBgDC8`>e2LH@_%u?NIC7s3F&O;BrBC&&oIY7DW>B
z=Ma+8nh5z)P-YpA0_8Z3mR<>8YUK+zVEj$<@bp8V)lAQAe#~B2F9Dfh#A^GE{I!v0
zhCu3MU-NQzhzuc&>*w`lTrsi=R1M||q!YqTs2%94`T3@{jO7`fxwftF-`3x~48R^?
z4`~cvA|OLZS!=jQ2fjcnQN91*j-DrCy9D;bTf_T^?-B;_BoC+R_3CG^R;~{Tcu@|i
z)~6!Hl0(9(<s8)DSQ$wj$@WcXrbrN+akTDZ=c%=HOCA~`!E2bRy7KL0zOtRTIvF;A
zj!0p~P`ge~W-&N$ydJ?W6@B@Ds^o6enY@%}j?w;y<Qsx|0c;4q5ic}FrR1<RsZKa6
zV$mDUdR+BEn~;QvBP5pUv(;Yar!&z@oyc}k4)Fj5tBdV{Q_S}VDxHms>p>i*$3-5>
zT!L&<?y)XwC6f~yn_ZjH!b+qim@7~`<4b+*p({e&h;6J@ZRZ@ed>%0)4$%smm1eT^
zcoDmgyw`9oscL`4m-fmuU0f`>Y8{D^HPZpDgV~}N$x?g;Y7F19pj;VK3kz+(9L@#%
z>gNHkHoV`fYe@LA3|Z%R0$PdDgNQHsyTgh87>fq$6MLJ3B)#Jp3El|XjZ*4<1+m=m
z@x|bf6-AT6zpg~`HXr1`$LQ#c9FYfO*XzEW0zOBE=9kDSAw2A~o>zP?3~nL(1ND^w
AlK=n!
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-003.js
@@ -0,0 +1,80 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-003
+   Corresponds To:     12.6.3-7-n.js
+   ECMA Section:       12.6.3 The for...in Statement
+   Description:
+   The production IterationStatement : for ( LeftHandSideExpression in Expression )
+   Statement is evaluated as follows:
+
+   1.  Evaluate the Expression.
+   2.  Call GetValue(Result(1)).
+   3.  Call ToObject(Result(2)).
+   4.  Let C be "normal completion".
+   5.  Get the name of the next property of Result(3) that doesn't have the
+   DontEnum attribute. If there is no such property, go to step 14.
+   6.  Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly).
+   7.  Call PutValue(Result(6), Result(5)).  PutValue( V, W ):
+   1.  If Type(V) is not Reference, generate a runtime error.
+   2.  Call GetBase(V).
+   3.  If Result(2) is null, go to step 6.
+   4.  Call the [[Put]] method of Result(2), passing GetPropertyName(V)
+   for the property name and W for the value.
+   5.  Return.
+   6.  Call the [[Put]] method for the global object, passing
+   GetPropertyName(V) for the property name and W for the value.
+   7.  Return.
+   8.  Evaluate Statement.
+   9.  If Result(8) is a value completion, change C to be "normal completion
+   after value V" where V is the value carried by Result(8).
+   10. If Result(8) is a break completion, go to step 14.
+   11. If Result(8) is a continue completion, go to step 5.
+   12. If Result(8) is a return completion, return Result(8).
+   13. Go to step 5.
+   14. Return C.
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "statement-003";
+var VERSION = "JS1_4";
+var TITLE   = "The for..in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var o = new MyObject();
+  var result = 0;
+
+  eval("for ( this in o) {\n"
+       + "result += this[p];\n"
+       + "}\n");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "bad left-hand side expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyObject() {
+  this.value = 2;
+  this[0] = 4;
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..f91dfd20bc69d53739f1e0288f1d85f223826a80
GIT binary patch
literal 8367
zc%0o?+ins;7+y*b)@ajcyfM*idex@s!Ne=2M4>dLLE0438)M9LcM4;-J7jhciSZG9
z0bj)@@zN{fTlmi`hh^DamSvz+ZU}SuXa3XofB%r-&4z`unL0*h_KeXQLpR!jrfHYd
zY-_n<`K0oyV$cTGGJA4O#v%^S(&w7?09IwZ+b<9!=+eT6*su^ooKRbeGW)+B?V8x;
zpse4pBsEGFWl|I|HDVLq6X4xaG_lRe6~Ro3v(Zie(hg_Du4PwXyi&+li>KwxUS}+`
z*Ae2CRgrTg!ZAaZ6!#ff%^`UYVZz~v;~O}7XMg|Yu+-kS)U~@YEhVz(OC+@Cui4u3
zqHtbOWzQv;IH|n&I2U&OGdnv9y{pA)si4G)PlU8O)~_hr-6gi(i%_LjEqrM(>^NY&
zN>{$T67G!$S|g7vtG`w5FklGdq_$gibCB^WcA_+#nhFbj6%ea6g%l^LGV3tjV&LFo
z7{#ngOSCqulXTXPR6uy<h>cj=b2;HkKyNovEqui_Mrw8LKUWCa?jJN|k+*=<VnPp(
z4t4qJ%c!V><{#geVI17vv;q<<ffIzdBSb80&I7*xot+(5C8!v<A?~8Yl#gMeO!b~n
zo!1#{1<3xd`Ny&g*4R)NpJ&K%6vt<kwfpr&a%+nk*IFIfrUl9c>7ElSe48Q(`P!l;
zSE+E|N>F8)jswLwjkaDHx0LdQdocd4eR}yRFly$87^!3xi{f;M_z))X^X@W<n2G%e
zCV&m=oB9UY(18-uE&c0#WkBqfNPYVNP?$LH8y{W=$exhAd>fl;bcP2!;DHYjVD4{7
zZ8xj2S%&CwI>X1vIV23SqyU#1M2M$dh!06)xhNH>dLD73p0`lb!7>gSNW46Rf?NVz
z!O{L58)CQ90T7!o+26uc%@(VZrNcpDVjY*#O;~-W(01LP&BmZ_<F&Vkl=~o`%DSXA
zm{5whrx^b+OC_f+NX00X<Kd6^bkB>57Vn-^53@>`4`S9xe8PTwnr5sHk`|S<T=+!1
zbmWl};9#lP5hTT;AE;FJ+;@W;+#cO{CTa;Xb#cayp!vE(Osw}~MhWu}k)Urv--lc3
zUN%NR-Gn4&OW8f+c7799#2BwQ^YRWVGM<n91bWo84dH5Ui<ox%I#paOy5X9LlC|Ng
z>G`H)$x3_``UuaqpjtVm7nZtt87~FPP^B0#LbF<PKX2|J;ma{(T;myd#b?8~geRWq
z*W;P~9P=jgnZ3(FlIl1`f;Yi&lk~IS!7OVYz8DNyQ8X$1kAX<u<`FscKWcPEj;Mpd
eO?gDM^PCj$Pg-bwiR==>VW;yw;;*jYCxm~$)|TV|
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-004.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-004.js
+   Corresponds To:     12.6.3-1.js
+   ECMA Section:       12.6.3 The for...in Statement
+   Description:
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "statement-004";
+var VERSION = "JS1_4";
+var TITLE   = "The for..in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var o = new MyObject();
+
+  eval("for ( \"a\" in o) {\n"
+       + "result += this[p];\n"
+       + "}");
+
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "bad left-hand side expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
+function MyObject() {
+  this.value = 2;
+  this[0] = 4;
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..165dcc1a11393fe53dfd410555fd934845914403
GIT binary patch
literal 8644
zc%0o?%Wl&^6m^<DDB@9p*dQS+v1wJcr4no)jUZ{NrV44*MBN~SruH-$>e|uFgb*Qi
zZ21AcgkNFF3h@`*8Ry|RwqrX^lQbJEcRY9IKIYtW#~I#i7&x1$W29$Ks8yrrN?A}8
z<=oQSO0HNws=TUbRs$=U9r;eiAdF|fKUI`F@K(k-{R~lp&JDbeH3Lz^iDgPvdjCID
zE{UlR>iPq(q(<qos8mICg_wl*6ga08b!>8SK`@o-Omx-XG~<+*wd@MWD}{WucwElx
zbYz*GjuNM?iX1Bujwv#vy3fdH4(YoK1B@e%uVCq|=g(gbYwbOyt=)-fsgVY6BBnoo
zU#~yU3a6E%{J8`JN0r@=FJ{4yf3MGv!tQFZS}G*s#YaM09jg}>-QFgq+RM;Hy;}Iv
zpqMdmUZtyFZVC6~p5DkK!{|?yGc*uk9M^ZN_8FwSidm3_6Ek6<ZvvvVrqIIT8nXuS
z7KH#Gf)vxLRkCWsHpyW9OnIbdj+ltH9h(!O1oXBu)xZ~Ap`=#l?sbKt&Hh3YRyhTv
z76Yn(b|iORT_-ANq1ngxWspPIn})~1iV*~%?f?-3>$8CG|E|xEs}fW++z@+7#FY<W
zplqo<r7EvetL35lM)Qwl8?3RGTz;M)#uCoYDsA`ci{#dZrClm@Wa<VO=Vg0Nyy2P@
zNXVZ7B&8D~<SSm4WikO2ax2(-W!y@XFWdt8yY}(<C(o>z9x-|gLp4*p9k15z#jdqs
zQN9e^h7zrNjKr_2X+GK3qF5b}z=vV|nqP($67cTB0CWlJ`mPFng0-Q3y`2b<KImnX
zy156XiLm#L53j?~uaHZKJox6Z+Y$V$BOY+S15<@o`#<2F4Ru&AL+Y@O_z<yuLIFAo
zu&Y7XeB7;jKG-H-N(I`UM_jAt4b)^<CP4#<>lk0;j{&wgIKGkV&L(Vg!F@(<ECP;6
zNhW}f)ALybP8+S~-?z96?=4xZl?D|?@%9AsKO}$PmW@&&_(L@O396}nb5cFbDq%i|
zStIcYyYXp~xjM+?k}TvRCgS=hkC;b*rC|qfC>Gs7mE=Xld=P`_ag8UUmLOdfYix<$
zM`c9EYCmTZVICqA)OBcvaVxp&o)J(t=C#yDV*3o+4v$$8LtJgm%H^;)@jUXq@Ilkm
zM5vv8bJ}iplj35*UFcYptey6_3YaZ=5wFBop^tD(^Qx5*qp;LHm*I|}s{tN5)r$Rl
zGlzsPN0D}kuOTWCE)k-;el48qPcd&&m)pA>B(9AUBzR*iH%>qM1Ke`Y!56(DD~Klf
ue=P~*Z4Q+~AD4qGazGvQZps6yons}B&x^kGC9q5Ihn>!I#P>h%D}?{KXY=s@
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-005.js
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-005.js
+   Corresponds To:     12.6.3-8-n.js
+   ECMA Section:       12.6.3 The for...in Statement
+   Description:
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "statement-005";
+var VERSION = "JS1_4";
+var TITLE   = "The for..in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var o = new MyObject();
+  result = 0;
+
+  eval("for (1 in o) {\n"
+       + "result += this[p];"
+       + "}\n");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "bad left-hand side expression" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyObject() {
+  this.value = 2;
+  this[0] = 4;
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..f5bc9952a0ecc69d2b3b825803b27bc8c5a1bc2c
GIT binary patch
literal 9022
zc%0o?&2G~$9M9H$FbUA4i3_K215Ip00uCrt(5@4mN;j?5uE<N=#w?2~+oklz3-AKm
zc>^vy3P(<ex4?G#k+x2nr0&P)C8}fp{QvgP|5&Wu@?hR_A#n2N1UCt|G1d*kxWZ1?
zD3q(GwO2J8x1eDi$~l&YD9i6XGK{-?mK9!p2?zpL9z2G&2MAyY`x43-{-?$@@|{tv
z-+ap2G%QRc6mksYBQ^jCFDX0FXQ+W7k#Ih^8467qL4Gs8&Btq{V!eD;wGMk@)?p7M
zj8&8GDu_V>JPG#+c<l+id;A4ufWaHS_0yxHmy@W2r_{B-Feed7ybu}f`D?NEyewVR
zblG#0zc{Tu`|x}f?D%JKb`*No%k@f0ixnRTG#8o;Ob!l^Zw?|<t5r*%TLe<djaTdA
zOOfDUTxpFW@Vwztxx(f{5N5UAPLP9y)gg`3aBeEB4^;r9*%l}?t1`QMyhFHy-|<mM
z>bQcNlR8OfeOpt6X94+ubVI@kSMur|M5+fH%pj=gvhjTd(Ef0vIYTa?Qi~U6bad#;
z*RhO>+i3Oc`xYPPZf|>v#LD0V0e1qB2c1=@?|&C(#~oQzY}gXAXffp;e^JHe0MukI
z!5szmf6YI(f?^GAeern?DAgRFb<!Q4FOpk(*uFMg;5!~yPNjQ6%otk~OUQq4*>jo*
z`L^n0nU4d-IF7eo6?U}pg*$xwefR9@qcUoimo`6FudG)&nIXvT=Z*OFku=!p1e0=z
zcx~`CAvO^i?ix(}C84R;0#oaa?HMeVU{it9z*ABxb#?i!st6g`^IQI^>5JLvIi-+v
z|8-_knKbST1lZS*jd6S|ONP-RLQvLKDpz+A4J}h;jOHj(N7aZnA+N@zaMT(hLGYia
zNRS=Ssd7>2XplVYXH|scYC=3k;G~<s;Pcj_H;)T|=|sH<nC%ul(56sEY72-iS)vM+
z(8Ex3!tUpK=2&vV3i$cw>x@is4lRP^*(}9XBV8-z7-uPndg4DJtz$SK`YFogBFbh3
zvXo^LPA{AKVs(^Y>+EI;pNOtp5m1GLrDB4xY>XEwo&BNP(Gi;iWQt~SkjN&YrjMEF
zzy|VFSKtijA_C0E%q6g+ulqKo#Ld_xe4<Uxq}_=bPr?KQW>tFiBGXywHvLK4w}q?2
zx4c|%HPgkx;+q09QL%1L(V1B-T9NH&*MHa9?B`{&6dY?$Ok}kY{NCI`qPMUcXo?n3
zdeiSFGyMf*Z8B!|KKIC~;~a_I4BI8W&3@$*?}s>{x;({Eq391)vD_>KIq_XT{`8GG
e^HN{QLpv$H>_(m?u{VL}64QH5`ShwhWd8vP7ia$f
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-006.js
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-006.js
+   Corresponds To:     12.6.3-9-n.js
+   ECMA Section:       12.6.3 The for...in Statement
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               11 september 1997
+*/
+var SECTION = "statement-006";
+var VERSION = "JS1_4";
+var TITLE   = "The for..in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var o = new MyObject();
+  var result = 0;
+  for ( var o in foo) {
+    result += this[o];
+  }
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "object is not defined" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+function MyObject() {
+  this.value = 2;
+  this[0] = 4;
+  return this;
+}
new file mode 100644
index 0000000000000000000000000000000000000000..f873474cbea4987859fc239ea04e19ccbabbfd20
GIT binary patch
literal 6300
zc%0o>&2AGh5OzW-R0s(PsRvGb1S-@bkdR=BplMK3MWJG&UXi=&CZ^6hvb}`73U9z8
zapVSX!PuMs>^ht6rVaEG)n0$&`DXmh*sh9tj8xnX!9nFz@V3BRR7MD$^I(7u>&+AI
zwdeC5LGHf!#${Bh%8y-y?!i~?^zt(-C_ZQ8i1-W(tSAo+R51BpqDvYEvsl02lhQIQ
zE({b65Dlps157We2P9PVf)ZiiLfoBfS}H-qcI6I?d$nq-{;}!q569g7A;>hAXXYAI
z5rLV3`-)k#fOj7zq{51H!Su6(gI9~F<6q<JXyGk`DD0ca$>-1O<@2oe$t#M_+c0tB
zJ^%c26L|c6eLQNvTlH3>RtSr`8m&VdpM%{nBF;EP3#GO8ttW_-z@9h4H+v%E@kBbR
zn6b%Hv%-fVLh_Qg6CXmMT147BT$>B!i3?b?BaI^SI`aU=`vM|-45LJ}c!ReWeKNuN
zUP{Q%LmFZ+nA)5UCCGQ2s*GGHBxt*%=Iv^ry@{bUL*9T?>j@`4JBmB7b0^AXX!8Yr
z8^$5*5lc8&If9_!K48j7un7YH=lXcuF{0v=p599#R6c}>CU?f5j_L^BPr&}K8<6c-
ztchP-ex70}3(n7$7)<JmX|5UfFHr}F0R!ifd_UA*%q_BZ<S&w{!RFPsEo~jRPpN5V
zNvV@Dc>0WuTAnuv@k`d@;qVOiQygn+@&CtI9#H|ARs-uJ+a;^MSF!RtRfZ!;OwsIN
zeY;AH<BC+8K-v>;<t*BRZI%nlqW3V>4)xdhdWW~Udxxx5>xu%ihR*WlI9s7Yt=7RG
zaW$tU{QL{>iF!gir3P!v{|qR1VO;T8VwQ(^MfK2sBYU=NNmiT&QE{~-K@)Z^XOHTm
zkyNJ8ks^1+<!Y1k*Hk2QO!Q^0ie*B8jbk1himiE}D)L(KZ(O9-0GYAcKAozz4v&<i
z0sLM#ICRWX)00{r9&(t}Y2iGEK9}^1yU8uly(`{0pA@#wtex%^%VUOH>!!T>=;N<4
zJ^3tA>GD`{;gT||xR%y0)}eQ$;X}AhU(z29tb%8IWVL6nC1)%-V1G|bW!+jxvps7W
IDi?a`zXt65v;Y7A
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-007.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-007.js
+   Corresponds To:     12.7-1-n.js
+   ECMA Section:       12.7 The continue statement
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "statement-007";
+var VERSION = "JS1_4";
+var TITLE   = "The continue statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("continue;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "continue outside of an iteration statement" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..a2b521f4985583dcc6f6154f9f1af1b8652ce0e4
GIT binary patch
literal 6294
zc%0o>O>Yx15Z#1Qs1OnoQV*Q=2B<<U5(fk!Doul$Dhd@F^@^O`X=3WGBikY5uW;p8
zapVU7g0VN>*>yJCO&jQ?ioJg0c{6@9c1iWR49cYrkf3}fcw3Mwr|39Niw6VesMa|3
z-grLmf>YWz-;@}Ys{CWuaUS4TrRnA8L{QRVa11^pf+)&E0~JhuOXre?!7SD<{G_l9
ziwgrq1BZrGjRB^Y)B*?<y`UfrTu81ao0dw@uwA}~<6gDWtbJ^h_J?Do{UOLSmS^Vb
zRDmGOz<njGw}AH$C!`_@uF&+0gM-(LsN?^}*U`c|22t2Ik&(}zH_PXF^^=zupLcQM
z)O-2))h6)x`{sDmem85)dNmgocQslE+?D`x>C(_0r)aLUR=;%xNQvxuBYd+b7>~!&
zQ6Y>?mYNkl4gq8(Zznp0LN!6!JY1U##fb|<w0jywW_9Kfj`syd_yk8mG<lu37kx6p
z`d*01&m$TVF__w%4kgNWl&TCalp|=nqvq{upuLHqHACKlRO<;hIXm(@uyZHMW@z&T
zejCRz>^&B9urdTe!+ju>L9ht||L5j-+%cl!Ls#!57b+j)M1#9yP*-&X@5f;O*A2*a
zB-Y^Pm!D@u%AE7FDF&1JVw!8l{Y$4q!hoT3alRkvFXk3mJMx3LYOs0rZA)86?h|U7
z7neFK1kbcQZ)1WNFUG^+8RDl1)~2H0Cqy1ofoWDn(<8$LtGHK)@;enqdJ;^<>=J#o
zN(|zPJenxlvu@=S+QV%Yb4sE2IMojI*V!6}cbOZ9v?c4B>avEm^7c4ep**eDz8`Zn
zCnUV}1^INkLOZ1fYs~)?DEDz(@kn2mhj>Nx(0?O)wrq)4oI0qeR6@|eoy*yy`edY&
z33MdLU4FURfc}~)gpP^6$yJDq39xbO3=hTDyinzNr}#H+QEPxqS!$n-O0CO#O40ya
ze&LePHS0__YI$<VU{B|S`wTl==;wEbTOxYbylXzsZJ%j-+-ugx6!+CldGXO_U!{8N
zSt8NJvE1VIWL9o1eP1L(hlSx2xJ_J=p9`#NXM0|?XRjq^EID9*NlRqiT1C@6Xc;OO
G8tK0>Z25Np
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-008.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          statement-008.js
+   Corresponds To:     12.8-1-n.js
+   ECMA Section:       12.8 The break statement
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "statement-008";
+var VERSION = "JS1_4";
+var TITLE   = "The break in statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("break;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "break outside of an iteration statement" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..1b521624dfe9c5996172b36505896108f4073533
GIT binary patch
literal 6133
zc%0Q(OK%e~5OzYLR9ujF91w>+f~r!58?Z#Q>7oXOP?1%y$lY}kQ+FNNUP68<h%*xZ
zg0b^XcHPZ(6GAT0`tf<@oAEccT^08jsk&W)!|Ivf9f7Y<86kAR!vQ+3H$Svqw*uZH
z$UQV;Tt=m;mLDT@4@SAO)6cP>_=1rW5-=>VqC7HC;q+UgOB#jqSifLM={hVf3=|C!
zji{Oc%ucC?BvQ0Zi7;>xzM2{>m7r0lx(n?sujbc3HQmEen|n9{nZ;_Ez6Mo9U}oUH
zVHPjp-Gz?I%NMT>DhJUr;N;)9Ii7RNfC>BhIjQ`)St`%H&#j`UyaOFx?c>px$~F-B
zdviqIhIYU1H@re<e5ld7#1TZrB66g{id=yWg_7!h?+GF$aMv2+8;i)KJ&}wWW^6ju
z%m|=~ki69GK|6RTluxA1!?n3kp1OcVC)Ox3uQT_dy)PiXr_f4-&l|k6?2`%BUMV3v
zk7<O(V8%EdN)Ya0qB7D}NYGAKEv~D9_NNQ|V?})g9Zs$UwnaOq3jEld3TXL*z{M=V
z(VS}f9#clbZBWxco8xiM?BRg)v@L~D`2aea+?jwnsw;SZE6V+b^Aog@1jXg&8J4o(
z{Pe|OD(B`D%Xn~!x;P3MIG5!6u^zE7$$IpyB#H0#m6IL4I&hy-Lj0uE$r!v{qg7g-
z-y}pYS&c`{bIi{$tk)WTpJI7J1>~6rYmZkhS=GIURnV<597|$~UJvU_OllNYB+`V@
zo^~te&_0-1E+~hNpsN$<(fMls+uXH3Yt6c$ysY6E_wP7cp+2p4Tt4AyK}q<<SKt%%
zgmy{|)|mepQ1ne%@u9$6AL13&L;uF>*|H^BaT-JoYb6PrV7Z*%s!zs3nL<a3+!dFr
zP10XeiO@08H>Vnw2>~{ad9W#V7KN(FYrz_BE&m5(##;MyQfnO^D@jA*@V0}Ub{qwT
z9dUIcIM3i*OZraw<}6m}ZeXtNcwU&DSx>e%EQlFysoV0bqBp$C^rCW&E|(`73zw34
xjkO&1hRXA<G<spSDN6binpNU#Pnh=Xwd9N?2kg&PsjOQ|XSP=(L*>%x`7aMj#7O`E
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/statement-009.js
@@ -0,0 +1,41 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          12.9-1-n.js
+   ECMA Section:       12.9 The return statement
+   Description:
+
+   Author:             christine@netscape.com
+   Date:               12 november 1997
+*/
+var SECTION = "12.9-1-n";
+var VERSION = "ECMA_1";
+var TITLE   = "The return statement";
+
+startTest();
+writeHeaderToLog( SECTION + " The return statement");
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  eval("return;");
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "return outside of a function" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..47330264d8ad85cd782ad6894bcec1085903520c
GIT binary patch
literal 7914
zc%0o?-EPw`6!v}?3@$)IT!6R;cS95Vk+@=65$%fTRCN=rc8k2kYrT1K<hYc+3KGx2
z^KipG;w7-1ElIP)%~H3t>rEQ}eD?Xy@j1sQHt+icRqP&uZsnNKE`yg~831rf-65zp
zT8Hg-ZHM{@*xPE1O>n>~KVAaxNQ|<R(@!A7@RXnf<PgXp$JA3$Zu}mA3+%b0Sii-P
zrEyr4DJbj$>|q`OB&Rf7<Z*n45mRs;yo@&;aE85Z<-TZd*K3`|QOn-GYO}YmK$2K(
z)z`!vF-R2LS4jFd@E(ee@b8<Qo!y&|(NhU}J!?h5G5roolKE@4WS-PNw@s0GPjno%
zcfY)y2Oj^<jz=kXr_pKFjj;G!nz;JA<ul4DANpvE)3C`Xv-NL2LqQ-2Y;(xbr4UqY
z3q|djjMN|@@l-X#5lsk{<!@abLdbXr1zaQH)I?a0MS!f^mncD5VV;Qg0TW98Bw7*c
z&?e2$no`#Hr3@3TVh^%mVslcJ!hMI<O3)bx40n4xy{-h>j2D_R<bQD0vct-^4s&NV
zb)s|&&A*Rd6YWCneUfpoN+?0XeT0}GcOHEFpV{%auAGX4e7P4RR6Z3QEow!e7Vj}S
z$iTkSImlY*tdV2RK96A#7`D$28^-ZPCD(*H7oZ0{mk8mqWUtB*sY%+5+!K3WNt0eO
zzI_l~T~CfK=k@nXdwr>Zqw1mX`+7!OXkavlQ0tzaXWG#e6NxDieL#6CJ)ufAATmM$
z%!d=vR6soipdN_!@o8!K#IYO)Q)Mns*b=cMO6`qhG{y9>cxS<2k~0efoX10$`wS!D
zNZ3k*C;7WxPk*kt)2k8K50KKg4`mH1H`?7&L}ht;qHY~)H^nxW??kLEV)hfJVRy<^
z+#-*k6K_$#{ujkjB<IMDhVM<p!#f3XTVm(I=uv%feHY20Bm0tW&{jt?Rg<M6sS{c9
zs=**b!Ah`Ks{pK~9hJ%A%VLz976Y>29ralh{;hq>Ljx<kx9nvUw@RSDmu0dLKB^jv
zb#g1pd+EU&uZyLm1@|M3+}hwhCImH>>yGi_6IK}u5@4{pF=4PTP^p}kTEBE=yil2c
zOw5Vn#|dPb`0-N=e4L0MS;@DihM@DOnww#Mm09ci6RX|$FsC<tjlt<}of`8>Ow9N^
SldDi|#&Pu=^OYpip8o+HZxK8I
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/string-001.js
@@ -0,0 +1,53 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          string-001.js
+   Corresponds To:     15.5.4.2-2-n.js
+   ECMA Section:       15.5.4.2 String.prototype.toString()
+
+   Description:        Returns this string value.  Note that, for a String
+   object, the toString() method happens to return the same
+   thing as the valueOf() method.
+
+   The toString function is not generic; it generates a
+   runtime error if its this value is not a String object.
+   Therefore it connot be transferred to the other kinds of
+   objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               1 october 1997
+*/
+var SECTION = "string-001";
+var VERSION = "JS1_4";
+var TITLE   = "String.prototype.toString";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  OBJECT = new Object();
+  OBJECT.toString = String.prototype.toString();
+  result = OBJECT.toString();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "OBJECT = new Object; "+
+  " OBJECT.toString = String.prototype.toString; OBJECT.toString()" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
new file mode 100644
index 0000000000000000000000000000000000000000..732b8e6cf1fb5bee1212637e8b8b5afca253d837
GIT binary patch
literal 7976
zc%0o?&2AGh5O#kkv|K82K@}2vLai#=f;iDMh@?TJiqeXWdPVN8n{2yXM_z}JSK(!N
z0G@ygcX$fM-e$AeY`mMq+os7SiGRNFjK?#d#|7SLyQElX5o{OF7;Q3qgO(9O7u4>d
zQnh|!zBet}CaAD4#}r)0=f$5d5PAxu3eoB3m^t{uCC9{aF~i)Uo`kXo|9y1rc=j;X
z9~iQfhDDi#a%|*y4i5pMQ>r%cxO3?cCgD7MGg!3Gnd3E!kD=YHlpEF4dSU;zt+0O!
z62&rQU(Ml!VOPR^!)|8;Zv#4lpRW%N-i|_s-%`>3tQ85z)GL_Mn7{AVnCF!*rY>VX
zf{qjO&DVGHV8?%VXGfuTquQudv{>=EaB=x_ugxf@yw@gsa^&fyR>M}lw;Az$u%F2>
zCpVy{Tono16Ae<vt~;12XIRig$h78LmuC<&-XK0#XqcM{%L5fKYjy;RKdmyG(B5UR
z$Dg5<um-Ks=BQ3`vwkckcxcJ-FzZDYC$<uzci^lpx#WmB%@&W#6+pWKK{-R-L!=fR
z#(3}0cVuHHN+oFiL;M=F!?t(ago8E3CJ4As*l~$H4<Y{V-Pv(n1{I66#agtO@)>m0
zsS$!2yv1lY0ehh-$XXDriKWj!&#>=n_Rj|E4f2cR)-JWKQ44#v3(6(wUJ@f>laz$K
z0&8E<M94RiGE06Ncv?DvK(97oopiO51}XRAD$#N7j~ji2uBInOPnT|wlGE)m<uSTK
zrRoR>A^`JV-n*AE->0(F*_F!G6hV}k*%TsKgw$OdWyxgV9LRD`KCO|wOm-t#n8TD3
z?uN2aB<l#7!GFjIK{6nA9TwpaCy|$Z7NAluog<eqw_0TvcYGqfrj12`YHTi?&`{EU
z)#jc!6Ys(@m*d%UVGqxYByFJr&IBxfPGU|5|IdK(1ll<rm;GjpH{#Qmr}CEM7*!)&
z5u>(ZF)D73<nW}?SBGh>&O(yd6HyQ=V?SYorDCsE5n7E0DxIa7hf$1r7?2rnuph!K
zYaAIK=^DW$=g<fm`-NcW99JVg)N+&F3eyLO8kW7ilOSRSQNq)WZQf#_tv0rt63S;R
zMDA!?XVwD9j2S-zQJa_N01?r6rk4OsME4gA+)N?5imHPus4DK3;|tNs1Q3xn@^q(m
heTBoR@2v{=icCy+!5O=uO4^~i0^NS6JhCME`hOeW9*_V4
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/string-002.js
@@ -0,0 +1,52 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+   File Name:          string-002.js
+   Corresponds To:     15.5.4.3-3-n.js
+   ECMA Section:       15.5.4.3 String.prototype.valueOf()
+
+   Description:        Returns this string value.
+
+   The valueOf function is not generic; it generates a
+   runtime error if its this value is not a String object.
+   Therefore it connot be transferred to the other kinds of
+   objects for use as a method.
+
+   Author:             christine@netscape.com
+   Date:               1 october 1997
+*/
+var SECTION = "string-002";
+var VERSION = "JS1_4";
+var TITLE   = "String.prototype.valueOf";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var result = "Failed";
+var exception = "No exception thrown";
+var expect = "Passed";
+
+try {
+  var OBJECT =new Object();
+  OBJECT.valueOf = String.prototype.valueOf;
+  result = OBJECT.valueOf();
+} catch ( e ) {
+  result = expect;
+  exception = e.toString();
+}
+
+new TestCase(
+  SECTION,
+  "OBJECT = new Object; OBJECT.valueOf = String.prototype.valueOf;"+
+  "result = OBJECT.valueOf();" +
+  " (threw " + exception +")",
+  expect,
+  result );
+
+test();
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..8fb0718c119783214fd073991c0e492be268cf0e
GIT binary patch
literal 11212
zc%1E;L2uJA6vy2%#s(6awB5-S4Oj;PB-C|VOM#-TOlvoBKum7pwbs(4*a_V(i2FVP
z-1!iE4sHl><ivrGfbFbp+9pnurln}vp;MgX`T6&McKlwFwd|ITa@hugT5gY+bpo3p
z4FIT_+8M}~$}cNVDyrE+AiE~6$?BL|x%1lqEVHY!?%NL`!LX*Ir%2TyffhCmVM^;A
zQ*eR}t>4y9c1bG8mPv#utO0Cbt82i0OG!h9g^w{J!kht{J*TNfuu;!lW9^k<p;~%X
z&aPdwW!El@xNTL$xgBgF0(D{TJ=E<Xd)L_s+QydJxSPqW51Z`%7X$6wbw!vXat|WH
z{61ZnhsFI$TrlU^iDF@Q`{@2Gfc!N*kXKoIwN%|H#)5H$TWcW2iA#lA&_Ye-!z@7k
zF+He@tUZ75ynL{mFYd<{pAXg_K7RB#R+Pol7D1FUVwH|m!UxoC_e4;Dy5750+@Z22
zgvJ5Jf`wRBL}kG;u_2^;Lx7}ib1O9JV3t^Wn=nORuvSE>=8jn(9+MF3bIKzo^Vopo
z%;g-Hl05~T@YK<<1qiM;tigV{q19eT6E^t|o_PF(;vXIHt$YJB>i-HqzAvbV_1Akc
zi7~a<Md`u7E3=LXRy#WIzm9FMp$}X>B%3hs@o4K3;QTNGPH#To&t`PEAb~6A1GdJ1
z`!<0q<+Csj+&2kaDW9cr;O-@GrF>S#f&2P0z-@cM&6}o<pyA6Wl~9ea>l&aM%dYEk
z;B0!Y0J@&A49)VJ7s~@#*2r3q@oCq+!CvP$OcQI}{!(FcjYKi2V&`6pg~+5c@|=8j
zNsnJ{;<0Ikt~5Qf4V4!c-E~K932UImj+@l~y~QN-|Kz3rh;<Kav}_N%AuY{2(jnCg
zq!SH&4?5jcPkO=!zv%gL6Nn`zj_U7MFtzG0$HHRO)&mHKSOO!IcAfa?$E{(i65PZF
zWDP2$DDny=2_oU@??nLShZZN{Qi1g=yx}tts7x;O&UQaQLNXHlt$GzwBQ7`F>{Q+0
zSBEc{@^P(hM6Q@d44vTWM?hsWUX_9?U5RER<o&atnJa`6&HNxKv!&TWqFFGc%($9~
zUFfh}32{H-TeCGwmXcW#u8=I(Od?@Kh-K8CP<p+<+IeEdqsnLhy3G2Ui;!H6{K|U*
zZ{$bJ{Wn49yD^3RHWb5DY6QU(dPm_Yfzp$ODv%(>u$whR=siUd8-4{-W$esRl0Hlz
z7maZW`4l<4vRzkJ%X@N;S;pxkn@B6Ou4(^s<5nk0m3b0eW|?x=0fSHbd*Cz|V9T<-
zz1n6j-Eev3^I?^2@&%Ms{67YfE*7pHhdx7;M5KTC%Rhwjty_)u$&n+F_}u^(RihD@
K`K*(kQScY;rwif$
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/switch-001.js
@@ -0,0 +1,65 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          switch-001.js
+ *  ECMA Section:
+ *  Description:        The switch Statement
+ *
+ *  A simple switch test with no abrupt completions.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ *
+ */
+var SECTION = "switch-001";
+var VERSION = "ECMA_2";
+var TITLE   = "The switch statement";
+
+var BUGNUMBER="315767";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+SwitchTest( 0, 126 );
+SwitchTest( 1, 124 );
+SwitchTest( 2, 120 );
+SwitchTest( 3, 112 );
+SwitchTest( 4, 64 );
+SwitchTest( 5, 96 );
+SwitchTest( true, 96 );
+SwitchTest( false, 96 );
+SwitchTest( null, 96 );
+SwitchTest( void 0, 96 );
+SwitchTest( "0", 96 );
+
+test();
+
+function SwitchTest( input, expect ) {
+  var result = 0;
+
+  switch ( input ) {
+  case 0:
+    result += 2;
+  case 1:
+    result += 4;
+  case 2:
+    result += 8;
+  case 3:
+    result += 16;
+  default:
+    result += 32;
+  case 4:
+    result +=64;
+  }
+
+  new TestCase(
+    SECTION,
+    "switch with no breaks, case expressions are numbers.  input is "+
+    input,
+    expect,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..1906560b1d9b725689ae1af03e40752e1ea40d5f
GIT binary patch
literal 10566
zc%1E8&2rN)5LQAdr3WU=aNvfS9yoNEW;k}z&^Cl=Iw5pO=z$BP+G?V~v4bp=_QDJB
z1n?$22R9Df;LL?PlAIqWk>#H_X*+Qa$yk<lSKqh0)^1#)ZqG#JQU^h!d_wFtfnAUX
z0G!#zB{-}#j+?tp-R>b!+7WX~CU$6f>j?n&*{qU(`6(nAo|)(c(oIMp#kM6x8RKgQ
ze8845DeD)Tk_(e%6Cny409%-j1o)TK3}jJ!ju8>!EZ7|z?NEZPcKHq)Z&oX<+UrJX
zXE0XU83^&qYKnVxOc8;m5cdh1?u@)mcEjmos&}3ii_d07j(){PhpTQ0aYSuFLNI?W
z7tGV@n`T;IuCp7}%BzF-*8<2t%LDQ@8*kNG^=c|GKH$<iNb~$sb10;!%WOy$)apf#
zAje_YHHY$rMQAiG1)~B@bG%fn(Af||Nuj&T1CT;OTgXxEaA8}>kGB9x+vQT6q?;+Q
z@jhYv9<fnGT6W!T&+bW(^(`my&O>ZLa_KXUQ^``d=cpz+r-0yghfeF|g0{zs7A*1#
z(lo!J1$#$&;W`yjH_QF_!>lQihCG<Wo_cIje%kRGOfkXwkO%%5%9d??YWfUqLI8NU
zzXEW6jsRx>K7XIj0d64!SBVeUp99=_2CfpHjd{R5%D{~p+3^>jtOB@w8MueGZ6as|
z;**;L)%{gKReCU(LN%R(!Aii{m1h9c%&?4&<qsK_Z&ig28$HJtBlD)Uu5mDJY>f2f
z;vR=H#*~bGkuesd*ej~b#_Nmp{2dYQn>2Pa<fUuryc6bcl5t7c06liyb%OiBi{SsO
zjQ@zGIktMPL~cw;>mGGTmjUT{!^DHmwDk{T;=>#0zwZH&a?)s3eg{iyRdQIEuexRk
z!ZA`{g6^Z|Ka+49*wG2@VhgeX9Xcp+hEh0@F!h+Z@cK-05++rcUSSQ7K%g_a&_~z*
z0Evl_(6=q?^(9O<2kchc;<MxT^!UEE_Yybt61q-!fgaL)OP8haW{lAOE+<J~tIk;=
zn6rsoN)YtrQfcnE0*ZYemxW~zNZR!Z%Z-e)aFB}gawZO~vvg&NFiK@{^Acep3#xdX
zRCQ1(C`<@q1N9eFyl=2^Ubb<s3OF7AV{6wElx~s#^IgDS(h)lgkHPS5AB}x?G|Se`
zc!)Z?nkEVc4LjQ0m8YWoSU@eCVvqzhNo3WsuPWx6ylYmmdc`U-8cek_`5<`&23baB
zNqC!P$*My(pAWXc8?L|}b>&uVF_SiZR!IXWr0Ej;MuRfoRWE=kd@k6*)o=3zcDACu
VH{($tzW2c3G!g-`fLtf#`9H$tJm>%b
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/switch-002.js
@@ -0,0 +1,63 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          switch-002.js
+ *  ECMA Section:
+ *  Description:        The switch Statement
+ *
+ *  A simple switch test with no abrupt completions.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ *
+ */
+var SECTION = "switch-002";
+var VERSION = "ECMA_2";
+var TITLE   = "The switch statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+SwitchTest( 0, 6 );
+SwitchTest( 1, 4 );
+SwitchTest( 2, 56 );
+SwitchTest( 3, 48 );
+SwitchTest( 4, 64 );
+SwitchTest( true, 32 );
+SwitchTest( false, 32 );
+SwitchTest( null, 32 );
+SwitchTest( void 0, 32 );
+SwitchTest( "0", 32 );
+
+test();
+
+function SwitchTest( input, expect ) {
+  var result = 0;
+
+  switch ( input ) {
+  case 0:
+    result += 2;
+  case 1:
+    result += 4;
+    break;
+  case 2:
+    result += 8;
+  case 3:
+    result += 16;
+  default:
+    result += 32;
+    break;
+  case 4:
+    result += 64;
+  }
+
+  new TestCase(
+    SECTION,
+    "switch with no breaks:  input is " + input,
+    expect,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..21fd56d2cc4ac2a0e62963189770566c5049302c
GIT binary patch
literal 11449
zc%1E8PjAyO9QDc=V+Vu~cY+X?O=uHb(9~7hN)bh)AX@E;+{A0GrAcv|b>)K~{_~-@
z?ZA<5z#ZFZ*R*kxCULv6=F%v3{QUEKKfCdZi`4C!s8nntXq4U%yG39J6aWBC+vtOX
zYVBoxx31e=1d7|@nWBjuTKc#Nz-{(a(ck<C5)7LrdWLip5=gOa2`FQ9?|>6*8RJ;L
z*&{1)ST+$**Z|nV^a8-&q-r3G;$w`6fU{s{6tqJLwpyhdth`<+H>$5|#qB{^aeDyb
z$Eu6ELrf8Yrhq$zrW?T9U=>aeQ@#CYXXi-}^5QB6I&5`Kz>(+(Qj&Q-Uowv>Z|kba
zTw@iL@~i!Kj~9W+Kl3B<IxBBf8;2DoG~VTCZKQd5sW}u<)L}6wCAD(aCCG6Ycl9B@
zhzMPjOUWoh(;PJwEp%3dP+ID4@(D;Gp$+6jjc{f|D2#>xNz3IZPTIln1+_<*zAsoQ
zA`Sb{ZUx6A#QL%#$<708LDKgH$E9RTx0k3UI;Mc&R+~=t%Yn8=9nBc>5|(LRp@nCM
zy6HMGqyDe-<9}v#v1rIAlb3kxp~7V1C6ECs5tL^kZ0ZsLt}OANGZNoaLcDl0Tq@o_
zW#nB#mO7-XOZ(T1v>QrjUu6}WOSaHtW&Sj0J|*+tGBV#&!aRSy=`9=e-!oEwrfdg%
zwshS8$jE(P3HN-@(O*9De`X~AgA(%BInw2`pWTn(e_J%M74h7)bnZj>Evi+|SL(9+
zjuY<2&TXqP<;ECWT~~se5NXYm4(T!?y=)kBDNI{G83`Y6U!UIr!pTr!6#fEpGYUB^
zELUAKhT$n^9pF)`bOpW48W+OAj!tj~TaXp#&_Su!vxxK(p+39?z<OXQ6CssZzaknw
zH-XNCMDJZ5p)8batDgwvsmz{Bxkl}?s+Pr{PHw~TA#d%a_Td!gTL@z@=Gpwzl)Omf
zY9?iDVbqkolILnBWo%*8l<aMDHIp)yPEGMv927FAKa&2<1)fZjk1)BKNf}!hH6>qm
zay64OwlHc+{EuAC#NWlD)r=4~C8IUen~{shceLEA;rSMl8h=^a)f9fs)W<Ala0+Bf
zeeZ+e0XvQTwl&MvngqcUXIImN7ocHBa<W66voHe#OW}+OaYkhpna>L2J$d&>ka!Li
zGHR^rQIZOPdqZa{Dw23_cFtYL489N^fmd9HUFyoCdcZ>3@I@t^Krv3MFXbi<5k*dT
sUyp$^mk~J^p5TLP$N{>+HE3rKt}#c|JPE|_9vGO(Q*ait)=72#2O67%i2wiq
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/switch-003.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          switch-003.js
+ *  ECMA Section:
+ *  Description:        The switch Statement
+ *
+ *  Attempt to verify that case statements are evaluated in source order
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ *
+ */
+var SECTION = "switch-003";
+var VERSION = "ECMA_2";
+var TITLE   = "The switch statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+SwitchTest( "a", "abc" );
+SwitchTest( "b", "bc" );
+SwitchTest( "c", "c" );
+SwitchTest( "d", "*abc" );
+SwitchTest( "v", "*abc" );
+SwitchTest( "w", "w*abc" );
+SwitchTest( "x", "xw*abc" );
+SwitchTest( "y", "yxw*abc" );
+SwitchTest( "z", "zyxw*abc" );
+//    SwitchTest( new java.lang.String("z"), "*abc" );
+
+test();
+
+function SwitchTest( input, expect ) {
+  var result = "";
+
+  switch ( input ) {
+  case "z": result += "z";
+  case "y": result += "y";
+  case "x": result += "x";
+  case "w": result += "w";
+  default: result += "*";
+  case "a": result += "a";
+  case "b": result += "b";
+  case "c": result += "c";
+  }
+
+  new TestCase(
+    SECTION,
+    "switch with no breaks:  input is " + input,
+    expect,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..cc3af70a45719503ae28e8d9e19ba254dc8a589b
GIT binary patch
literal 26087
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
D0XYEK
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/switch-004.js
@@ -0,0 +1,94 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          switch-003.js
+ *  ECMA Section:
+ *  Description:        The switch Statement
+ *
+ *  This uses variables and objects as case expressions in switch statements.
+ * This verifies a bunch of bugs:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315988
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315975
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315954
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ *
+ */
+var SECTION = "switch-003";
+var VERSION = "ECMA_2";
+var TITLE   = "The switch statement";
+var BUGNUMBER= "315988";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+ONE = new Number(1);
+ZERO = new Number(0);
+var A = new String("A");
+var B = new String("B");
+TRUE = new Boolean( true );
+FALSE = new Boolean( false );
+UNDEFINED  = void 0;
+NULL = null;
+
+SwitchTest( ZERO, "ZERO" );
+SwitchTest( NULL, "NULL" );
+SwitchTest( UNDEFINED, "UNDEFINED" );
+SwitchTest( FALSE, "FALSE" );
+SwitchTest( false,  "false" );
+SwitchTest( 0,      "0" );
+
+SwitchTest ( TRUE, "TRUE" );
+SwitchTest( 1,     "1" );
+SwitchTest( ONE,   "ONE" );
+SwitchTest( true,  "true" );
+
+SwitchTest( "a",   "a" );
+SwitchTest( A,     "A" );
+SwitchTest( "b",   "b" );
+SwitchTest( B,     "B" );
+
+SwitchTest( new Boolean( true ), "default" );
+SwitchTest( new Boolean(false ), "default" );
+SwitchTest( new String( "A" ),   "default" );
+SwitchTest( new Number( 0 ),     "default" );
+
+test();
+
+function SwitchTest( input, expect ) {
+  var result = "";
+
+  switch ( input ) {
+  default:   result += "default"; break;
+  case "a":  result += "a";       break;
+  case "b":  result += "b";       break;
+  case A:    result += "A";       break;
+  case B:    result += "B";       break;
+  case new Boolean(true): result += "new TRUE";   break;
+  case new Boolean(false): result += "new FALSE"; break;
+  case NULL: result += "NULL";    break;
+  case UNDEFINED: result += "UNDEFINED"; break;
+  case true: result += "true";    break;
+  case false: result += "false";  break;
+  case TRUE:  result += "TRUE";   break;
+  case FALSE: result += "FALSE";  break;
+  case 0:    result += "0";       break;
+  case 1:    result += "1";       break;
+  case new Number(0) : result += "new ZERO";  break;
+  case new Number(1) : result += "new ONE";   break;
+  case ONE:  result += "ONE";     break;
+  case ZERO: result += "ZERO";    break;
+  }
+
+  new TestCase(
+    SECTION,
+    "switch with no breaks:  input is " + input,
+    expect,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..6f46fa05719732865f6495f810f59397a41fafc9
GIT binary patch
literal 12926
zc%1E8Ka(3Z6yI|a0u%&h2t}%ef+54?ZbG0SV~%lr27Kcf=Ipq=k=OECiEh_uwYiwd
zP|!e03(W8ZC~5f?P|;BE1^5U&$^X{2R+iV=&E3s4xmYVbJ^kMQCzW|Tq<FtPz^J$X
z6$^caPMnhCINh)}avs#1hpqc9FC1d0yeH?BDT(<0?On&Y0kg`<<sHNb>Qa1wJ&G9O
zBn%{}-u!puJRw1Ek=9=@WoI3&kV#Uc=a7K#8G+=IdJhMj^a*B?T!2pIOh=rNz~8?P
z<E>h?UH`IK-kXe-_a;P=v|938gK*3cmE@ix8n4iE1lucwW`E`JrgN`IB22$;MhO2d
z7Q#;LsAUVnm*7LK`ml2R!C3(E-{OG02IK8|yHT?O;~Rq70K1%x+=wHNPk;fdh}NDB
z8IB?Vt~I4E*}=1MB@$Ic>3peN;lU8bS#f&>#^HpFw{fI9VQxn#&5wYX9}6l`*2BCG
z<EIRS`vr_*)(#t?zj`Jqte<xjs`-Efh>a4=2~mQ#9&0JZeeN*g5BT!Fg3$Z(jdCXW
z0z9+$;HGPbJzHI}DBVUGebQSh!RO<XZozoH*{L+@2giq%PUX1XY}Y=o9Ua5aBRh_2
zPizsuC(?7}1h*eD_c3~kb}0({-Fm>WkD2QM7@Wl(oa_v`F`GU>x^6aV;?qMwVRHTy
zC-6JWEiLPUA@ah+?(N?F@a{(+>mkZPQ4Fl(d<*6`m0%3^5IWmLYkc0NKsFahS0#`p
z?9YfdHI;GtKHfrwfWh<&kE4jBD>y#Vr3f(EC(mYFsv`59*=9RBz*k(E6oK>Kr&_$v
z9CH_5N4_<%we@gqhxJ9r_}7d9=4F|0^+i@V+B(YUi4`V;?Tg5(FwQrwA3uu&Ph{!I
z1pewc>mI`IlPJAwwjqD7iE$IPI8-$(3^tG!l`6u8dXR?Rlex6k_XdBwuF%wsg0H|Q
zKM=FC6{MeJE=aFUU5?&pa`X<OGX{RJTd?d+458kiOYzFYlpIm9;jd#chA8;$0A?u9
z-UxjHAZ;#Df$sC?cH0($=G!T1l2y0|AzxY+b{}JpL-rv!;-hWc)<eVxTRU>0-F+JB
zYHO(t&5SChv7RM0vq-pD^AwzrNLjlT1fA-@8++?tRBW~fEIeIw)GHZt-UX^AA|=kE
ztjTQP^1TX|Bg|tK*agNwqqo4oHjEk86qhw^l28AXF`qWf3k>5sq(2ZB^2x)#yWvQj
zZS<i3P+3DhJ!o;i0~H3M>ieAqNWzd}6lnW1i-2y@DF#hi%yPOy0?q&hJqr9w9?3WG
zKh;4umexP2F8{g9nuSiohA~|uxg6uNap_cCfVS*}tB8ApDn)UGrBtOCwdO>neyy>)
zO_lr4OXap#6OONYa;OPkm_jGl2u8-g8<>wH3+^?6<7iQ(ZcPuGa)2CC<##WH7H5yI
zD_z)~JQTxX+Yl1Loa|6ELIr+R6e+Am9{z`tBK@-Y65@Qk{V=?oPDJgF`2L>a@kYL_
z0z*cH7P+^ry)4lc0T#nkey#aS8@seI+cx&5v@v%;xGN(S9l5ghGTX#FYT1pPX}OX<
z6wdP<D5o{~&O1x_P8u@?c~9ZHuYsVH&ct}QiiSK^GlpUD%>-knZAR^dW@@)R(LPvc
z{AzA&bRI{O)F<p~>EWT)JDN4Z5<IOu<<`Wd^t*%fmbgJtt_fcWZBsn?O^AuBJ}ljH
nrMs-j-!+eM$4V^!y#u6Q&8~H+ie+Dcv}%%<yi`#^=^6e9RryIC
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-001.js
@@ -0,0 +1,83 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-001.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test contains try, catch, and finally blocks.  An exception is
+ *  sometimes thrown by a function called from within the try block.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var INVALID_JAVA_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor";
+
+TryNewJavaInteger( "3.14159", INVALID_JAVA_INTEGER_VALUE );
+TryNewJavaInteger( NaN, INVALID_JAVA_INTEGER_VALUE );
+TryNewJavaInteger( 0,  0 );
+TryNewJavaInteger( -1, -1 );
+TryNewJavaInteger( 1,  1 );
+TryNewJavaInteger( Infinity, Infinity );
+
+test();
+
+/**
+ *  Check to see if the input is valid for java.lang.Integer. If it is
+ *  not valid, throw INVALID_JAVA_INTEGER_VALUE.  If input is valid,
+ *  return Number( v )
+ *
+ */
+
+function newJavaInteger( v ) {
+  value = Number( v );
+  if ( Math.floor(value) != value || isNaN(value) ) {
+    throw ( INVALID_JAVA_INTEGER_VALUE );
+  } else {
+    return value;
+  }
+}
+
+/**
+ *  Call newJavaInteger( value ) from within a try block.  Catch any
+ *  exception, and store it in result.  Verify that we got the right
+ *  return value from newJavaInteger in cases in which we do not expect
+ *  exceptions, and that we got the exception in cases where an exception
+ *  was expected.
+ */
+function TryNewJavaInteger( value, expect ) {
+  var finalTest = false;
+
+  try {
+    result = newJavaInteger( value );
+  } catch ( e ) {
+    result = String( e );
+  } finally {
+    finalTest = true;
+  }
+  new TestCase(
+    SECTION,
+    "newJavaValue( " + value +" )",
+    expect,
+    result);
+
+  new TestCase(
+    SECTION,
+    "newJavaValue( " + value +" ) hit finally block",
+    true,
+    finalTest);
+
+}
+
new file mode 100644
index 0000000000000000000000000000000000000000..22050d00b2cc12240d8c5621574e581a94c67185
GIT binary patch
literal 12267
zc%1E8-EQMV6n2~Lc7YXwTM&{}fdm4YLba<^lm-&V-59cIRXY`2ttR#~w$`!3cuY53
za|MD2-~w^aOK{C2z$Guj8RySQCUKgKlV+Prt?QZbnVIi==gc=A=V{n>aUpMGWEIYd
z-z2Cd?Mjl=@U4zi(rRDnIo<TzSjuOkHhI?xXyNZqB<T%km5)DuiHL(5E-qu!MFdgD
z_aal)@IH`UIG#0X>tATHlVr;$ktxTL9M7Qx1Mx>R3wzYLaxjU^d8joUbU=yYH4FPt
zuB(cnoz?Q$URgfdGZMF@M|D+)VuIYr-1o>0x%MdOe0p?rJZW!mjb_<@Boo;pv%6mq
z$$wUh<fVF{i$d}~RH(|c;`7gM1Cal%4#;~@ZfHhT6$0bi%$kj5Af+5oL~#oSa2pVP
zxU(`uUxV^e{b{ZKtfXEDLG>|I*p#+&*=zv0Fbob`rr$b*-)tjn25lG7Y+(D>&*ARS
zY&u^!*2(c_$B&*o5(>TgvQ2Oh0K$6Twb7XIpqvYtf?Rj_X!L{$MHnvwFp!H-0|&Fn
zmD&_`hf_eL88R!uqLX<G%C8A9paP|s7=G1nPR=QE)^9uxmmCj~PHb?@m9SoR>FnYw
zDiNn?)A4?pp^t|hrEGEyYa^?Wr?W#`njDL$&7$8!HZRiA{T8M+6ilJskI-y)oO*LQ
z;sI2=luzUX+c}u+*^=+O7<qk*?5A(*E`a>&5+E}%Ol{&{%LfhLzZuRGMtAN6+&?V=
z_x=EGj_|(aP%pm#@3Gn6c<nt6J(J0^xN_U;%B?osw}R<=zH|ui2af=An16i)^4b2M
z!`y>Dm$)PC(PD&Cu5Z2=G9Y=koOw@@_Qxl>Aeo9#)$~~F#RS61!UBPL)$u$`PC=iz
zZbyhp_y8(Si&`}&m$kB7J2T{pX2@Etre4UWTCG^Eek+%%XUf+%<GOY=1U1u(7RiLI
z3H~l*WypnbdC+1}iq9s^Qf#U7Wah@Pg$1b}0?G=arY(dk@AkN&mUF-qS^Y*)&zW46
zm16yA#YkodFP39o;OZR_9xZG=%J(Q+e$I=!o~r8vuH@@Yz7hE8C*QNWv0U<HOaDmr
zZLolmY~)!kO!11%!1)3G<3W7m;QA}W39gYL><)$?xa%W<ah;+bXHkZM08?a`E^%fd
zK!!~b)CrNydh6a-P*8RVHmM3@=je42nfc3CA~UC=%vPG4(<DW-Tq!OJ101;{+UyA1
z>qNv5tN`EN<3;2KOWLgfT4#`LcOz-;MshLHq!bOMGOuJxKW)xU3T~>cV%mLGgsmDt
z8jSMdoxW<Ak_VIDrrqJiTDX$mw2f2^U#BE?*(%1)B^4BKmgQ*jzd(O`3kcr1Psldo
zOmI$W-S6!lKI9zciQX|R9srC&@<&2VPLC<!@;tq>hqVUU&)Y!T2HFY(ElK6QqG7gO
z&$eN<>h)~4f?da}zhw+13@kIScZta8o~T=_pf(N1%D7#31NKiC;G40%)08h3XN76+
z%K0p6X5NT-kbgiQ>vQ7s-UQYss-1)^oye{jTAa@hV=Sk<3jXV@-ZkMXz%D(azrRDv
Udokb5@=l@;(!r@a+zFQd4{<kuO#lD@
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-003.js
@@ -0,0 +1,82 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-003.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try with no catch, and a finally.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-003";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+var BUGNUMBER="http://scopus.mcom.com/bugsplat/show_bug.cgi?id=313585";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+// Tests start here.
+
+TrySomething( "x = \"hi\"", false );
+TrySomething( "throw \"boo\"", true );
+TrySomething( "throw 3", true );
+
+test();
+
+/**
+ *  This function contains a try block with no catch block,
+ *  but it does have a finally block.  Try to evaluate expressions
+ *  that do and do not throw exceptions.
+ */
+
+function TrySomething( expression, throwing ) {
+  innerFinally = "FAIL: DID NOT HIT INNER FINALLY BLOCK";
+  if (throwing) {
+    outerCatch = "FAILED: NO EXCEPTION CAUGHT";
+  } else {
+    outerCatch = "PASS";
+  }
+  outerFinally = "FAIL: DID NOT HIT OUTER FINALLY BLOCK";
+
+  try {
+    try {
+      eval( expression );
+    } finally {
+      innerFinally = "PASS";
+    }
+  } catch ( e  ) {
+    if (throwing) {
+      outerCatch = "PASS";
+    } else {
+      outerCatch = "FAIL: HIT OUTER CATCH BLOCK";
+    }
+  } finally {
+    outerFinally = "PASS";
+  }
+
+
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" )",
+    "PASS",
+    innerFinally );
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" )",
+    "PASS",
+    outerCatch );
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" )",
+    "PASS",
+    outerFinally );
+
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..aad744afd13e0a8bcfbad0dc7540f88c43dc60af
GIT binary patch
literal 7554
zc%0=~O>fgc5OqI*0tet)aj<$SLZubZ3o?;fH>j!7P?4zOhPL)LHg#-ky{65LzX2zX
zaOI~Uae*U$gxPfxJIQ+EICe@)53RiRzS)`gW_EU~(a?8rMYAw6D@Vj@6Vy=_6-7Dm
z%&xLqYaBFRG!4(kinhtW(HuLVmG7&Hau>eRlGBe7vC)Zx_psq0f~f7e9LkKJ1Le$i
z&0(zH@X5j?ERS#~+f;1VrUQWFl$wcMYM<Jea5xur;zb9P*lxRW3&xvOy;XbN&^CKx
z+GY<ViPhxq>Ndp$IUMc-azY^<CEbm!t>@!-gTLI%{*)z-MdaplM)KEuBY9kX(<~~I
zH{nH9Kiqlu^j`?%pZNvy28_3At$MYPFg{>t7FI!&YCsXi9auo25v^YM1P1{GuGz=u
z%fW+jVI*|qIPp|I!+;@-^TzEqjDv@Sws0WxurwDIV;2x<hYTgi>&$%^KPN!$K8#}0
z^6FlD+$T=f=LLZ@cWoDuZenqaN+{ZqN*#Pk6=Jt7I%<~zJ&p~P40#C!n!Qld)lpoo
zj%3u;lHVQX7wNV<9Z|zd5#AciUK|zP6#L{MqSlk6nw-`>kB<20oxH~eReZv<N4t4l
zT<)zvZaxDLTa(C(>o0(>N`3)w0~YblF<IY!R7h&CzzZFPP=eHL0Ug(th95J~peATo
z3%m|i335%Zqv8t#`>Y#UD~6nhF*!mrmq^&`tp}?mbn33-Rp=Vb^<*o$9QBVrJa>Zh
zBUg@1w8wIah7LsiZ3bk{cPe*7?StbPXE9BaPm~*?zJ_}-Om;uXguyAHX_;b&>j{45
zEha6>;+<y5|3q}zPajyO%RF=Dr{zo~@sp?|X6)xUn=?~(Gb%&Ssg#o)-&O=3LR>~L
z7_4GJt#x3n!UUPt@J~@%<}AcJ@T%>yuk&T-%iPBbMh_Sa9RWRa+S^%rU=Ul1gc~_4
zvP8luJ8H)A!3;*v`zYA62}rvNhWhpwr1gO(tL~sMz?@)S6bh>eTxxP6r`Gwi|4Qfi
zgFJ^#C{|t_(`bjmW&@TO3{$q+Pnnbz%jI7H&kcNDQn6rX8+Nayqd>p`ckCnBTh381
zGT*RVjXR|&u9sQ$U7x)>lU3aO2PUQ-RdDtyp&u!*rljRqiCfD|Kob_WG{8GXWVrG~
z!#eV5I5H+Q9p&g3Sm3=xg&MzvO1V^$<!bs}q_lX*&W00uZP~wkBzlwRM}CK&ddwD|
gkJ9rp+wFR!3I6*ne7Te$Oh$k-%)+GMCdNeh7ff)1C;$Ke
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-004.js
@@ -0,0 +1,54 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-004.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try with one catch block but no finally.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-004";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+TryToCatch( "Math.PI", Math.PI );
+TryToCatch( "Thrower(5)",   "Caught 5" );
+TryToCatch( "Thrower(\"some random exception\")", "Caught some random exception" );
+
+test();
+
+function Thrower( v ) {
+  throw "Caught " + v;
+}
+
+/**
+ *  Evaluate a string.  Catch any exceptions thrown.  If no exception is
+ *  expected, verify the result of the evaluation.  If an exception is
+ *  expected, verify that we got the right exception.
+ */
+
+function TryToCatch( value, expect ) {
+  try {
+    result = eval( value );
+  } catch ( e ) {
+    result = e;
+  }
+
+  new TestCase(
+    SECTION,
+    "eval( " + value +" )",
+    expect,
+    result );
+}
+
+
new file mode 100644
index 0000000000000000000000000000000000000000..e1320df37a93baf488a0f25bdb68dc66499e5de3
GIT binary patch
literal 8284
zc%0=~PjAyO6!-ox2I4TT2&Ayn5E`36yP#5O%Zk>iE7Mx-zy*1U*M_A@aU8bZ_z+y+
z6Yv%I8c1B=$QR++X_vHh+{R5iHg;GQJN`Yt_kQn>odOHnE-4n81lz?!>NhBEp?QSR
ziEnq%PPw{Yds(ymHbI3A@lL^Y0#<zc2%&rMRw23k7*hwIxMY`DE~c0{z9*pU_&Gpl
zj%W8{{f1ZOMq&9>Ksh#YJcnHZB$t$J;xXscAymM5xD{_YVASy%#oI7mE1C83n`&XB
zJ671}f+VqOVy@yaLa{60K4LeN;xXD;-`w09#=HC#TK1MK2rQ}=uW89&v$f=L>8O^M
zC6{2LWFBn4d;TvN^3UuHc?-tt<$9%*iy7~8v?eitlt#cXBQ4lKt`;p_v?&P!FkG#N
zFSbK2$EB7qvFpZ5#R?0C2+_6M9T*1<DXWt}rQy_6n2%M!v=MTYKv$U+7(b`r+&vg2
zwC-2@#;{JpSzqTQ)ZB4AOgo9qaaTgpj#%oFQ--M1XtF`M9O!8*Xv&aRkf8a5k<O0%
zVs#**t{468a=mD$?wgod%@pFT!s_`!;$^6l2beXV9hTK@-Sydkj{eDeVlmXFoO`UJ
ztKwpJ2Ws(S0P#J^w7B^M_=fZeAOtk2e@^Jy){|U9dl@E796|~*WX;!&b;FMd++ZZ!
zup0O+Vo>bae#;;i7HRWtXf+?_JdB+q6?26So4oblxrAlzI$npK#Z^zXqKi@g*oNm;
zkbdOSD5702r*LRr*58hSEc~77yT10p^{unmO`}hg>$1K^XwmQNUXV$RGlixlLxt-S
ze&Q07W@UM$>C-=9UH;btR`F72&Fr|$QA=R)>qF$nG9n)l7E&(*lc!i^xJk*ZO`4Is
z94va?!@;gYp#|hD=*gTLo6!>i&5q_{RsJus%0K3@MI^0>Gt*L3ZNZ4siJi~O5)HvF
z0~j0@HKC<&VXx9UkX7(cS<q_s8{06|@c7$$h3J*`>6yC+1ct7}Ju^%$ihNzwOfCuv
zrzMzttE7la)5T#xgfB(>=NA5gRcfDQru2*diqiT<o<Um`7oiGaQ86KQ6}A}kyX-+P
zI#PD5W_k{Ou9EX9<pq9P=Qp(`4kSJhihTlkiyFCM>^sBjaZ8%vg9-2A)+Rr1sFJJx
z6#!?CA-PSMLhF%ZPSI;u^FC{h5VvrdPmVF|&nMBaiQ91A=pU2zzft6U2TQFa^3HG(
zPrXG=xfNA~X8L8iGFPZBH%4^PiKRo|EEV)p&_(?bD)pX7epE^i!|v~h&qEPe#QzVd
Vn?px=Qso(?{iVSpWDlLC{sOTKX9@rS
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-005.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-005.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try with one catch block but no finally.  Same
+ *  as try-004, but the eval statement is called from a function, not
+ *  directly from within the try block.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-005";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+TryToCatch( "Math.PI", Math.PI );
+TryToCatch( "Thrower(5)",   "Caught 5" );
+TryToCatch( "Thrower(\"some random exception\")", "Caught some random exception" );
+
+test();
+
+function Thrower( v ) {
+  throw "Caught " + v;
+}
+function Eval( v ) {
+  return eval( v );
+}
+
+/**
+ *  Evaluate a string.  Catch any exceptions thrown.  If no exception is
+ *  expected, verify the result of the evaluation.  If an exception is
+ *  expected, verify that we got the right exception.
+ */
+
+function TryToCatch( value, expect ) {
+  try {
+    result = Eval( value );
+  } catch ( e ) {
+    result = e;
+  }
+
+  new TestCase(
+    SECTION,
+    "eval( " + value +" )",
+    expect,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..237641e6393ba1f5ef525bd576e91490e294d554
GIT binary patch
literal 12542
zc%1E8PjA~c6jz)qT~KV;fSq>oamCuE*nj~G+yIU1buLn;h=pvY6^z7KY-rJ=sHHya
zu&=Stu@AEIcHGYW3?=D*vO-dSOeuDo9AbzPA0Hoo@4eq6*<$es!^2hpfq(dtk^u!n
zr{OrxIq}ENQMdQJf6({H2s*8O`ArL>h#fwD;5eV~uUg6OXMiGbj^R`2VL$;xB$T53
z#dG9bqR?NK^)LTqD@zukQWWwX6e2bkknGa+VaU)0f>eqN!Em8;#3%{}hj(~;zteWR
zC%xAGw5_#26_S+Im+y`dgA`yX?l*vAr94K*4<0@G?z+7Bubkzq%eIt7&BK?p<UjRV
z@~m^(w`Iv){-V=<@#NJv>tM+L>NDg=yxr}(#~mwX{9H&2V3UKg88N`%kSk!-qMbJ*
z3ZsY{u0NA6)q(SNr6t+`<3(55!{bd5mbKd+Z|5_l%!QF@hLugBv6up&gIGw3%1-7p
z-hM^-;{M26A$7?y8C;)}T&zF06wo|EA)w=ga$+fY(4L?a!wcq6GzeIFTp{S|#XuE{
zynz5MUNrUSu;;5Ok1`GPLmYY{@FZi>_9T#KlWsvpKNWc?pyaCa#)Bg<g4vo!n0S{9
zXUNX~e>4;*bj66vE;aKE<wV{a)C%|Q{M_!m6u5oWcTc;$XI9`V7UCc$ev3uer-Y?q
z899FqJ?4z4Fc%vud$|FM65Yh#?6Z<Cb!Rs9lZ)&iu5q>{03;BrQcsEg5`9V%i?{U=
zi^@PLIL17#G-a3x53F*G8Y1Lf(N3xgkM~tc`V_L5h6Uo|hvd;W=gI5G289J(I{pc<
zKtlq5SK+G%uPRb#Z=%qN#FIuPQN?ekRmvGr1g{Dp#>DJ~RS+LSFa)7i!!0eb%jS8T
z2rRmO!1{XyVC@KC5e!zwRk3uj3@T+Hx*;^JUUv(Vvce^|Dx>dAGWv)=4<l=dJrAV*
zS3xRg{U>p@GM>cf7jXuTa?Td&QK?F+MY+uPJZkKuja3qjPxz}rD84RNqCHlZXzN0K
z4EU%{qQzkGo-a?9vs5becA2ae5cTkrk9qqnb!l?RFRF^ZKqXCORmjU|6g|{=x|$u_
zBC1Ff^#bT!T621B{$8WPwm#04U00l_yd;O@-8p8eAve3cU~HuI;!{b<5MrGGgg)lF
zDz~zW4jidA(1ih)g-rcL$||`yCKIkSg`uieT(1C>(>#2@7-yKrdLfk~C|L|9mg7+y
zFfV9h5JylhlME=<;)w)|Wwd_#L7}z0k!wg`V&uv5F=UhM1pOXYF<M@-FK0<ZqjBZ5
zs9ItvE-th|q*wzvF;`W0+dM+wjN{jwRC;egLB3KPn6A!BEoR#4>iz=9%FTN@kCjR2
zBf%X3POYoh1#|%BV};zO9FK$%{594cW^IDiOKcF-aYk3K5el8(ZC*UNz0R=_z*@0B
zH}NDLZ>YCY&ls*T=SXLOE_0+wa~q6UtmaM6dFL+@yvdAb<5ri6QzTMV>QbDM<e1NC
zOgjpRch{~S>x(LLY}f7QWS#pN+`|CDgf5D^tJB}>Cv4MS)8V$BH<-LH0T9FW(+N`L
W|G)T`yR|{f2q67ZE1h5I^zQ%$)8sV(
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-006.js
@@ -0,0 +1,87 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-006.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  Throw an exception from within a With block in a try block.  Verify
+ *  that any expected exceptions are caught.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-006";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+/**
+ *  This is the "check" function for test objects that will
+ *  throw an exception.
+ */
+function throwException() {
+  throw EXCEPTION_STRING +": " + this.valueOf();
+}
+var EXCEPTION_STRING = "Exception thrown:";
+
+/**
+ *  This is the "check" function for test objects that do not
+ *  throw an exception
+ */
+function noException() {
+  return this.valueOf();
+}
+
+/**
+ *  Add test cases here
+ */
+TryWith( new TryObject( "hello", throwException, true ));
+TryWith( new TryObject( "hola",  noException, false ));
+
+/**
+ *  Run the test.
+ */
+
+test();
+
+/**
+ *  This is the object that will be the "this" in a with block.
+ */
+function TryObject( value, fun, exception ) {
+  this.value = value;
+  this.exception = exception;
+
+  this.valueOf = new Function ( "return this.value" );
+  this.check = fun;
+}
+
+/**
+ *  This function has the try block that has a with block within it.
+ *  Test cases are added in this function.  Within the with block, the
+ *  object's "check" function is called.  If the test object's exception
+ *  property is true, we expect the result to be the exception value.
+ *  If exception is false, then we expect the result to be the value of
+ *  the object.
+ */
+function TryWith( object ) {
+  try {
+    with ( object ) {
+      result = check();
+    }
+  } catch ( e ) {
+    result = e;
+  }
+
+  new TestCase(
+    SECTION,
+    "TryWith( " + object.value +" )",
+    (object.exception ? EXCEPTION_STRING +": " + object.valueOf() : object.valueOf()),
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..1a7d5b74195dc3106bc2097b90c53930f6888e8c
GIT binary patch
literal 13660
zc%1E9&2QT_6jwf$wi`CA*sYiPxMAzkZHEGZ8z6Dr%|qrCu@~$z6pTb$To_TMs3kt^
zu>WG%U$ygg-Ert?*m)#n$C6A@AEq2RZ7zZ-@$vET_ul(Gl4-Nh$8f*xLg4Jbpkz$J
zg|%r})){do)?u&z?O<<U6CYabUHMHLqk!$d{=%}}=U=ts-A@5U;0(iO(8hoQhKMIc
zIrHCvb&fnIDeEu($wr<mLZv9=Sja={T0p!@&w(C8BLt}w=Yfm4(gCB$8}HxY?SpP-
z*gNjGcc*Rb-Kmhctbu%Ygczg%OL0E~94h58I(hW?@smY)*H1aiS(hy-i|U83XvsfU
zYsu5@$-tB)cle8L=evWKUpB#z|E$iC@9_3vZ+O%-V#WtTnhRSTl&ydP1~0e*d#%=p
z&_~EKYTE9VPhk*n3l3%jNxk58yV4{bfbqPm>|ygJ2&)?K9&hJUrECZTrkP=FQ`nqO
z0nl+Mqy$wb^C54)q<odX;jNGk$q^YZ&PguT?;8q?9wHCWNlZDhlstMzaK&)MEQ-c1
zOOGoAeL5egW|21#sl|&{Hag5XZOWr`13eEtTSTCEaN3F@N@n&gsptnHLAjJ%cCT#c
zixKqJJjBF4pF2Z75%_gefx@8}G3in>&rnX})}U6nZ}*2z_l3ai%faxZ*Z<lGe8ocS
z6~u432>Xn%R4gNBKS7&WJ{9I-6J@WVi-K4;@i+UdqD$SGP5pS3AH*}9EdhWSVpZxX
z(O;oYMTYTubqu36P~I1UXK|$^!;H6Qlw+(QLcS;3NnPRbGgXp4fh?q6iTL;?dGyVB
za`V{WT|qPG<T;@|1u&(heo+Ce4=-!d=w77Ju>@3xN}`_MN~=^bqzGc=LX3&t59?q)
zgkT7~Obs_OnO#27TT5io<{|5kC6Ki(kVP<98d&8LMiN!ZP;^6ZTE6lYCS|3IZdFd-
zj&i!se_sT~QhO0d{jGvj!3t2~Y-v1+(MMqpjtb5eW}{M-Sj)1RhdgX-r;Sw+jR*YI
z*b`q@E7G2-i?pVY9}Pb0lV~tl-16ngbCz1AzFnp=n73VMpBr1E%xL>|acZgWRGB}e
zeW7$;I#>Ox+F&VNc{jz@C4&EoE9eFl@T+5%1<I#m75)l{-nqtDJsj@fz9qj(0+vov
zGK5&m1)hVsu0|Zv-ccAtT5v8!tX3>0np!T=?k`QSbt|)!Wq#XML1mN_Aqp+aCSCwv
zg{IF@g#4!&+2(tlNZvX^SBoJuW-&JLA(<zLjika9*ypfHh&8xg)d8dnMg_Me?nZpX
zF3v+s!|OlQMozORO~KXV1BN(fHOuXC+%f<fOvW|lb1|9d_bH%JvW8Bd&pJo~_rWZM
zW*9-eQ<kG}y@Mx_$ZWTRK^Q>kB9em`&1pHCPo*QpS8r6LsBYwy`p6MvC1DEleZ*Xm
zTi=O*B-xzxbU>h3139rDcN80vCT|z5$IX<2T;ttX)$+08GKtAbr8*-L5Ndr=@Tv>(
z93-d{z$t@Dx(qNM%j00qBhJ;z{MAx`3R{-zFs+gs<?G>)>vC1>mH=eQJz*VTXgbMk
z46okI9z1I90H1|wg+Aw<KZ+@&_YGYRk6|WtKUYgCwA*_6)8v>o3;z$1eTt!v=~-tL
z(`V)l1da1)pdQmjagTobTs-TaK6UqOvOQRLgb)LP<|=%I#^?@|HD!UO;G+eJGFm8I
F=6|W#MN0qx
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-007.js
@@ -0,0 +1,92 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-007.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a for-in statement within a try block.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-007";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement:  for-in";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+/**
+ *  This is the "check" function for test objects that will
+ *  throw an exception.
+ */
+function throwException() {
+  throw EXCEPTION_STRING +": " + this.valueOf();
+}
+var EXCEPTION_STRING = "Exception thrown:";
+
+/**
+ *  This is the "check" function for test objects that do not
+ *  throw an exception
+ */
+function noException() {
+  return this.valueOf();
+}
+
+/**
+ *  Add test cases here
+ */
+TryForIn( new TryObject( "hello", throwException, true ));
+TryForIn( new TryObject( "hola",  noException, false ));
+
+/**
+ *  Run the test.
+ */
+
+test();
+
+/**
+ *  This is the object that will be the "this" in a with block.
+ *  The check function is either throwException() or noException().
+ *  See above.
+ *
+ */
+function TryObject( value, fun, exception ) {
+  this.value = value;
+  this.exception = exception;
+
+  this.check = fun;
+  this.valueOf = function () { return this.value; }
+}
+
+/**
+ *  This function has a for-in statement within a try block.  Test cases
+ *  are added after the try-catch-finally statement.  Within the for-in
+ *  block, call a function that can throw an exception.  Verify that any
+ *  exceptions are properly caught.
+ */
+
+function TryForIn( object ) {
+  try {
+    for ( p in object ) {
+      if ( typeof object[p] == "function" ) {
+	result = object[p]();
+      }
+    }
+  } catch ( e ) {
+    result = e;
+  }
+
+  new TestCase(
+    SECTION,
+    "TryForIn( " + object+ " )",
+    (object.exception ? EXCEPTION_STRING +": " + object.value : object.value),
+    result );
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..0c3174f12fef9a2fc9ae0c9f8c4f00fed8bb614f
GIT binary patch
literal 11748
zc%1E8L66%+6rL<gyNiSXAugPZIJAJ;tvFSyu<AA&N~+Yr#?1+7nYAbObiJN1o^&@-
z4~Pp#?iJ#H^va(=f)hUiByP-%lh{edW5==6q}x4g<nhd#H{bi-oA+j1XM?_v4(c9)
z&cQd7xD=j)EdanNafaZ2%Y4|`@7Sb|Kz&d4srxu&2hC3bc!&3@Cx>?-#qiWeN67Xe
zg$$EGigM!T5S-z_nU?hz?^4T>MW_^o9e@MOCIXT}S`G>r?qNiwxB#BVN{5W%z&*Im
z+dIvM)%x13?~U5(dm|x9SsnSVjTxfQm*Sp6f1s4d=<wE^J9p>hO@8Gn$3xzbvZ#Lg
zf=K?kS|q#8<4##fUgIyCjYo$kpRWUu|E&(lH+j3&vf9m3V7wuudC1_TG(rX$I_C=P
z%SRj-(6IS>86DVM`BHIiUiK*pLk?$WJgZa^P1=?CG@$RtL*)pYHz8CM&0XHk*G-v)
zLZ(?^WlPwKmjJ0d5K_XTi+Pu~Ur=uHuXrn>7HJcAeofL?&ua?8-p2u?!-R6elsuG2
z-1Sk90g7FZ&CV+XeHKqtvB;MYw#5r0ogL+Q@Qg?4Ci-#^*diPyBh_{kUi$p`JWSt_
z3!vEw7;=%qsimU7@*Z2WY|4p*1YB>WoPLZhZPXVyC~%GNoMNU=?6cT&vs0LF-&QQr
zqQe;(LM-rL;P_l!72*p|{9sGrs|BOaA%EotqIWT${6g)MM}*D9G;;a`*$nil5X^>3
zWh@VeiDBYz+-(WhN+Fa=Vui8zEg{Q8_E}f0j<l?)N*k73raE%y93jCwl?l|qG23hS
za1bKN9vN{;3pkR;`jD`&6Mg^MiB{u8897<8MV3RF98z{ffkvXVAUhqb$h(qbgrd=N
z8?k7wM~=xg52yM4;W(6}z@ZNdB{+qNE-DJ8!X_d;Z@@4ukp9LwyImlV=1vqhBQ?&M
z&hEwu-AzSWTWz?=siPo}@k!1IL;?qk#1Hy2a57FC0DV4Jz^M#GHH&^22u3eaFKY74
zS0J2k2Get_`vbvpvwPTX9i6mHtNEaLe8Qg|mve9;?73fVO_*V%4d+<e4pjb@nRiUV
zv%dFKM<>;s^;JvZJ-H3=SJ*LR2ct)*@dQ4Fw|yA6w?|t<WoLk^JHdF##n@7X%g%L`
zTD@4rWS>jyZt<3<Laa?(Y|rhLIRdiK_Sv&?gS?RWQA$Nrv_7w_$Pn~=1esS#($w>b
z&ZAazLa?zXEJ70;noyCsulR6fDgXXkwVhZVB^T4>*BCGLnd0lDZM~DWveKMI+4Zx^
z362pP&|m?2m6`z-!C(!t#kD&Y$-b891I3Mn$!De5PW2TD2-vx&296LP!C*XCiCuP#
z+(0OQQbCzRvIv^WElPvxoJnf0IJl=dc$!tDURh@TSdf`JQgTm}r^AKld3B)uLj~<)
zU0TFjd-!sGGfm`1w<eR-7K+RN-u&*D-~R#k^c&k1k0iS_g~ist8WbFAo0>1#*3HJH
ze}}a_I>cBylNRQUp1Y7v-<L(r4cO<|uksG<V?OwO5Z|HYC`PowR7cx1%coK+Euqle
zWF>O*nGcS%S8EB8bDwNxoT%xqNzxBL(rfyJM8$`Csq{%KaQ;3wy=EExW_(E(QBeMW
Z!FygS#F<nR>rAONScXwl2PVo0@jsQK)8_yH
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-008.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-008.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try block in a constructor.
+ *
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-008";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement: try in a constructor";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+function Integer( value, exception ) {
+  try {
+    this.value = checkValue( value );
+  } catch ( e ) {
+    this.value = e.toString();
+  }
+
+  new TestCase(
+    SECTION,
+    "Integer( " + value +" )",
+    (exception ? INVALID_INTEGER_VALUE +": " + value : this.value),
+    this.value );
+}
+
+var INVALID_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor";
+
+function checkValue( value ) {
+  if ( Math.floor(value) != value || isNaN(value) ) {
+    throw ( INVALID_INTEGER_VALUE +": " + value );
+  } else {
+    return value;
+  }
+}
+
+// add test cases
+
+new Integer( 3, false );
+new Integer( NaN, true );
+new Integer( 0, false );
+new Integer( Infinity, false );
+new Integer( -2.12, true );
+new Integer( Math.LN2, true );
+
+
+test();
new file mode 100644
index 0000000000000000000000000000000000000000..de1e54faa0038e1717d16bff228cc06b1781a049
GIT binary patch
literal 12910
zc%1E8PjA~c6j%OqS-Y($TJ*A$Zf!TLDRx`n253}o^N=}3Y-GCyw8UCm8PcVwr9NyQ
zq}O8DSLwCauHT>?cG_XLk(B?)4n<2cWjk$hh#^XRB;WhJ_kNFLjmJF<cWWU8!R{kQ
zy9}H->yG1eXwY}|8qFVCJ1w8~pi|pc-_$UQ`0ks#j&oIfRZDk20t|r;h7X~S0RtRS
zqC^Gb=g4`2NH8huFY(FRELoH(Q7CW_L3|`2-K7yg!qH;{nG#39$#~KcXNYunw?uoZ
z?zI~S&D!>$t+qW7l9ts{@AeUg3}7YhSAb)!JkI)G-MjbAS$U&hwaQ_a4JC`2hcBtg
z*NfHUQT?!GOOqdo7j^H)2ghHpf+GK0oFXrY_I9JaU$>&hTT)sGT>(lr;()^wF@YWR
zh=>c^(-2|kb};pySk-g=S&zXe66$OXM^%%Aqjs%+Jb>}ItLov4CJ4)F^Rj3c>t?(S
zBW_q>WlLBeF9EP_ETu$c7jsRtpE6<c??o$QZMsjpXV;{R^?XeO*gZr5>!&6sO({Zo
zf?W(BbBCdB$fw7Zg1#INRI$h<gl+l4%|?ek51#TU(?BI7)jx}iR1%K$pS}7cX@}!h
z`>@gc&Wbs%OTo{4*prKNdC2G~*)iB>ae3h1#cB73Xm1`ISEAsXQZ{vAwK`tC0D47w
zChIrIPcrRggwEe|p|c53E1J{gWKIX2U!bqaP$NdXF+HW6wwBQ-gcwt^v2x7xs^Ss?
zC?nrAi`=6WLqIZTxRx0XXGh0#imhn%u=Q$AYynI|FgLb7Q4y&eu;kxR+_DihKV#jL
zC1hc;`fW^nskn4L+f0&BPduMQ+4Xw`n0l+jR8HokfHpUtK9gFMv1+K8xh2YiR9HF2
zI?E*Rn!u<msm4f}y@T@irbcHaLHR(u>Js^NIc9!e&&(fEJ{72_LV?p`QZVmpC({m5
zl<KDQR(mk1PNKz_@t&J!Yv_AWLlCR;=L<tw4QbVhG)2u+bkwGG9UCaoN0%-)l5}Y+
zPZnm&MH9vg9hX!iPGWq>BDD)y&i+mDor6_znF5L8!+?1);$9Tvf9f!P2zkuN%7eVr
z2F?Y}ZQ;C{>L*u~f8c0Pn=^URjJnE3iShE<%9j{(QjCdhl^A2=7J&g!%DR)Pl{I;y
zUu}rVz1KCD1%Kbt<$Ttkk|D)9As_)3delz0=)mtb>_Mm4mPxsYIH$K&QSqFg`oy9W
zzW1qju|O-6mUUKP5Tx8+8y)Rra}RJo^e~7cs7$ZYv9)ZhT*NZv><FRjA54-gujJLh
zSGtd!X!5)dc|rwY&=f0*CN2E=ke+2MP=8inVd54ee|2X@A4`TSxQ+*+EPjgwx;9Jj
z+uYYS&c{WSoQGu6IJY$?>o$u6jmVs{`&7KRJK!$2@3?pJ3HK-okSwzRo>Hlz$pDK{
ziGZ`?Qxd_aaaLu19&&EcUD6B6vn<N9d@C$!V{>IqP~G9`lDC^?47Wbw9!G#pa*w3h
z13ez=`N$Wd^Ys)TF@q?tzt7sAHRa@#-KQ=x8c9NqlaCqOXoKI3I|ivKpSfyoK)nHD
xsqr+oga^N8Z)D6qlr(J&WP4Q#0ET<M2@=)+Kg5@ps)CLQ8b$zUy;<wU{{!o;UT6RS
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-009.js
@@ -0,0 +1,66 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-009.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try block within a while block.  Verify that an exception
+ *  breaks out of the while.  I don't really know why this is an interesting
+ *  test case but Mike Shaver had two of these so what the hey.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-009";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement: try in a while block";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var EXCEPTION_STRING = "Exception thrown: ";
+var NO_EXCEPTION_STRING = "No exception thrown: ";
+
+
+TryInWhile( new TryObject( "hello", ThrowException, true ) );
+TryInWhile( new TryObject( "aloha", NoException, false ));
+
+test();
+
+function TryObject( value, throwFunction, result ) {
+  this.value = value;
+  this.thrower = throwFunction;
+  this.result = result;
+}
+function ThrowException() {
+  throw EXCEPTION_STRING + this.value;
+}
+function NoException() {
+  return NO_EXCEPTION_STRING + this.value;
+}
+function TryInWhile( object ) {
+  result = null;
+  while ( true ) {
+    try {
+      object.thrower();
+      result = NO_EXCEPTION_STRING + object.value;
+      break;
+    } catch ( e ) {
+      result = e;
+      break;
+    }
+  }
+
+  new TestCase(
+    SECTION,
+    "( "+ object  +".thrower() )",
+    (object.result
+     ? EXCEPTION_STRING + object.value :
+     NO_EXCEPTION_STRING + object.value),
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..182f449ab696c139a86b558f5be543e3d99f328a
GIT binary patch
literal 15697
zc%1E9O>f&a7-pTOT`^!N)?tTY2OV|`hGYYFSm0(!T(|My*+nb_y9JEI*jyFKps1zZ
zX}@8|U58@*P2FYp0sFY@Jd%oS*`{boCS4_w4~a#KFW--c4`05N>NFa9Xs<p%(A|4M
zf<A#4pauXq3)~SnY<0fr?e?5th(LW?+*9{(NcY}+1;9ggS3TMN1QHC-JoFSf9wd<B
zz!#$2>2(NRV&9#W^*g)e&N5j65u&gQu#f3PK(b5AMLxyn7!e`PhZj?&LrSpU-@DJ+
zd(DR3>UQeeS8es}D<Mf)J@H!`Q$(OA#QgxhNGgw#(PulK?<~rj{1;Y^yKD$qL_K^#
zPrhBRCr_HkJzbu>$9`xwzCAeoq707wZ+(v3WbJm#Za1~K@l!5sfGh?|E2NO33#P!X
zxWv8%`Ij><a9(P4a`V-YpfF^<?2U&M8lp+N)Hx04dDE_<hr^l>D(cDyteqK6sEtCZ
zu+W$ZwW$e^^dl}MENTpA*Gt0UeZ*Q3v4eKdU$jXC>z6wcv>sv~l2JlA9!kdJF>pO}
zP65IF0i7S03)-3vWLV@o;B5Ybm5vU5(|2x0sRk-YQ-80IrZ^m%-!+;qcpOf9_HnE8
zTuV4U<bq#0XvmGU=zs*5{;ncEH*yhp#M(REQzH)kn9B|<wBTdCPA(sV^5vkzRs!VO
zWRyakf5@n_gDwrK#FXiteUBW;3MEwH1a)^_rHrxuD30}HK82Pof~^i+2F2eOf+up<
zE3d<xPOy_|J>Z|8n)|7YyPSZpCwl)ZA9`CWp!XAzyfVB_0nD@3Zp8XoQZM8*;Dhl1
zWd<@hs(^emf!y+aO+eO7$9X44Hb#DS`+)pc`GDNk59Gsu4mgg(GBUCeESG_lS1*uo
z7|`6ck!O+ba5pBmPj}-z&yZbTgz2?n191LQ2Iq{F>7vjfSP#s2!ICmveWXj2eHmyG
z#qbh&vKYreovG;XTHq9u%j^C>-;;R1AiNLQPko=?U96<^L|#&Q8qhhm4FsORkZ{3t
zBvr;9;4smRf5x}1utqBZXIidCCc5FFQq5(9BC7!DU`T@^s{m<Pcg%@YEp3S<OlF`=
zt0H}5+0jOv9qCGo@@BNTSM^_IyB0CxEXK$C6{#Wb=5#3kxkOo}%;tEbkpbSf0_M4j
z8o4q4n+)T}h(^ROJ;)0k4^=qVg>!S8-DTyZE|7pW<JuXd?4osS19urBH_E*YTrtB)
zikhnssh}k5&cZu&2scbTfddB6cRi-vIinO0|H!^c2`6u8{(Yb?H2Dfp#Rz9bG#lKO
zl_dM;j@(*1$WzLo|9o9S$WwMpt%AIUjcx_`MaYAF(|Jk*QfJWcU=$+ZA(3ck%QHl*
zG$+$rvSj+U1LdJ{pd|ZnCF1KgqH(s0+zvA`oDJ3EaSE9NhvlbN6*_dF!!m-7iis+$
zEn;n_VxkHisp!}@%0wDGZSHxQ_gFiBIivwY2@wh7k7~u9FUb6w!gbg)6gs=U4u-A!
zoJ!7VYp!oD8Ll?r?-NL7`8#fIz#)y~oPNMMKT2@A`Zy+QIa^&JU3OfcnvjW_^xRuJ
zN`}aA5T|~GDWTKCTa(M?oMILzAehic@=n~<|HTKw6m>F1Jt4i+pTLFUZMGPo;_qvA
S=cXw{sW738ymXRFC-?t1n%xKh
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-010.js
@@ -0,0 +1,73 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-010.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This has a try block nested in the try block.  Verify that the
+ *  exception is caught by the right try block, and all finally blocks
+ *  are executed.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-010";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement: try in a tryblock";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var EXCEPTION_STRING = "Exception thrown: ";
+var NO_EXCEPTION_STRING = "No exception thrown:  ";
+
+
+NestedTry( new TryObject( "No Exceptions Thrown",  NoException, NoException, 43 ) );
+NestedTry( new TryObject( "Throw Exception in Outer Try", ThrowException, NoException, 48 ));
+NestedTry( new TryObject( "Throw Exception in Inner Try", NoException, ThrowException, 45 ));
+NestedTry( new TryObject( "Throw Exception in Both Trys", ThrowException, ThrowException, 48 ));
+
+test();
+
+function TryObject( description, tryOne, tryTwo, result ) {
+  this.description = description;
+  this.tryOne = tryOne;
+  this.tryTwo = tryTwo;
+  this.result = result;
+}
+function ThrowException() {
+  throw EXCEPTION_STRING + this.value;
+}
+function NoException() {
+  return NO_EXCEPTION_STRING + this.value;
+}
+function NestedTry( object ) {
+  result = 0;
+  try {
+    object.tryOne();
+    result += 1;
+    try {
+      object.tryTwo();
+      result += 2;
+    } catch ( e ) {
+      result +=4;
+    } finally {
+      result += 8;
+    }
+  } catch ( e ) {
+    result += 16;
+  } finally {
+    result += 32;
+  }
+
+  new TestCase(
+    SECTION,
+    object.description,
+    object.result,
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..7974cc3db15e2a835305ff4ec9d52af0da448127
GIT binary patch
literal 12422
zc%1E8-EQkd5O#kKJ^Tp4EeL6;K!DIufl7d)oQTA6PYgM3RXY`2p{=t?tU7jBZ|Dh+
z01^+t1>zO~&%rwYcf1I*>-;#$#?FtOG$p;L<K6Y_?94Yi-`JaH-HuBN`4++T!Ugr4
z6t|UqMNzK(dQU0o#^+|vwEYfI@+V?U-gN?2AdeK~MHrQjK7NI%gRfmuCbo+yW{&R(
zQT5S%pxiiKeO%VxFk~-DmQRH!r>;1j!-fK)kLY#cF{j}WD#UrXJyJSg)bW~yBWO1@
z)zZ(6{7Jtpf6^Bcm1T;)s>2Ayt`PSvcDqt}jP@RV@Zm?(@`hKj%E2QCLKcmmeo0II
zwO&hJX_sbNmV6F6H1%om>pNk{f7fTo2heWmR#i*IjIVNOErI})C}5b8HYjixEc(y-
zEc!gOmugRp+S8JDnHo4xPe1<jlXStUJ?l^s1Yj|9;3}a58MaGJpkmh@Ju05Cp^1=H
z3<hAK%pyS?STb9}{%8r9HoII(u<T-9f%aPp9<4wtp_X6uo6~C&&iZLjg2|HOVcLr*
z$6X2eFNCK{8cd;1v&AOo<$~THO_Z_74dgoBfo7v4y=`wIqP7cuFY$HJp6Ry<YeB;d
z==}i0_9vk?rz0Lh$20U89k-n0c+Zx6-zC_aDRJ+AVe21Pur=qntVR7>bbRgmJ9E!r
z?(bJH_tDVYr(0+0)${NnU;V-<_^j*MoOMMB*<r|{I&j|(W|wl=0N@uH0Ok<?!kEe9
z{Xd7ehXX80HSNP<3{$Re-;5BDTm=95hN2uzE_6vS6``x?@zKligvU$s1nyPG^9Vfy
zn&P^>RLH{H&~aAOt2tEG%g8vlP(`<pZW!7nI@66}wfYq*RnOHg7Q?#U7#a1TA1#Uv
z6$kmI%iFLEdU-HnS%}AjW+k-LWNdTm(87b%?}C+8%<NVwSb4pV6|I~Dq#*4}RlDG<
z6{*GAlZus$5LqloyukkkQ^tX7VUHGe9+i8Pr=N?WX=duW6f^l|H(z1=>^I-@nzh>I
z%Txc@?t9GxMrmQM?!poqd<D*T@JnXmg@fyzLrHLrsjxp(A?2xWWbdjho)yMXHDJ`z
zSq<o-jy-TzERr|0f4Tb-qPCSGlsbQze+RqUH5*?Cffdf6>ZT0oDNywpMOOmQ`E22R
z1qWq^5}RqDyQHSeSnjxUAS<da?gm8QS=3ail~e*9DHF}NWIN|JGv^)8+9c1~6+KxN
zJ-G-sQ;U{bnU|TRz?{<pg><W}5*EIZB6R~y8jR!OwL#*Uu@5G{v|AX8pWO>6W>PS0
zTfJtG+l=@U&tm*5sEPwgS{94{9p*b+f-}wiJ#IU`KrZm<oD<M@C7%w{CY{R%z?;y4
z-pe7bX%~Q4N1~!YjWEcNC^J)?adyb1UjAhF1!SXf`0FkX?_C_CsW=q54%wV{g;6-?
z5rlPzVG>2Wr$P9~E(q^k5FYn~a4HJ7Bpb%l<2AjSO79(4ykZAKc~_W@7hGYpiaV@3
z(I%Zb4CvoL!IvY2*^I-KabeuQN=|si?kf=w$`2Vt=A1ftoDda>Tq$7}PefP5T9T8L
n5tK7ohy2}H|C(^1F@%Ts|1*qy5b<4{cM^S&jh#Yur%?VMmG!n@
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/try-012.js
@@ -0,0 +1,95 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          try-012.js
+ *  ECMA Section:
+ *  Description:        The try statement
+ *
+ *  This test has a try with no catch, and a finally.  This is like try-003,
+ *  but throws from a finally block, not the try block.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "try-012";
+var VERSION = "ECMA_2";
+var TITLE   = "The try statement";
+var BUGNUMBER="336872";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+// Tests start here.
+
+TrySomething( "x = \"hi\"", true );
+TrySomething( "throw \"boo\"", true );
+TrySomething( "throw 3", true );
+
+test();
+
+/**
+ *  This function contains a try block with no catch block,
+ *  but it does have a finally block.  Try to evaluate expressions
+ *  that do and do not throw exceptions.
+ *
+ * The productioni TryStatement Block Finally is evaluated as follows:
+ * 1. Evaluate Block
+ * 2. Evaluate Finally
+ * 3. If Result(2).type is normal return result 1 (in the test case, result 1 has
+ *    the completion type throw)
+ * 4. return result 2 (does not get hit in this case)
+ *
+ */
+
+function TrySomething( expression, throwing ) {
+  innerFinally = "FAIL: DID NOT HIT INNER FINALLY BLOCK";
+  if (throwing) {
+    outerCatch = "FAILED: NO EXCEPTION CAUGHT";
+  } else {
+    outerCatch = "PASS";
+  }
+  outerFinally = "FAIL: DID NOT HIT OUTER FINALLY BLOCK";
+
+
+  // If the inner finally does not throw an exception, the result
+  // of the try block should be returned.  (Type of inner return
+  // value should be throw if finally executes correctly
+
+  try {
+    try {
+      throw 0;
+    } finally {
+      innerFinally = "PASS";
+      eval( expression );
+    }
+  } catch ( e  ) {
+    if (throwing) {
+      outerCatch = "PASS";
+    } else {
+      outerCatch = "FAIL: HIT OUTER CATCH BLOCK";
+    }
+  } finally {
+    outerFinally = "PASS";
+  }
+
+
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" ): evaluated inner finally block",
+    "PASS",
+    innerFinally );
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" ): evaluated outer catch block ",
+    "PASS",
+    outerCatch );
+  new TestCase(
+    SECTION,
+    "eval( " + expression +" ):  evaluated outer finally block",
+    "PASS",
+    outerFinally );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..537e8e34c2bb7819af0fbd313189daee41993b1d
GIT binary patch
literal 17042
zc%1E9-EP}96lT*OuPr+4rgy#YfL%1`7AL{33L}N%x<HE7ZDTLMu(cT@F$x=5GAOD|
zfW1huJxQOU*X<MZrsyM-r0hslNLiLB!;a|-8<xaR=Nz8z;~^<EX*hJzR`Uo!d+Ryz
z9Rden1psj1+oxcAr~9~fzi0VF1ey(TP1D5z-TL$ZfFIda&1CaENH9Eb(L-dpkU)xk
zPe9r6{{S3g&;B0kGrQ!{BrKl@C~O1lVR{CTY_ek`kK#j&h=B9pAT~On1bfa_jUDfG
z+Wnnp-DYEStl1cWB(Zwp+!IU@fv$ji1Ksc(-febb7df4iVI%ag<=g1D_4SRl*TH%8
zvtQx!7~rx%CfUXmjO)kQ#&xf=+tU@-YwSd){j{~eIS+ySGP^)tWykwF{U;qQVZ6id
zg5K7n6uny?Ldsfrzt#_3=mhmut-)n?ASeh}40{w(G+@38%h1_zX;9kGb>pU@g~bjb
zR5XOw+3|ovLi;G786H;V!b<D{Bu>atf}+lFjcwU>)PZdnAc?YwuKJVRwU*A&sM$D8
zxLu<R03rcotou7$U;lk0zRBnpaA+MV`2#!Ah;Gu*0?1FaW`)#cy-Bd8gaYF8^+BG-
zQAi^TWS6%Hfu|{EAQyd~PNMI-GJPuN^oakezZZ);uQYI{cE+8}>d13FCeNlG_He&i
zl0mj2sQKj2vl9GKd2I+}2xJIk2$YXNNMrT3;mn|V+i>*IhtGFXHdl`}pCsBXL81)D
zmx@Py4LnL!#JVZO=hBVVyv==NQ@_Qbj+p?Jqs`uO(MDs<Caqcxah8QRI#%7%*{GX2
zR|IqBZ@RPK)G>3OlH7S=2A!o_D7Zl5P5F%~F3fc5J*r2cXYq~7<Q^tR!ZxD{frCK3
zb6*vcf0i*h#|`+TgCK{+Jv*0kK-~a*(~s<Hf~&>CQyS~$$TVGeJZdiT9C}n5iZ2^r
z&qgPuk#4c$14ykS6zoGT2TGzQfwx`XI*v&=`LPpp2Z&^!^D*#d#2mf>&3U7s&Hv1k
z%V}q}u?I;~O!*Zo4$%_^E;^)uVCRU+)bU<?qs4>NO!6s;(E1uWLDpTh4C^L*$pzTe
zH5L6UR+NW6O%cXFc#SLyhJ^P$J=MyyVt1SEuyaMo46@W+A(;MLR`!$~hEkP|#y(%@
z`A0tOeP^`SXm0^~SJxEvQneMBQQnKAycu1-1j75D5ndy_1%-DQW~`M|HN!X3d(osf
zGmUac?<1eYnj1l4DpvA9IJDV`d@FDTUq*N@3u|?6b&M8urdn*~pY(chD!z#Y_K7bR
zl+oR0VcpH`d}Wl)v8GnVq)!6<he+$Rm*XB7E1GPZ;$HEAFS7%rc{1&4;y*PBl@_(I
z`uCbCtQHN@lz(~b<y>0*OKasfm9FG8lb?8*Q>h5Fj?uyl8`CRsVgF3sJdbsAt^`n2
z&a!R4#DJVtE2`RXGo$~k?u|-bWOtd}sizI<<49(@QON9Bm@voguc%Fk4!7ZuhH|q$
zFq?i#n3eUI!K4Z(;n}&@`V(`$)Em`_R_9(?S8`RodZ(UTW|ZBN#X5`D8R9hhRlEf~
cX}F$HbtIybdU7So7xDc|D(}?wt2Fn%0mGYo8UO$Q
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/unicode-001.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          RegExp/unicode-001.js
+ *  ECMA Section:       15.7.3.1
+ *  Description:        Based on ECMA 2 Draft 7 February 1999
+ *  Positive test cases for constructing a RegExp object
+ *  Author:             christine@netscape.com
+ *  Date:               19 February 1999
+ */
+var SECTION = "RegExp/unicode-001.js";
+var VERSION = "ECMA_2";
+var TITLE   = "new RegExp( pattern, flags )";
+
+startTest();
+
+// These examples come from 15.7.1, UnicodeEscapeSequence
+
+AddRegExpCases( /\u0041/, "/\\u0041/",   "A", "A", 1, 0, ["A"] );
+AddRegExpCases( /\u00412/, "/\\u00412/", "A2", "A2", 1, 0, ["A2"] );
+AddRegExpCases( /\u00412/, "/\\u00412/", "A2", "A2", 1, 0, ["A2"] );
+AddRegExpCases( /\u001g/, "/\\u001g/", "u001g", "u001g", 1, 0, ["u001g"] );
+
+AddRegExpCases( /A/,  "/A/",  "\u0041", "\\u0041",   1, 0, ["A"] );
+AddRegExpCases( /A/,  "/A/",  "\u00412", "\\u00412", 1, 0, ["A"] );
+AddRegExpCases( /A2/, "/A2/", "\u00412", "\\u00412", 1, 0, ["A2"]);
+AddRegExpCases( /A/,  "/A/",  "A2",      "A2",       1, 0, ["A"] );
+
+test();
+
+function AddRegExpCases(
+  regexp, str_regexp, pattern, str_pattern, length, index, matches_array ) {
+
+  AddTestCase(
+    str_regexp + " .exec(" + str_pattern +").length",
+    length,
+    regexp.exec(pattern).length );
+
+  AddTestCase(
+    str_regexp + " .exec(" + str_pattern +").index",
+    index,
+    regexp.exec(pattern).index );
+
+  AddTestCase(
+    str_regexp + " .exec(" + str_pattern +").input",
+    pattern,
+    regexp.exec(pattern).input );
+
+  for ( var matches = 0; matches < matches_array.length; matches++ ) {
+    AddTestCase(
+      str_regexp + " .exec(" + str_pattern +")[" + matches +"]",
+      matches_array[matches],
+      regexp.exec(pattern)[matches] );
+  }
+}
new file mode 100644
index 0000000000000000000000000000000000000000..8ca95ad2805f27e8aa7e69554aadb6a20c8bc72c
GIT binary patch
literal 4573
zc%1E5!E)0u5LJ`X!l`_MZyXpVg=5ELXwoo*34y_x!i`bmjiaez1xcp#SNN9x1{Y>H
z@F%R~Bz6+VZ5*fJKo9A7B|T~1zFn<c9gR8E-62rF{y~aB(h;c;LN0`VO&aa)Tkpi{
zi!l(lX6Lw^DP6xgBIF^?a?{Jtsbutm!x{8Bl~gkkS|~sHR^*a}{yf%ioU(TtmXH>T
z`Gkc`&j8X(+CGGu4H!rZ7t&F3Xr(0!gZd%by;if=e&2O#6PsI`fTXcJJJw+uB;^+F
z8|Bdw-Xk2i8Zr*gj*p)&BhLO?Kc|bT7ER_KpdgpO?w8B+)<>@_E)Q^^)qHpQ<;A~1
z<e&Q^@&Vd=?Ovx<3XMloNjgeX4I|vXR6bkZ#}br6+Po>gJq*n3nLIQp=gCsLqK_tk
zqO6(JLl33yfy(o6Yc5n07pM#(gQAK$^VkGUVrbu>6=Y9zM6m3W4c3pn3}H4{Nac0v
za3+*kv}28O7-%9{Fw~3t8lb1iMq7s5L4h^{&T4g(m#GUGwSD<*o<WA|Gx5pPie2Q-
z<__$mU9X+}ucNSUs($)HsK!-%WzSP4vvWztMgKA(@%Fy!CrYronEeIgaf(AhXl577
z@|T6P++6jzVZ<{+S0Kra4#rfe^>kpvGta#dQyhRSz8XSspyBj5=5IQ!l-M$Ku<}2)
z%ds6$#@CB&Ljp~4pB1V}p`KfnicIE`@@rxjuC~-tnAe$Ujha+t6d~*US6sWlD7YP5
z(yx|V))U7U;S=qES%9`=#9_)wNHt#r%ClT7wUCsU1S>j(4fI$@!};48CC1<Q=811g
z@Vn@#nwXn(tfQH2u8tibE2cZoy$$oEw7T2M)pp*yG$$_k?}?SI#@#yim}UF>nM|(k
OJGh?fV5Yb-MfDezBg=dM
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/while-001.js
@@ -0,0 +1,42 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          while-001
+ *  ECMA Section:
+ *  Description:        while statement
+ *
+ *  Verify that the while statement is not executed if the while expression is
+ *  false
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "while-001";
+var VERSION = "ECMA_2";
+var TITLE   = "while statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile();
+test();
+
+function DoWhile() {
+  result = "pass";
+
+  while (false) {
+    result = "fail";
+    break;
+  }
+
+  new TestCase(
+    SECTION,
+    "while statement: don't evaluate statement is expression is false",
+    "pass",
+    result );
+
+}
new file mode 100644
index 0000000000000000000000000000000000000000..19ca8c9db45f7ed60477891c24c917320f46ff12
GIT binary patch
literal 13384
zc%1E8Pj4GV6kjK4DMb|^f!YH|t01Z(gc2cvMC+t#9izIW4q%fW(Rg=k4_WWJGqX)2
z^$T#Sxbgw`4jefm?i>&t5aPn8U}o0#uGh0OoBiXgljaa>XLf$`=Dpv0Z|2R`sXun$
zZhZ)Wz56Bh1{jQtHN!A^o_%86Z?zwGZg(ti42}Ahc&F|lLU(`KHjHcRt$K9$A;1Xq
z9JmK92Vg*v=L#r0d?v;ba_xDnzt}4^9hQd$6tWHEB02+z4r$rYrKpb}7H}>Yg+ddG
zkvrIZg|&B@jc)6pUEi9t)wd=fQLK*W+eZ{);0U;<!0{LGUS%D}L*&4ZwzofCM4bJK
zbxsGZ3pA`2Afqn-SgtM)n_qW|(&c5=(QG`r_iZH<`S<b^d5N`mTiyL;A!>YmN=cJY
zK;ei@U#LEt&&C)M!qnE8;tOHmtX-;y25_8ks2E|fCJ3`?jk_LOA*NkOR4XiP32WgJ
z03P@pg=AgK8{BA^nf3u|g}CeOdxOO_31j_OlMwShasfVx2**vyf_A`B2llCf(O^j9
z^KzgM!--0UJc9tuJIrKu6z8cik6JDIajoxpk9pKcVBN1W*0terNdjF91v=<`2Q7(%
z3$fl~0PAtFQc~l_EKr7uHxV&i-*MF3YqK||@ceHIoP(z=*1=@(9cu2Fn|*+s+a?)$
zzGIuNN6jI4%EaU&8DZ=&vJ(@zX0V8!<5@>{dKiKu2|Ht~Jf9@}WUZ1UeUXEt?<SDc
zcWu~5F0|E5{YDkTS!*9Xo9Q7w^#+&8L*Wdym=la3MwZGCa`?l;g8ad}&<^oiHKX?X
zIUM5c1c%txg={TbGYIoVp)9>~QEB>pHRJX_IcWM$0!=v^Zf$OUpk`}{*5FZ{3z4wq
zN3vsY$~6a0rJ?Z4TyREC_HQ+F!QC8Ac0Iw#+CX!7Od&s)NsDvA37o%(!=n*Bb^YdZ
z-?ez%E?Uyt2<mWS_B<lV#p{w-{JSAxaSD9iuGzw;M3K0C1{9J=uDQ|>XJbel{cXX2
z8xr+o<lsHlHE{Xc*=kce^4ip%M`MxD69#9eBo0hZq{4KEh(w0zwv{QY@ET_XBo;<v
z&g;TTR|!ljAxNBa1I_B|A#9;Wk~s29Bb`=}R}FDFFv+8Z+DCz=3Yn46n6^}sWz6zY
zqkhMEAUjK>K)yVqO*z@<t2YgylM4G$N-YJO%0l+2Tp?pXQm{J;F3dl#d%m3u3{Wk7
zU7a(gT4&k9SWaq}nTMp|<+OhDv+M*}y`!+E!ttjpDy@RS)8@2<<DVue@mYiC2Y~D$
z%p`6yB~FE?mAM%yuL^O6we#--8h|8asTWry*`Uaq>eaZLPnjk@<sA^C{)tJ4fSL>C
zmt#O8wTxSnGDi<eF5y?r0dq&(lse`ek^*rl$$c&+d#;W6juAL9YKfc<95#!~%xYMk
zOW+efdS@8L+4ly>TEIv_Pj2?-&x@rz$J{COv{GTx6}%;q!R9jV&6{#Vl(-w<pX?wa
zt>h+u=XdUip}2%OL)~{W9uT#>P1phD3!uDizpSHHX%+l4-D>?(D|xH63VxfZz*}gZ
z&skhp()psegNj<P^%>qFz(Lsz+HIy2GHGsrG4*3@(y0TIf5vF{7ALu?PNu(JO1g$r
zxkM!F#=cTj`e+1l;d_4h?SYQU@^ZE&dM76hg%c|HDzDj2eiObP*BrGYZboI}lsS3w
htNGMBAglQQ1AFsQj7dp0S6Vig#uvhXkZr-u{s%_W83_OY
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/while-002.js
@@ -0,0 +1,86 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          while-002
+ *  ECMA Section:
+ *  Description:        while statement
+ *
+ *  Verify that the while statement is not executed if the while expression is
+ *  false
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "while-002";
+var VERSION = "ECMA_2";
+var TITLE   = "while statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( new DoWhileObject(
+	   "while expression is null",
+	   null,
+	   "result = \"fail: should not have evaluated statements in while block;break"
+	   ) );
+
+DoWhile( new DoWhileObject(
+	   "while expression is undefined",
+	   void 0,
+	   "result = \"fail: should not have evaluated statements in while block; break"
+	   ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is 0",
+	   0,
+	   "result = \"fail: should not have evaluated statements in while block; break;"
+	   ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is eval(\"\")",
+	   eval(""),
+	   "result = \"fail: should not have evaluated statements in while block; break"
+	   ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is NaN",
+	   NaN,
+	   "result = \"fail: should not have evaluated statements in while block; break"
+	   ));
+
+test();
+
+function DoWhileObject( d, e, s ) {
+  this.description = d;
+  this.whileExpression = e;
+  this.statements = s;
+}
+
+function DoWhile( object ) {
+  result = "pass";
+
+  while ( expression = object.whileExpression ) {
+    eval( object.statements );
+  }
+
+  // verify that the while expression was evaluated
+
+  new TestCase(
+    SECTION,
+    "verify that while expression was evaluated (should be "+
+    object.whileExpression +")",
+    "pass",
+    (object.whileExpression == expression ||
+     ( isNaN(object.whileExpression) && isNaN(expression) )
+      ) ? "pass" : "fail" );
+
+  new TestCase(
+    SECTION,
+    object.description,
+    "pass",
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..accc07368888cd6033498c6374bf77404c2883cd
GIT binary patch
literal 13218
zc%1E8L2u(k6n5G!>@HdX2PBSG4^<IDU08|3k`}dTR$Ek3M54kCP3%cBtZRpv38B*d
z2gG$(+P|>BVgCdN1c$vL#DN0`j?5dUvE$6xjy-OZsy)=ojOX*4_rCY$&6}z7(a^(t
z^#Mli-d8l}Q*>snS(eoe+;i*TsP#qrVcQ9Y*sAZycj_KteDC#+W!)2R)#JlY5hbYW
z;X~|rh$2n`UqZRjZ)QCqzB`Nchj^uyg%wZ<MO=&cgiitDLylbRbJ8Q2N;n^#MM5)9
ziQnIQQ?$36jn2_YtG+X7tM5!e;#h6jcT6~@$dhnCB5yQ@cSm%L2gJi4-M{}}9&!4V
z^Sl_eF41VZ00njV+vV!=wE1=0lrG;89nHp<``>-C42pbxd5XLx+B-*`<E9ZczI{PS
zn{mYPnfSa>eKvm@Qp}i8Tl)fE3WKNZN<B1?=S4&12uCzwTvTh|dSZr@cQ8wvVP#WT
zi>82Re*`G3=w#jjqfuen$D$R}PH-Ib=jSAi^{l2K<^k~$J&y?orW8Rt<fw;x+@hpE
z;K}a-(1+27Du%p*01X|so*m{qHQ`aKML*E`Vekz^jYU}3!sChrx)%v_()}Jg3I~^B
z{VU#EPl}b38t+d7Wu$nUFq_knLJKpl5d<DazV-{XGK_^#Afy?2+}^b}hlsJw&lGe^
z(Cm7$?!|Jl?!OYOdr!l<kJBmF5;LR3(ZXBu@1M_am}iE0`)f<dyyvyz%-hm1&&OkX
z64ADM$Yc0}3@TQp1u)A*63zS{sIu}zIEKFqU=2%eoTHR;{JorE`B4eyuv45P{OI;V
zZc%=J1KVNUbZ>ZUgvT$JlgD>T@K~4BZVt$%kqs3nWI&8SEjJa*d+>&6=L;7n9*ukl
zic;}<)kauk8j9a%OkbI;h>yRj(%l^R(C(%)B_~S8ek>;n(~@f@oA3hXNkp9NQutpR
z3iTA^;J)bU`|x(L!pp9@@NyXNL`(~$!L1<$V1BL?rZXTcHcXXQEog<efDxEElnjB_
z#_BQ}rd1FmuDOAx#p4LpsF4(od}E|V6?xZ^mG4j=s-R{zL?)k#kQob&%H5Yjpdw=~
zZ)wcV9Zys{(VS_0piAowtVS>2wWLm#*pG5*DNGHGWSUSm=po`gw4*~YW)t5IQ{^rw
z*&btxZ9m{P1`P4mf-8z-%dDv&`wQ*0T<X0$WBYU!7mIo&J)z2FOBsz8b+bQ(C~Jn?
ztinAoL;|3*CW!s63Sz5Z@VrZ4j@{w`#VBTa<yw@!<bjak@5hK85-KLx6gr<j4XPm3
zsjgaaTeQQ`dIK@t8u;^V#ad(XkasnXwR0{)pF#(wq<3!f0pj*tnP!YwwD#EBY!Hk*
z*Y0A)`Sq&#Yv}-;Q^(MusMD4}1b#zlDqRJQz;_AcqsU88OQrzG6JPO#SuH2<8UA4e
z-mS9AanL8u97Ya$g4v%wHA{KG+%>uvT4K@}&Y)DVrHs3^r8Y!`$phSWA*_WIL0W%B
z?%EL}<>>GVb>A+y{mkU8I$<gqKw<A?WFx1K#?_w>TxqKHs#bBTwF-V)sC;a6oiACs
z(0P~P{e`)WO1fa{Q@m3|!=fB^TS6yn(%e8pK1#GHKOK_%TR}UxAC-C^B&|Z1eXtcX
zlBP@PF|nwexc`~z!ZFCXoAT<Ti!7$AYv~!mUB9NJ_-G29)dl0pQ*$pnW8)t4LarK@
kx@1qD8JDO-F3bPFh&OK~h^Di7s%1-Qd@f2z+2*|Pe=iNzk^lez
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/while-003.js
@@ -0,0 +1,87 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          while-003
+ *  ECMA Section:
+ *  Description:        while statement
+ *
+ *  The while expression evaluates to true, Statement returns abrupt completion.
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "while-003";
+var VERSION = "ECMA_2";
+var TITLE   = "while statement";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile( new DoWhileObject(
+	   "while expression is true",
+	   true,
+	   "result = \"pass\";" ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is 1",
+	   1,
+	   "result = \"pass\";" ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is new Boolean(false)",
+	   new Boolean(false),
+	   "result = \"pass\";" ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is new Object()",
+	   new Object(),
+	   "result = \"pass\";" ));
+
+DoWhile( new DoWhileObject(
+	   "while expression is \"hi\"",
+	   "hi",
+	   "result = \"pass\";" ));
+/*
+  DoWhile( new DoWhileObject(
+  "while expression has a continue in it",
+  "true",
+  "if ( i == void 0 ) i = 0; result=\"pass\"; if ( ++i == 1 ) {continue;} else {break;} result=\"fail\";"
+  ));
+*/
+test();
+
+function DoWhileObject( d, e, s ) {
+  this.description = d;
+  this.whileExpression = e;
+  this.statements = s;
+}
+
+function DoWhile( object ) {
+  result = "fail:  statements in while block were not evaluated";
+
+  while ( expression = object.whileExpression ) {
+    eval( object.statements );
+    break;
+  }
+
+  // verify that the while expression was evaluated
+
+  new TestCase(
+    SECTION,
+    "verify that while expression was evaluated (should be "+
+    object.whileExpression +")",
+    "pass",
+    (object.whileExpression == expression ||
+     ( isNaN(object.whileExpression) && isNaN(expression) )
+      ) ? "pass" : "fail" );
+
+  new TestCase(
+    SECTION,
+    object.description,
+    "pass",
+    result );
+}
new file mode 100644
index 0000000000000000000000000000000000000000..81253bbc76fee0f6129e5689f5db17f4eb5718b7
GIT binary patch
literal 34266
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
new file mode 100644
--- /dev/null
+++ b/js/src/jsapi-tests/binast/parser/tester/while-004.js
@@ -0,0 +1,217 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ *  File Name:          while-004
+ *  ECMA Section:
+ *  Description:        while statement
+ *
+ *  Author:             christine@netscape.com
+ *  Date:               11 August 1998
+ */
+var SECTION = "while-004";
+var VERSION = "ECMA_2";
+var TITLE   = "while statement";
+var BUGNUMBER="316725";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+DoWhile_1();
+DoWhile_2();
+DoWhile_3();
+DoWhile_4();
+DoWhile_5();
+
+test();
+
+/**
+ *  Break out of a while by calling return.
+ *
+ *  Tests:  12.6.2 step 6.
+ */
+function dowhile() {
+  result = "pass";
+
+  while (true) {
+    return result;
+    result = "fail: hit code after return statement";
+    break;
+  }
+}
+
+function DoWhile_1() {
+  description = "return statement in a while block";
+
+  result = dowhile();
+
+  new TestCase(
+    SECTION,
+    "DoWhile_1" + description,
+    "pass",
+    result );
+}
+
+/**
+ *  While with a labeled continue statement.  Verify that statements
+ *  after the continue statement are not evaluated.
+ *
+ *  Tests: 12.6.2 step 8.
+ *
+ */
+function DoWhile_2() {
+  var description = "while with a labeled continue statement";
+  var result1 = "pass";
+  var result2 = "fail: did not execute code after loop, but inside label";
+  var i = 0;
+  var j = 0;
+
+theloop:
+  while( i++ < 10  ) {
+    j++;
+    continue theloop;
+    result1 = "failed:  hit code after continue statement";
+  }
+  result2 = "pass";
+
+  new TestCase(
+    SECTION,
+    "DoWhile_2:  " +description + " - code inside the loop, before the continue should be executed ("+j+")",
+    true,
+    j == 10 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_2:  " +description +" - code after labeled continue should not be executed",
+    "pass",
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_2:  " +description +" - code after loop but inside label should be executed",
+    "pass",
+    result2 );
+}
+
+/**
+ *  While with a labeled break.
+ *
+ */
+function DoWhile_3() {
+  var description = "while with a labeled break statement";
+  var result1 = "pass";
+  var result2 = "pass";
+  var result3 = "fail: did not get to code after label";
+
+woohoo: {
+    while( true ) {
+      break woohoo;
+      result1 = "fail: got to code after a break";
+    }
+    result2 = "fail: got to code outside of loop but inside label";
+  }
+
+  result3 = "pass";
+
+  new TestCase(
+    SECTION,
+    "DoWhile_3: " +description +" - verify break out of loop",
+    "pass",
+    result1 );
+
+
+  new TestCase(
+    SECTION,
+    "DoWhile_3: " +description +" - verify break out of label",
+    "pass",
+    result2 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_3: " +description + " - verify correct exit from label",
+    "pass",
+    result3 );
+}
+
+
+/**
+ *  Labled while with an unlabeled break
+ *
+ */
+function DoWhile_4() {
+  var description = "labeled while with an unlabeled break";
+  var result1 = "pass";
+  var result2 = "pass";
+  var result3 = "fail: did not evaluate statement after label";
+
+woohooboy: {
+    while( true ) {
+      break woohooboy;
+      result1 = "fail: got to code after the break";
+    }
+    result2 = "fail: broke out of while, but not out of label";
+  }
+  result3 = "pass";
+
+  new TestCase(
+    SECTION,
+    "DoWhile_4: " +description +" - verify break out of while loop",
+    "pass",
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_4: " +description + " - verify break out of label",
+    "pass",
+    result2 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_4: " +description +" - verify that statements after label are evaluated",
+    "pass",
+    result3 );
+}
+
+/**
+ *  in this case, should behave the same way as
+ *
+ *
+ */
+function DoWhile_5() {
+  var description = "while with a labeled continue statement";
+  var result1 = "pass";
+  var result2 = "fail: did not execute code after loop, but inside label";
+  var i = 0;
+  var j = 0;
+
+theloop: {
+    j++;
+    while( i++ < 10  ) {
+      continue;
+      result1 = "failed:  hit code after continue statement";
+    }
+    result2 = "pass";
+  }
+
+  new TestCase(
+    SECTION,
+    "DoWhile_5: " +description + " - continue should not execute statements above the loop",
+    true,
+    ( j == 1 ) );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_5: " +description +" - code after labeled continue should not be executed",
+    "pass",
+    result1 );
+
+  new TestCase(
+    SECTION,
+    "DoWhile_5: " +description +" - code after loop but inside label should be executed",
+    "pass",
+    result2 );
+}
+
--- a/js/src/jsapi-tests/moz.build
+++ b/js/src/jsapi-tests/moz.build
@@ -138,16 +138,17 @@ if CONFIG['ENABLE_STREAMS']:
     ]
 
 if CONFIG['JS_BUILD_BINAST'] and CONFIG['JS_STANDALONE']:
     # Standalone builds leave the source directory untouched,
     # which lets us run tests with the data files intact.
     # Otherwise, in the current state of the build system,
     # we can't have data files in js/src tests.
     UNIFIED_SOURCES += [
+        'testBinASTReader.cpp',
         'testBinTokenReaderTester.cpp'
     ]
 
 
 DEFINES['EXPORT_JS_API'] = True
 
 LOCAL_INCLUDES += [
     '!..',
--- a/js/src/jsapi-tests/testBinASTReader.cpp
+++ b/js/src/jsapi-tests/testBinASTReader.cpp
@@ -1,82 +1,97 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
-#include "mozilla/Vector.h"
-
 #if defined(XP_UNIX)
 
 #include <dirent.h>
 #include <sys/stat.h>
 
 #elif defined(XP_WIN)
 
 #include <windows.h>
 
 #endif
 
+#include "jsapi.h"
+
+
 #include "frontend/BinSource.h"
 #include "frontend/FullParseHandler.h"
 #include "frontend/ParseContext.h"
 #include "frontend/Parser.h"
+#include "gc/Zone.h"
+#include "js/Vector.h"
 
 #include "jsapi-tests/tests.h"
 
+#include "vm/Interpreter.h"
+
 using UsedNameTracker = js::frontend::UsedNameTracker;
+using namespace JS;
+using namespace js;
 
-extern void readFull(const char* path, Vector<uint8_t>& buf);
+extern void enterJsDirectory();
+extern void exitJsDirectory();
+extern void readFull(const char* path, js::Vector<uint8_t>& buf);
 
-void readFull(JSContext* cx, const char* path, Vector<char16_t>& buf) {
+void
+readFull(JSContext* cx, const char* path, js::Vector<char16_t>& buf)
+{
     buf.shrinkTo(0);
 
-    Vector<uint8_t> intermediate(cx);
+    js::Vector<uint8_t> intermediate(cx);
     readFull(path, intermediate);
 
     if (!buf.appendAll(intermediate))
-        MOZ_CRASH();
+        MOZ_CRASH("Couldn't read data");
 }
 
 BEGIN_TEST(testBinASTReaderECMAScript2)
 {
     const char BIN_SUFFIX[] = ".binjs";
     const char TXT_SUFFIX[] = ".js";
 
     CompileOptions options(cx);
     options.setIntroductionType("unit test parse")
            .setFileAndLine("<string>", 1);
 
 #if defined(XP_UNIX)
 
     const char PATH[] = "jsapi-tests/binast/parser/tester/";
 
     // Read the list of files in the directory.
+    enterJsDirectory();
     DIR* dir = opendir(PATH);
+    exitJsDirectory();
     if (!dir)
-        MOZ_CRASH();
+        MOZ_CRASH("Couldn't open directory");
 
 
     while (auto entry = readdir(dir)) {
         // Find files whose name ends with ".binjs".
         const char* d_name = entry->d_name;
 
 #elif defined(XP_WIN)
 
     const char PATH[] = "jsapi-tests\\binast\\parser\\tester\\*.binjs";
 
     WIN32_FIND_DATA FindFileData;
+    enterJsDirectory();
     HANDLE hFind = FindFirstFile(PATH, &FindFileData);
+    exitJsDirectory();
     for (bool found = (hFind != INVALID_HANDLE_VALUE);
             found;
-            found = FindNextFile(hFind, &FindFileData)
+            found = FindNextFile(hFind, &FindFileData))
     {
         const char* d_name = FindFileData.cFileName;
 
 #endif // defined(XP_UNIX) || defined(XP_WIN)
 
         const size_t namlen = strlen(d_name);
         if (namlen < sizeof(BIN_SUFFIX))
             continue;
@@ -87,111 +102,114 @@ BEGIN_TEST(testBinASTReaderECMAScript2)
         UniqueChars txtPath(static_cast<char*>(js_malloc(namlen + sizeof(PATH) + 1)));
         strncpy(txtPath.get(), PATH, sizeof(PATH));
         strncpy(txtPath.get() + sizeof(PATH) - 1, d_name, namlen);
         strncpy(txtPath.get() + sizeof(PATH) + namlen - sizeof(BIN_SUFFIX), TXT_SUFFIX, sizeof(TXT_SUFFIX));
         txtPath[sizeof(PATH) + namlen - sizeof(BIN_SUFFIX) + sizeof(TXT_SUFFIX) - 1] = 0;
         fprintf(stderr, "Testing %s\n", txtPath.get());
 
         // Read text file.
-        Vector<char16_t> txtSource(cx);
+        js::Vector<char16_t> txtSource(cx);
         readFull(cx, txtPath.get(), txtSource);
 
         // Parse text file.
         UsedNameTracker txtUsedNames(cx);
         if (!txtUsedNames.init())
-            MOZ_CRASH();
+            MOZ_CRASH("Couldn't initialize used names");
         js::frontend::Parser<js::frontend::FullParseHandler, char16_t> parser(cx, cx->tempLifoAlloc(), options, txtSource.begin(), txtSource.length(),
                                                   /* foldConstants = */ false, txtUsedNames, nullptr,
                                                   nullptr);
         if (!parser.checkOptions())
-            MOZ_CRASH();
+            MOZ_CRASH("Bad options");
 
         auto txtParsed = parser.parse(); // Will be deallocated once `parser` goes out of scope.
         RootedValue txtExn(cx);
         if (!txtParsed) {
             // Save exception for more detailed error message, if necessary.
             if (!js::GetAndClearException(cx, &txtExn))
-                MOZ_CRASH();
+                MOZ_CRASH("Couldn't clear exception");
         }
 
         // Read binary file.
         UniqueChars binPath(static_cast<char*>(js_malloc(namlen + sizeof(PATH) + 1)));
         strncpy(binPath.get(), PATH, sizeof(PATH));
         strncpy(binPath.get() + sizeof(PATH) - 1, d_name, namlen);
         binPath[namlen + sizeof(PATH) - 1] = 0;
 
-        Vector<uint8_t> binSource(cx);
+        js::Vector<uint8_t> binSource(cx);
         readFull(binPath.get(), binSource);
 
         // Parse binary file.
         js::frontend::UsedNameTracker binUsedNames(cx);
         if (!binUsedNames.init())
-            MOZ_CRASH();
+            MOZ_CRASH("Couldn't initialized binUsedNames");
 
         js::frontend::BinASTParser reader(cx, cx->tempLifoAlloc(), binUsedNames, options);
 
         auto binParsed = reader.parse(binSource); // Will be deallocated once `reader` goes out of scope.
         RootedValue binExn(cx);
         if (binParsed.isErr()) {
             // Save exception for more detailed error message, if necessary.
             if (!js::GetAndClearException(cx, &binExn))
-                MOZ_CRASH();
+                MOZ_CRASH("Couldn't clear binExn");
         }
 
         // The binary parser should accept the file iff the text parser has.
         if (binParsed.isOk() && !txtParsed) {
             fprintf(stderr, "Text file parsing failed: ");
 
             js::ErrorReport report(cx);
             if (!report.init(cx, txtExn, js::ErrorReport::WithSideEffects))
-                MOZ_CRASH();
+                MOZ_CRASH("Couldn't report txtExn");
 
             PrintError(cx, stderr, report.toStringResult(), report.report(), /* reportWarnings */ true);
             MOZ_CRASH("Binary parser accepted a file that text parser rejected");
         }
 
         if (binParsed.isErr() && txtParsed) {
             fprintf(stderr, "Binary file parsing failed: ");
 
             js::ErrorReport report(cx);
             if (!report.init(cx, binExn, js::ErrorReport::WithSideEffects))
-                MOZ_CRASH();
+                MOZ_CRASH("Couldn't report binExn");
 
             PrintError(cx, stderr, report.toStringResult(), report.report(), /* reportWarnings */ true);
             MOZ_CRASH("Binary parser rejected a file that text parser accepted");
         }
 
         if (binParsed.isErr()) {
             fprintf(stderr, "Binary parser and text parser agree that %s is invalid\n", txtPath.get());
             continue;
         }
 
 #if defined(DEBUG) // Dumping an AST is only defined in DEBUG builds
         // Compare ASTs.
         Sprinter binPrinter(cx);
         if (!binPrinter.init())
-            MOZ_CRASH();
+            MOZ_CRASH("Couldn't display binParsed");
         DumpParseTree(binParsed.unwrap(), binPrinter);
 
         Sprinter txtPrinter(cx);
         if (!txtPrinter.init())
-            MOZ_CRASH();
+            MOZ_CRASH("Couldn't display txtParsed");
         DumpParseTree(txtParsed, txtPrinter);
 
         if (strcmp(binPrinter.string(), txtPrinter.string()) != 0) {
-            fprintf(stderr, "Got distinct ASTs when parsing %s:\n\tBINARY\n%s\n\n\tTEXT\n%s\n", txtPath.get(), binPrinter.string(), txtPrinter.string());            
-            MOZ_CRASH();
+            fprintf(stderr, "Got distinct ASTs when parsing %s:\n\tBINARY\n%s\n\n\tTEXT\n%s\n", txtPath.get(), binPrinter.string(), txtPrinter.string());
+            MOZ_CRASH("Got distinct ASTs");
         }
         fprintf(stderr, "Got the same AST when parsing %s\n", txtPath.get());
 
 #endif // defined(DEBUG)
     }
 
 #if defined(XP_WIN)
     if (!FindClose(hFind))
         MOZ_CRASH("Could not close Find");
+#elif defined(XP_UNIX)
+    if (closedir(dir) != 0)
+        MOZ_CRASH("Could not close dir");
 #endif // defined(XP_WIN)
 
     return true;
 }
 END_TEST(testBinASTReaderECMAScript2)