[JSC] Update Test262 to Feb 9 version
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Feb 2018 06:46:20 +0000 (06:46 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Feb 2018 06:46:20 +0000 (06:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182468

Reviewed by Saam Barati.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228311 268f45cc-cd09-0410-ab3c-d52691b4dbfc

173 files changed:
JSTests/ChangeLog
JSTests/test262.yaml
JSTests/test262/test/built-ins/Number/S8.12.8_A4.js
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-od-nsl-od-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-ods.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-od.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-ods.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-minus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Promise/prototype/finally/invokes-then-with-function.js
JSTests/test262/test/built-ins/Promise/prototype/finally/subclass-species-constructor-resolve-count.js
JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-different-type.js [new file with mode: 0644]
JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-same-type.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dds.js [new file with mode: 0644]
JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/assignment/white-space.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/delete/white-space-line-terminator-between-delete-unaryexpression-allowed.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/function/name-arguments-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-3-8.js with 87% similarity]
JSTests/test262/test/language/expressions/function/name-arguments-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-42-s.js with 70% similarity]
JSTests/test262/test/language/expressions/function/name-arguments-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-14-s.js with 70% similarity]
JSTests/test262/test/language/expressions/function/name-eval-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-3-2.js with 89% similarity]
JSTests/test262/test/language/expressions/function/name-eval-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-38-s.js with 71% similarity]
JSTests/test262/test/language/expressions/function/name-eval-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-12-s.js with 71% similarity]
JSTests/test262/test/language/expressions/function/name-eval-stricteval.js [moved from JSTests/test262/test/language/statements/function/13.1-37-s.js with 100% similarity]
JSTests/test262/test/language/expressions/function/param-arguments-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-2-6.js with 87% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-1-2.js with 89% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-1.js [moved from JSTests/test262/test/language/statements/function/13.1-8-s.js with 80% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-2.js [moved from JSTests/test262/test/language/statements/function/13.1-9-s.js with 80% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-3.js [moved from JSTests/test262/test/language/statements/function/13.1-10-s.js with 79% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-body-1.js [moved from JSTests/test262/test/language/statements/function/13.1-30-s.js with 79% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-body-2.js [moved from JSTests/test262/test/language/statements/function/13.1-32-s.js with 79% similarity]
JSTests/test262/test/language/expressions/function/param-duplicated-strict-body-3.js [moved from JSTests/test262/test/language/statements/function/13.1-34-s.js with 76% similarity]
JSTests/test262/test/language/expressions/function/param-eval-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-2-2.js with 88% similarity]
JSTests/test262/test/language/expressions/function/param-eval-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-18-s.js with 80% similarity]
JSTests/test262/test/language/expressions/function/param-eval-stricteval.js [moved from JSTests/test262/test/language/statements/function/13.1-17-s.js with 100% similarity]
JSTests/test262/test/language/expressions/tagged-template/cache-different-functions-same-site.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/tagged-template/cache-differing-expressions-eval.js
JSTests/test262/test/language/expressions/tagged-template/cache-differing-expressions-new-function.js
JSTests/test262/test/language/expressions/tagged-template/cache-differing-expressions.js
JSTests/test262/test/language/expressions/tagged-template/cache-differing-raw-strings.js
JSTests/test262/test/language/expressions/tagged-template/cache-differing-string-count.js
JSTests/test262/test/language/expressions/tagged-template/cache-identical-source-eval.js
JSTests/test262/test/language/expressions/tagged-template/cache-identical-source-new-function.js
JSTests/test262/test/language/expressions/tagged-template/cache-identical-source.js
JSTests/test262/test/language/expressions/tagged-template/cache-realm.js
JSTests/test262/test/language/expressions/tagged-template/cache-same-site-top-level.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/tagged-template/cache-same-site.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bds.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dd-ep.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dds-ep.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hds.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hds.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-od-nsl-od-one-of.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd-one-of.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-one-of.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-ods.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-od.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-ods.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-minus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-plus-dds-nsl-dd.js [new file with mode: 0644]
JSTests/test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js [new file with mode: 0644]
JSTests/test262/test/language/literals/regexp/7.8.5-1.js
JSTests/test262/test/language/statements/function/S13_A7_T2.js [deleted file]
JSTests/test262/test/language/statements/function/enable-strict-via-body.js [moved from JSTests/test262/test/language/statements/function/13.0-10-s.js with 63% similarity]
JSTests/test262/test/language/statements/function/enable-strict-via-outer-body.js [moved from JSTests/test262/test/language/statements/function/13.0-11-s.js with 63% similarity]
JSTests/test262/test/language/statements/function/enable-strict-via-outer-script.js [moved from JSTests/test262/test/language/statements/function/13.0-9-s.js with 68% similarity]
JSTests/test262/test/language/statements/function/invalid-2-names.js [moved from JSTests/test262/test/language/statements/function/13.0-1.js with 69% similarity]
JSTests/test262/test/language/statements/function/invalid-3-names.js [moved from JSTests/test262/test/language/statements/function/13.0-2.js with 69% similarity]
JSTests/test262/test/language/statements/function/invalid-function-body-1.js [new file with mode: 0644]
JSTests/test262/test/language/statements/function/invalid-function-body-2.js [new file with mode: 0644]
JSTests/test262/test/language/statements/function/invalid-function-body-3.js [new file with mode: 0644]
JSTests/test262/test/language/statements/function/invalid-name-dot.js [moved from JSTests/test262/test/language/statements/function/13.0-3.js with 68% similarity]
JSTests/test262/test/language/statements/function/invalid-name-two-dots.js [moved from JSTests/test262/test/language/statements/function/13.0-4.js with 68% similarity]
JSTests/test262/test/language/statements/function/line-terminator-non-strict.js [moved from JSTests/test262/test/language/statements/function/S13_A16_T1.js with 69% similarity]
JSTests/test262/test/language/statements/function/line-terminator-strict.js [moved from JSTests/test262/test/language/statements/function/S13_A16_T2.js with 68% similarity]
JSTests/test262/test/language/statements/function/name-arguments-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-3-7.js with 88% similarity]
JSTests/test262/test/language/statements/function/name-arguments-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-40-s.js with 71% similarity]
JSTests/test262/test/language/statements/function/name-arguments-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-13-s.js with 71% similarity]
JSTests/test262/test/language/statements/function/name-eval-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-3-1.js with 89% similarity]
JSTests/test262/test/language/statements/function/name-eval-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-36-s.js with 71% similarity]
JSTests/test262/test/language/statements/function/name-eval-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-11-s.js with 72% similarity]
JSTests/test262/test/language/statements/function/name-eval-stricteval.js [moved from JSTests/test262/test/language/statements/function/13.1-35-s.js with 100% similarity]
JSTests/test262/test/language/statements/function/name-unicode.js [moved from JSTests/test262/test/language/statements/function/S13_A14_T2.js with 89% similarity]
JSTests/test262/test/language/statements/function/param-arguments-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-2-5.js with 87% similarity]
JSTests/test262/test/language/statements/function/param-arguments-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-20-s.js with 79% similarity]
JSTests/test262/test/language/statements/function/param-arguments-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-3-s.js with 80% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-1-1.js with 89% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-1.js [moved from JSTests/test262/test/language/statements/function/13.1-5-s.js with 79% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-2.js [moved from JSTests/test262/test/language/statements/function/13.1-6-s.js with 79% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-3.js [moved from JSTests/test262/test/language/statements/function/13.1-7-s.js with 78% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-body-1.js [moved from JSTests/test262/test/language/statements/function/13.1-24-s.js with 78% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-body-2.js [moved from JSTests/test262/test/language/statements/function/13.1-26-s.js with 79% similarity]
JSTests/test262/test/language/statements/function/param-duplicated-strict-body-3.js [moved from JSTests/test262/test/language/statements/function/13.1-28-s.js with 78% similarity]
JSTests/test262/test/language/statements/function/param-eval-non-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-2-1.js with 88% similarity]
JSTests/test262/test/language/statements/function/param-eval-strict-body.js [moved from JSTests/test262/test/language/statements/function/13.1-16-s.js with 79% similarity]
JSTests/test262/test/language/statements/function/param-eval-strict.js [moved from JSTests/test262/test/language/statements/function/13.1-1-s.js with 80% similarity]
JSTests/test262/test/language/statements/function/param-eval-stricteval.js [moved from JSTests/test262/test/language/statements/function/13.1-15-s.js with 100% similarity]
JSTests/test262/test262-Revision.txt

index 88807f7..40030b6 100644 (file)
@@ -1,5 +1,12 @@
 2018-02-08  Yusuke Suzuki  <utatane.tea@gmail.com>
 
+        [JSC] Update Test262 to Feb 9 version
+        https://bugs.webkit.org/show_bug.cgi?id=182468
+
+        Reviewed by Saam Barati.
+
+2018-02-08  Yusuke Suzuki  <utatane.tea@gmail.com>
+
         Unreviewed, fix invalid line terminator in old test262 file part 2
         https://bugs.webkit.org/show_bug.cgi?id=182468
 
index 8007742..4dbebb2 100644 (file)
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
 - path: test262/test/built-ins/Number/string-hex-literal-invalid.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-od-nsl-od-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-hil-od-nsl-od-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-ods.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-ods.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-od.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-od.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-ods.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-ods.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/Number/string-numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
 - path: test262/test/built-ins/Number/string-octal-literal-invald.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
 - path: test262/test/built-ins/Number/string-octal-literal-invald.js
 - path: test262/test/built-ins/Promise/prototype/finally/subclass-species-constructor-reject-count.js
   cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]
 - path: test262/test/built-ins/Promise/prototype/finally/subclass-species-constructor-resolve-count.js
-  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/doneprintHandle.js"], [:async]
+  cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 - path: test262/test/built-ins/Promise/prototype/finally/subclass-species-constructor-resolve-count.js
-  cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/doneprintHandle.js"], [:strict, :async]
+  cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [:strict]
 - path: test262/test/built-ins/Promise/prototype/finally/this-value-non-object.js
   cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []
 - path: test262/test/built-ins/Promise/prototype/finally/this-value-non-object.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js"], []
 - path: test262/test/built-ins/TypedArrays/typedarray-arg-custom-proto-access-throws.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js"], [:strict]
+- path: test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-different-type.js
+  cmd: runTest262 :fail, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js", "../../../harness/detachArrayBuffer.js"], []
+- path: test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-different-type.js
+  cmd: runTest262 :fail, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js", "../../../harness/detachArrayBuffer.js"], [:strict]
+- path: test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-same-type.js
+  cmd: runTest262 :fail, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js", "../../../harness/detachArrayBuffer.js"], []
+- path: test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-same-type.js
+  cmd: runTest262 :fail, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js", "../../../harness/detachArrayBuffer.js"], [:strict]
 - path: test262/test/built-ins/TypedArrays/typedarray-arg-new-instance-extensibility.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/testTypedArray.js"], []
 - path: test262/test/built-ins/TypedArrays/typedarray-arg-new-instance-extensibility.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/propertyHelper.js"], []
 - path: test262/test/built-ins/parseFloat/name.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/propertyHelper.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
+- path: test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
 - path: test262/test/built-ins/parseInt/15.1.2.2-2-1.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
 - path: test262/test/built-ins/parseInt/15.1.2.2-2-1.js
 - path: test262/test/intl402/Collator/default-options-object-prototype.js
   cmd: runTest262 :fail, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], [:strict]
 - path: test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js
-  cmd: runTest262 :skip, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/compareArray.js"], []
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/compareArray.js"], []
 - path: test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js
-  cmd: runTest262 :skip, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/compareArray.js"], [:strict]
+  cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js", "../../../harness/compareArray.js"], [:strict]
 - path: test262/test/intl402/Collator/instance-class.js
   cmd: runTest262 :normal, "NoException", ["../../../harness/assert.js", "../../../harness/sta.js"], []
 - path: test262/test/intl402/Collator/instance-class.js
   cmd: runTest262 :fail, "ReferenceError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/assignment/target-string.js
   cmd: runTest262 :fail, "ReferenceError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/assignment/white-space.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/assignment/white-space.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/async-arrow-function/arrow-returns-promise.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/doneprintHandle.js"], [:async]
 - path: test262/test/language/expressions/async-arrow-function/arrow-returns-promise.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/delete/super-property.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/delete/white-space-line-terminator-between-delete-unaryexpression-allowed.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/delete/white-space-line-terminator-between-delete-unaryexpression-allowed.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/division/S11.5.2_A1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/division/S11.5.2_A1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []
 - path: test262/test/language/expressions/function/length-dflt.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]
+- path: test262/test/language/expressions/function/name-arguments-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/name-arguments-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/name-arguments-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/name-eval-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/name-eval-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/name-eval-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/name-eval-stricteval.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/function/name.js
   cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []
 - path: test262/test/language/expressions/function/name.js
   cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]
+- path: test262/test/language/expressions/function/param-arguments-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/function/param-dflt-yield-non-strict.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/function/param-dflt-yield-strict.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/param-duplicated-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-duplicated-strict-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/param-duplicated-strict-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/param-duplicated-strict-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/function/param-duplicated-strict-body-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-duplicated-strict-body-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-duplicated-strict-body-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-eval-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-eval-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/function/param-eval-stricteval.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/function/params-dflt-args-unmapped.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/function/params-dflt-args-unmapped.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/super/realm.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/expressions/tagged-template/cache-differing-expressions-eval.js
+- path: test262/test/language/expressions/tagged-template/cache-different-functions-same-site.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/expressions/tagged-template/cache-differing-expressions-eval.js
+- path: test262/test/language/expressions/tagged-template/cache-different-functions-same-site.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/tagged-template/cache-differing-expressions-eval.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/tagged-template/cache-differing-expressions-eval.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-differing-expressions-new-function.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-differing-expressions-new-function.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-differing-expressions.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-differing-expressions.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-differing-raw-strings.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-differing-raw-strings.js
 - path: test262/test/language/expressions/tagged-template/cache-differing-string-count.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-identical-source-eval.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-identical-source-eval.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-identical-source-new-function.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-identical-source-new-function.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-identical-source.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-identical-source.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/cache-realm.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/cache-realm.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/tagged-template/cache-same-site-top-level.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/tagged-template/cache-same-site-top-level.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/expressions/tagged-template/cache-same-site.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/expressions/tagged-template/cache-same-site.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/expressions/tagged-template/call-expression-argument-list-evaluation.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/expressions/tagged-template/call-expression-argument-list-evaluation.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/literals/numeric/non-octal-decimal-integer-strict.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dd-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dd-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dds-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dd-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dds-ep.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-od-nsl-od-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-hil-od-nsl-od-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-one-of.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-ods.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-ods.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-od.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-od.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-ods.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-ods.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-sign-minus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-sign-plus-dds-nsl-dd.js
+  cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/literals/numeric/octal-invalid-digit.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/literals/numeric/octal-invalid-digit.js
 - path: test262/test/language/literals/numeric/octal.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/literals/regexp/7.8.5-1.js
-  cmd: runTest262 :skip, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/literals/regexp/7.8.5-1.js
-  cmd: runTest262 :skip, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/literals/regexp/7.8.5-1gs.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/literals/regexp/7.8.5-1gs.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/for-of/yield.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.0-1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.0-10-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-11-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.0-12-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.0-13-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.0-17-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.0-3.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-3.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.0-4.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.0-4.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.0-7-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.0-8-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.0-9-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.0_4-17gs.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.0_4-5gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-1-1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-1-2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-1-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-10-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-11-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-12-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-13-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.1-13gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-14-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-15-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-16-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-17-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-18-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-19-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-1gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-2-1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-2-2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-2-5.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-2-6.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-2-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-20-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-21-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-22-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-23-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-24-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-25-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-26-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-27-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-28-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-29-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-3-1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-3-2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-3-7.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-3-8.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-3-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-30-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-31-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-32-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-33-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-34-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-35-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-36-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-37-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-38-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-39-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-4-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-40-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-41-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/13.1-42-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.1-4gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-5-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.1-5gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-6-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-7-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-8-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.1-8gs.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/13.1-9-s.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/13.2-1-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/13.2-1-s.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/S13_A14_T1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A14_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A14_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/S13_A15_T1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/S13_A15_T2.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/S13_A15_T5.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A16_T1.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A16_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A16_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/S13_A17_T1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/S13_A17_T1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/S13_A7_T1.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
-- path: test262/test/language/statements/function/S13_A7_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
-- path: test262/test/language/statements/function/S13_A7_T2.js
-  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/S13_A7_T3.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/S13_A7_T3.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/early-params-super-prop.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/enable-strict-via-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/enable-strict-via-outer-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/enable-strict-via-outer-script.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-2-names.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-2-names.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-3-names.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-3-names.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-function-body-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-function-body-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-function-body-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-function-body-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-function-body-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-function-body-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-name-dot.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-name-dot.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/invalid-name-two-dots.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/invalid-name-two-dots.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/length-dflt.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []
 - path: test262/test/language/statements/function/length-dflt.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]
+- path: test262/test/language/statements/function/line-terminator-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/line-terminator-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/line-terminator-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/name-arguments-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-arguments-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-arguments-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/name-eval-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-eval-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-eval-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/name-eval-stricteval.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-unicode.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/name-unicode.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/name.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []
 - path: test262/test/language/statements/function/name.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]
+- path: test262/test/language/statements/function/param-arguments-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-arguments-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-arguments-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
 - path: test262/test/language/statements/function/param-dflt-yield-non-strict.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/param-dflt-yield-strict.js
   cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/param-duplicated-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-duplicated-strict-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/param-duplicated-strict-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/param-duplicated-strict-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/param-duplicated-strict-body-1.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-duplicated-strict-body-2.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-duplicated-strict-body-3.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-eval-non-strict.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-eval-strict-body.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
+- path: test262/test/language/statements/function/param-eval-strict.js
+  cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict]
+- path: test262/test/language/statements/function/param-eval-stricteval.js
+  cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/params-dflt-args-unmapped.js
   cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], []
 - path: test262/test/language/statements/function/params-dflt-args-unmapped.js
index ee9c8d4..1a1aa08 100644 (file)
@@ -13,7 +13,7 @@ description: >
 
 try
 {
-  var __obj = {valueOf:function(){return new Object;},toString: function() {return new Object();}}  
+  var __obj = {valueOf:function(){return new Object;},toString: function() {return new Object();}}
   Number(__obj);
   $ERROR('#1.1: var __obj = {valueOf:function(){return new Object;},toNumber: function() {return new Object();}}; Number(__obj) throw TypeError. Actual: ' + (Number(__obj)));
 }
@@ -21,5 +21,5 @@ catch(e)
 {
   if ((e instanceof TypeError) !== true) {
     $ERROR('#1.2: var __obj = {valueOf:function(){return new Object;},toNumber: function() {return new Object();}}; Number(__obj) throw TypeError. Actual: ' + (e));
-  }  
+  }
 }
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bd.js
new file mode 100644 (file)
index 0000000..a20a4a9
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0b0_1"), NaN, "0b0_1");
+assert.sameValue(Number("0B0_1"), NaN, "0B0_1");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bds.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bd-nsl-bds.js
new file mode 100644 (file)
index 0000000..9fa08ca
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0b0_10"), NaN, "0b0_10");
+assert.sameValue(Number("0B0_10"), NaN, "0B0_10");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bd.js
new file mode 100644 (file)
index 0000000..d1121b2
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0b01_0"), NaN, "0b01_0");
+assert.sameValue(Number("0B01_0"), NaN, "0B01_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bds.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-bil-bds-nsl-bds.js
new file mode 100644 (file)
index 0000000..c55c2ea
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0b01_00"), NaN, "0b01_00");
+assert.sameValue(Number("0B01_00"), NaN, "0B01_00");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..3d75158
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `-` DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1.0e-1_0"), NaN, "1.0e-1_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..a02d0dd
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `-` DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1.0e-10_0"), NaN, "1.0e-10_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..2eda5cc
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `+` DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1.0e+1_0"), NaN, "1.0e+1_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..36d2d44
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `+` DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1.0e+10_0"), NaN, "1.0e+10_0");
+
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-nsl-dd-one-of.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..8789462
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  NonZeroDigit NumericLiteralSeparator DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+
+  DecimalDigit :: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1_0"), NaN, "1_0");
+assert.sameValue(Number("1_1"), NaN, "1_1");
+assert.sameValue(Number("1_2"), NaN, "1_2");
+assert.sameValue(Number("1_3"), NaN, "1_3");
+assert.sameValue(Number("1_4"), NaN, "1_4");
+assert.sameValue(Number("1_5"), NaN, "1_5");
+assert.sameValue(Number("1_6"), NaN, "1_6");
+assert.sameValue(Number("1_7"), NaN, "1_7");
+assert.sameValue(Number("1_8"), NaN, "1_8");
+assert.sameValue(Number("1_9"), NaN, "1_9");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
new file mode 100644 (file)
index 0000000..90ed6ce
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits `.` DecimalDigits NumericLiteralSeparator DecimalDigits
+  ExponentPart SignedInteger
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("10.00_01e2"), NaN, "10.00_01e2");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..03bf245
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: DecimalDigits NumericLiteralSeparator DecimalDigit
+info:
+  NumericLiteralSeparator ::
+    _
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("123456789_0"), NaN, "123456789_0");
+assert.sameValue(Number("123456789_1"), NaN, "123456789_1");
+assert.sameValue(Number("123456789_2"), NaN, "123456789_2");
+assert.sameValue(Number("123456789_3"), NaN, "123456789_3");
+assert.sameValue(Number("123456789_4"), NaN, "123456789_4");
+assert.sameValue(Number("123456789_5"), NaN, "123456789_5");
+assert.sameValue(Number("123456789_6"), NaN, "123456789_6");
+assert.sameValue(Number("123456789_7"), NaN, "123456789_7");
+assert.sameValue(Number("123456789_8"), NaN, "123456789_8");
+assert.sameValue(Number("123456789_9"), NaN, "123456789_9");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dd-ep.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..ac9fdc4
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `.` DecimalDigit NumericLiteralSeparator DecimalDigit ExponentPart
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number(".0_1e2"), NaN, ".0_1e2");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dds-ep.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dd-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..9a36a88
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `.` DecimalDigit NumericLiteralSeparator DecimalDigits ExponentPart
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number(".1_01e2"), NaN, ".1_01e2");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dd-ep.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..327f4a8
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `.` DecimalDigits NumericLiteralSeparator DecimalDigit ExponentPart
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number(".10_1e2"), NaN, ".10_1e2");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dds-ep.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-dot-dds-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..ea12b4a
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `.` DecimalDigits NumericLiteralSeparator DecimalDigits ExponentPart
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number(".00_01e2"), NaN, ".00_01e2");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hd.js
new file mode 100644 (file)
index 0000000..bedf2f3
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0x0_1"), NaN, "0x0_1");
+assert.sameValue(Number("0X0_1"), NaN, "0X0_1");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hds.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hd-nsl-hds.js
new file mode 100644 (file)
index 0000000..0da5df6
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0x0_10"), NaN, "0x0_10");
+assert.sameValue(Number("0X0_10"), NaN, "0X0_10");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hd.js
new file mode 100644 (file)
index 0000000..1f4a09b
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0x01_0"), NaN, "0x01_0");
+assert.sameValue(Number("0X01_0"), NaN, "0X01_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hds.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-hds-nsl-hds.js
new file mode 100644 (file)
index 0000000..70ea4f8
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0x01_00"), NaN, "0x01_00");
+assert.sameValue(Number("0X01_00"), NaN, "0X01_00");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-od-nsl-od-one-of.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-hil-od-nsl-od-one-of.js
new file mode 100644 (file)
index 0000000..ab9193a
--- /dev/null
@@ -0,0 +1,49 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0x0_0"), NaN, "0x0_0");
+assert.sameValue(Number("0x1_1"), NaN, "0x1_1");
+assert.sameValue(Number("0x2_2"), NaN, "0x2_2");
+assert.sameValue(Number("0x3_3"), NaN, "0x3_3");
+assert.sameValue(Number("0x4_4"), NaN, "0x4_4");
+assert.sameValue(Number("0x5_5"), NaN, "0x5_5");
+assert.sameValue(Number("0x6_6"), NaN, "0x6_6");
+assert.sameValue(Number("0x7_7"), NaN, "0x7_7");
+assert.sameValue(Number("0x8_8"), NaN, "0x8_8");
+assert.sameValue(Number("0x9_9"), NaN, "0x9_9");
+assert.sameValue(Number("0xa_a"), NaN, "0xa_a");
+assert.sameValue(Number("0xb_b"), NaN, "0xb_b");
+assert.sameValue(Number("0xc_c"), NaN, "0xc_c");
+assert.sameValue(Number("0xd_d"), NaN, "0xd_d");
+assert.sameValue(Number("0xe_e"), NaN, "0xe_e");
+assert.sameValue(Number("0xf_f"), NaN, "0xf_f");
+assert.sameValue(Number("0xA_A"), NaN, "0xA_A");
+assert.sameValue(Number("0xB_B"), NaN, "0xB_B");
+assert.sameValue(Number("0xC_C"), NaN, "0xC_C");
+assert.sameValue(Number("0xD_D"), NaN, "0xD_D");
+assert.sameValue(Number("0xE_E"), NaN, "0xE_E");
+assert.sameValue(Number("0xF_F"), NaN, "0xF_F");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd-one-of.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..1b48592
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  NonZeroDigit NumericLiteralSeparator DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+
+  DecimalDigit :: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1_0"), NaN, "1_0");
+assert.sameValue(Number("1_1"), NaN, "1_1");
+assert.sameValue(Number("2_2"), NaN, "2_2");
+assert.sameValue(Number("3_3"), NaN, "3_3");
+assert.sameValue(Number("4_4"), NaN, "4_4");
+assert.sameValue(Number("5_5"), NaN, "5_5");
+assert.sameValue(Number("6_6"), NaN, "6_6");
+assert.sameValue(Number("7_7"), NaN, "7_7");
+assert.sameValue(Number("8_8"), NaN, "8_8");
+assert.sameValue(Number("9_9"), NaN, "9_9");
+
+
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dd.js
new file mode 100644 (file)
index 0000000..18c74bf
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  NonZeroDigit NumericLiteralSeparator DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    ...
+    DecimalDigits DecimalDigit
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1_1"), NaN, "1_1");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dds.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-nzd-nsl-dds.js
new file mode 100644 (file)
index 0000000..66889a6
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  NonZeroDigit NumericLiteralSeparator DecimalDigits
+
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    ...
+    DecimalDigits DecimalDigit
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("1_0123456789"), NaN, "1_0123456789");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od-one-of.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od-one-of.js
new file mode 100644 (file)
index 0000000..2ea4e5f
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0o0_0"), NaN, "0o0_0");
+assert.sameValue(Number("0o1_1"), NaN, "0o1_1");
+assert.sameValue(Number("0o2_2"), NaN, "0o2_2");
+assert.sameValue(Number("0o3_3"), NaN, "0o3_3");
+assert.sameValue(Number("0o4_4"), NaN, "0o4_4");
+assert.sameValue(Number("0o5_5"), NaN, "0o5_5");
+assert.sameValue(Number("0o6_6"), NaN, "0o6_6");
+assert.sameValue(Number("0o7_7"), NaN, "0o7_7");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-od.js
new file mode 100644 (file)
index 0000000..db5c00d
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0o0_1"), NaN, "0o0_1");
+assert.sameValue(Number("0O0_1"), NaN, "0O0_1");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-ods.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-od-nsl-ods.js
new file mode 100644 (file)
index 0000000..42b00e6
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0o0_10"), NaN, "0o0_10");
+assert.sameValue(Number("0O0_10"), NaN, "0O0_10");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-od.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-od.js
new file mode 100644 (file)
index 0000000..25eba43
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0o01_0"), NaN, "0o01_0");
+assert.sameValue(Number("0O01_0"), NaN, "0O01_0");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-ods.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-oil-ods-nsl-ods.js
new file mode 100644 (file)
index 0000000..df2a703
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("0o01_00"), NaN, "0o01_00");
+assert.sameValue(Number("0O01_00"), NaN, "0O01_00");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-minus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-minus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..4c3f178
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  NumericLiteralSeparator ::
+    _
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("-123456789_0"), NaN, "-123456789_0");
+assert.sameValue(Number("-123456789_1"), NaN, "-123456789_1");
+assert.sameValue(Number("-123456789_2"), NaN, "-123456789_2");
+assert.sameValue(Number("-123456789_3"), NaN, "-123456789_3");
+assert.sameValue(Number("-123456789_4"), NaN, "-123456789_4");
+assert.sameValue(Number("-123456789_5"), NaN, "-123456789_5");
+assert.sameValue(Number("-123456789_6"), NaN, "-123456789_6");
+assert.sameValue(Number("-123456789_7"), NaN, "-123456789_7");
+assert.sameValue(Number("-123456789_8"), NaN, "-123456789_8");
+assert.sameValue(Number("-123456789_9"), NaN, "-123456789_9");
diff --git a/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/Number/string-numeric-separator-literal-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..abf01d6
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator is not valid on string conversions for ToNumber operations
+info: |
+  DecimalDigits NumericLiteralSeparator DecimalDigit
+  
+  NumericLiteralSeparator ::
+    _
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(Number("+123456789_0"), NaN, "+123456789_0");
+assert.sameValue(Number("+123456789_1"), NaN, "+123456789_1");
+assert.sameValue(Number("+123456789_2"), NaN, "+123456789_2");
+assert.sameValue(Number("+123456789_3"), NaN, "+123456789_3");
+assert.sameValue(Number("+123456789_4"), NaN, "+123456789_4");
+assert.sameValue(Number("+123456789_5"), NaN, "+123456789_5");
+assert.sameValue(Number("+123456789_6"), NaN, "+123456789_6");
+assert.sameValue(Number("+123456789_7"), NaN, "+123456789_7");
+assert.sameValue(Number("+123456789_8"), NaN, "+123456789_8");
+assert.sameValue(Number("+123456789_9"), NaN, "+123456789_9");
index d7b8086..648b7dd 100644 (file)
@@ -27,6 +27,7 @@ target.then = function(a, b) {
 };
 
 var originalFinallyHandler = function () {};
+var anonName = Object(function () {}).name;
 
 var result = Promise.prototype.finally.call(target, originalFinallyHandler, 2, 3);
 
@@ -43,11 +44,16 @@ assert.sameValue(
   'Invokes `then` method with a function as the first argument'
 );
 assert.notSameValue(firstArg, originalFinallyHandler, 'Invokes `then` method with a different fulfillment handler');
+assert.sameValue(firstArg.length, 1, 'fulfillment handler has a length of 1');
+assert.sameValue(firstArg.name, anonName, 'fulfillment handler is anonymous');
+
 assert.sameValue(
   typeof secondArg,
   'function',
   'Invokes `then` method with a function as the second argument'
 );
-assert.notSameValue(secondArg, originalFinallyHandler, 'Invokes `then` method with a different fulfillment handler');
+assert.notSameValue(secondArg, originalFinallyHandler, 'Invokes `then` method with a different rejection handler');
+assert.sameValue(secondArg.length, 1, 'rejection handler has a length of 1');
+assert.sameValue(secondArg.name, anonName, 'rejection handler is anonymous');
 
 assert.sameValue(result, returnValue, 'Returns the result of the invocation of `then`');
index f34a795..db1b151 100644 (file)
@@ -5,7 +5,6 @@ author: Jordan Harband
 description: finally on resolved Promise calls the SpeciesConstructor
 esid: sec-promise.prototype.finally
 features: [Promise.prototype.finally]
-flags: [async]
 ---*/
 
 class FooPromise extends Promise {
diff --git a/JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-different-type.js b/JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-different-type.js
new file mode 100644 (file)
index 0000000..8ee2fba
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-typedarray-typedarray
+description: >
+    When a TypedArray is created from another TypedArray with a different element-type
+    and SpeciesConstructor detaches the source buffer, AllocateArrayBuffer is still
+    executed.
+info: |
+    22.2.4.3 TypedArray ( typedArray )
+
+    ...
+    16. If IsSharedArrayBuffer(srcData) is false, then
+        a. Let bufferConstructor be ? SpeciesConstructor(srcData, %ArrayBuffer%).
+    ...
+    18. If SameValue(elementType, srcType) is true, then
+        ...
+    19. Else,
+        a. Let data be ? AllocateArrayBuffer(bufferConstructor, byteLength).
+        b. If IsDetachedBuffer(srcData) is true, throw a TypeError exception.
+    ...
+
+    24.1.1.1 AllocateArrayBuffer ( constructor, byteLength )
+
+    1. Let obj be ? OrdinaryCreateFromConstructor(constructor, "%ArrayBufferPrototype%",
+       « [[ArrayBufferData]], [[ArrayBufferByteLength]] »).
+    ...
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [TypedArray, Symbol.species]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+    var speciesCallCount = 0;
+    var bufferConstructor = Object.defineProperty({}, Symbol.species, {
+        get: function() {
+            speciesCallCount += 1;
+            $DETACHBUFFER(ta.buffer);
+            return speciesConstructor;
+        }
+    });
+
+    var prototypeCallCount = 0;
+    var speciesConstructor = Object.defineProperty(function(){}.bind(), "prototype", {
+        get: function() {
+            prototypeCallCount += 1;
+            return null;
+        }
+    });
+
+    var ta = new TA(0);
+    ta.buffer.constructor = bufferConstructor;
+
+    assert.throws(TypeError, function() {
+        var targetType = TA !== Int32Array ? Int32Array : Uint32Array;
+        new targetType(ta);
+    }, "TypeError thrown for detached source buffer");
+
+    assert.sameValue(speciesCallCount, 1, "@@species getter called once");
+    assert.sameValue(prototypeCallCount, 1, "prototype getter called once");
+});
diff --git a/JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-same-type.js b/JSTests/test262/test/built-ins/TypedArrays/typedarray-arg-detached-when-species-retrieved-same-type.js
new file mode 100644 (file)
index 0000000..978f42a
--- /dev/null
@@ -0,0 +1,64 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-typedarray-typedarray
+description: >
+    When a TypedArray is created from another TypedArray with the same element-type
+    and SpeciesConstructor detaches the source buffer, AllocateArrayBuffer is still
+    executed.
+info: |
+    22.2.4.3 TypedArray ( typedArray )
+
+    ...
+    16. If IsSharedArrayBuffer(srcData) is false, then
+        a. Let bufferConstructor be ? SpeciesConstructor(srcData, %ArrayBuffer%).
+    ...
+    18. If SameValue(elementType, srcType) is true, then
+        a. Let data be ? CloneArrayBuffer(srcData, srcByteOffset, byteLength, bufferConstructor).
+    ...
+
+    24.1.1.4 CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength, cloneConstructor )
+
+    ...
+    3. Let targetBuffer be ? AllocateArrayBuffer(cloneConstructor, srcLength).
+    4. If IsDetachedBuffer(srcBuffer) is true, throw a TypeError exception.
+    ...
+
+    24.1.1.1 AllocateArrayBuffer ( constructor, byteLength )
+
+    1. Let obj be ? OrdinaryCreateFromConstructor(constructor, "%ArrayBufferPrototype%",
+       « [[ArrayBufferData]], [[ArrayBufferByteLength]] »).
+    ...
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [TypedArray, Symbol.species]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+    var speciesCallCount = 0;
+    var bufferConstructor = Object.defineProperty({}, Symbol.species, {
+        get: function() {
+            speciesCallCount += 1;
+            $DETACHBUFFER(ta.buffer);
+            return speciesConstructor;
+        }
+    });
+
+    var prototypeCallCount = 0;
+    var speciesConstructor = Object.defineProperty(function(){}.bind(), "prototype", {
+        get: function() {
+            prototypeCallCount += 1;
+            return null;
+        }
+    });
+
+    var ta = new TA(0);
+    ta.buffer.constructor = bufferConstructor;
+
+    assert.throws(TypeError, function() {
+        new TA(ta);
+    }, "TypeError thrown for detached source buffer");
+
+    assert.sameValue(speciesCallCount, 1, "@@species getter called once");
+    assert.sameValue(prototypeCallCount, 1, "prototype getter called once");
+});
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..1b44897
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    StrDecimalDigits . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits NumericLiteralSeparator DecimalDigit
+
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1.0e-1_0"), 1.0e-1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..fc58f9c
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    StrDecimalDigits . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits NumericLiteralSeparator DecimalDigit
+
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1.0e-10_0"), 1.0e-10);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..60d7c22
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    StrDecimalDigits . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits NumericLiteralSeparator DecimalDigit
+
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1.0e+1_0"), 1.0e+1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..bc2d2a5
--- /dev/null
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    StrDecimalDigits . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits NumericLiteralSeparator DecimalDigit
+
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1.0e+10_0"), 1.0e+10);
+
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-nsl-dd-one-of.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..f9d1dec
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrUnsignedDecimalLiteral
+info: |
+
+  StrStrUnsignedDecimalLiteral :::
+    StrUnsignedDecimalLiteral
+
+
+  StrDecimalDigits :::
+    DecimalDigit
+    ...
+
+  DecimalDigit ::: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1_0"), 1);
+assert.sameValue(parseFloat("1_1"), 1);
+assert.sameValue(parseFloat("1_2"), 1);
+assert.sameValue(parseFloat("1_3"), 1);
+assert.sameValue(parseFloat("1_4"), 1);
+assert.sameValue(parseFloat("1_5"), 1);
+assert.sameValue(parseFloat("1_6"), 1);
+assert.sameValue(parseFloat("1_7"), 1);
+assert.sameValue(parseFloat("1_8"), 1);
+assert.sameValue(parseFloat("1_9"), 1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
new file mode 100644 (file)
index 0000000..380364f
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("10.00_01e2"), 10.00);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..460a6e7
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits
+info: |
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("123456789_0"), 123456789);
+assert.sameValue(parseFloat("123456789_1"), 123456789);
+assert.sameValue(parseFloat("123456789_2"), 123456789);
+assert.sameValue(parseFloat("123456789_3"), 123456789);
+assert.sameValue(parseFloat("123456789_4"), 123456789);
+assert.sameValue(parseFloat("123456789_5"), 123456789);
+assert.sameValue(parseFloat("123456789_6"), 123456789);
+assert.sameValue(parseFloat("123456789_7"), 123456789);
+assert.sameValue(parseFloat("123456789_8"), 123456789);
+assert.sameValue(parseFloat("123456789_9"), 123456789);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dd-ep.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..3224326
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    ...
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat(".0_1e2"), .0);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dds-ep.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dd-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..1d532ac
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    ...
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat(".1_01e2"), .1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dd-ep.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..e9c96b6
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat(".10_1e2"), .10);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dds-ep.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-dot-dds-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..5037e06
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - . StrDecimalDigits StrExponentPart
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    . StrDecimalDigits StrExponentPart
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat(".00_01e2"), .00);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd-one-of.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..1a5ac4c
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - NonZeroDigit NumericLiteralSeparator DecimalDigit
+info: |
+
+  StrUnsignedDecimalLiteral :::
+    StrUnsignedDecimalLiteral
+
+  NonZeroDigit ::: one of
+    1 2 3 4 5 6 7 8 9
+
+  StrDecimalDigits :::
+    DecimalDigit
+    ...
+
+  DecimalDigit ::: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1_0"), 1);
+assert.sameValue(parseFloat("1_1"), 1);
+assert.sameValue(parseFloat("2_2"), 2);
+assert.sameValue(parseFloat("3_3"), 3);
+assert.sameValue(parseFloat("4_4"), 4);
+assert.sameValue(parseFloat("5_5"), 5);
+assert.sameValue(parseFloat("6_6"), 6);
+assert.sameValue(parseFloat("7_7"), 7);
+assert.sameValue(parseFloat("8_8"), 8);
+assert.sameValue(parseFloat("9_9"), 9);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dd.js
new file mode 100644 (file)
index 0000000..e801863
--- /dev/null
@@ -0,0 +1,18 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - StrDecimalDigits
+info: |
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1_1"), 1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dds.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-nzd-nsl-dds.js
new file mode 100644 (file)
index 0000000..7ad3c31
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat - DecimalDigit
+info: |
+
+  StrDecimalDigits :::
+    DecimalDigit
+    StrDecimalDigits DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("1_0123456789"), 1);
diff --git a/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/built-ins/parseFloat/tonumber-numeric-separator-literal-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..2185463
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-tonumber-applied-to-the-string-type
+description: >
+  The NSL does not affect strings parsed by parseFloat (StrUnsignedDecimalLiteral)
+info: |
+
+  StrDecimalLiteral :::
+    StrUnsignedDecimalLiteral
+    + StrUnsignedDecimalLiteral
+    - StrUnsignedDecimalLiteral
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(parseFloat("+123456789_0"), +123456789);
+assert.sameValue(parseFloat("+123456789_1"), +123456789);
+assert.sameValue(parseFloat("+123456789_2"), +123456789);
+assert.sameValue(parseFloat("+123456789_3"), +123456789);
+assert.sameValue(parseFloat("+123456789_4"), +123456789);
+assert.sameValue(parseFloat("+123456789_5"), +123456789);
+assert.sameValue(parseFloat("+123456789_6"), +123456789);
+assert.sameValue(parseFloat("+123456789_7"), +123456789);
+assert.sameValue(parseFloat("+123456789_8"), +123456789);
+assert.sameValue(parseFloat("+123456789_9"), +123456789);
diff --git a/JSTests/test262/test/language/expressions/assignment/white-space.js b/JSTests/test262/test/language/expressions/assignment/white-space.js
new file mode 100644 (file)
index 0000000..a9ecdc6
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: >
+    White Space between LeftHandSideExpression and "=" or between "=" and
+    AssignmentExpression is allowed
+es5id: 11.13.1_A1
+---*/
+
+var x;
+
+x      =       'U+0009';
+if (x !== 'U+0009') {
+  $ERROR('#1: (x\\u0009=\\u0009true) === true');
+}
+
+x\v=\v'U+000B';
+if (x !== 'U+000B') {
+  $ERROR('#2: (x\\u000B=\\u000Btrue) === true');
+}
+
+x\f=\f'U+000C';
+if (x !== 'U+000C') {
+  $ERROR('#3: (x\\u000C=\\u000Ctrue) === true');
+}
+
+x = 'U+0020';
+if (x !== 'U+0020') {
+  $ERROR('#4: (x\\u0020=\\u0020true) === true');
+}
+
+x = 'U+00A0';
+if (x !== 'U+00A0') {
+  $ERROR('#5: (x\\u00A0=\\u00A0true) === true');
+}
+
+x\r=\r'U+000D';
+if (x !== 'U+000D') {
+  $ERROR('#7: (x\\u000D=\\u000Dtrue) === true');
+}
+
+x
=
'U+2028';
+if (x !== 'U+2028') {
+  $ERROR('#8: (x\\u2028=\\u2028true) === true');
+}
+
+x
=
'U+2029';
+if (x !== 'U+2029') {
+  $ERROR('#9: (x\\u2029=\\u2029true) === true');
+}
+
+x      \v\f  \r

=   \v\f  \r

'U+0009U+000BU+000CU+0020U+00A0U+000DU+2028U+2029';
+if (x !== 'U+0009U+000BU+000CU+0020U+00A0U+000DU+2028U+2029') {
+  $ERROR('#10: (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000D\\u2028\\u2029=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/JSTests/test262/test/language/expressions/delete/white-space-line-terminator-between-delete-unaryexpression-allowed.js b/JSTests/test262/test/language/expressions/delete/white-space-line-terminator-between-delete-unaryexpression-allowed.js
new file mode 100644 (file)
index 0000000..7d3d413
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-delete-operator
+description: >
+  White Space and Line Terminator between "delete" and UnaryExpression are allowed
+info: |
+
+  UnaryExpression :
+      delete UnaryExpression
+
+---*/
+
+var result;
+
+result = delete        0;
+assert.sameValue(result, true, '\\u0009');
+
+result = delete\v0;
+assert.sameValue(result, true, '\\u000B');
+
+result = delete\f0;
+assert.sameValue(result, true, '\\u000C');
+
+result = delete 0;
+assert.sameValue(result, true, '\\u0020');
+
+result = delete 0;
+assert.sameValue(result, true, '\\u00A0');
+
+// Line Break is intentional
+result = delete
+0;
+assert.sameValue(result, true, '\\u000A');
+
+// Line Break is intentional
+result = delete
+0;
+assert.sameValue(result, true, '\\u000D');
+
+result = delete
0;
+assert.sameValue(result, true, '\\u2028');
+
+result = delete
0;
+assert.sameValue(result, true, '\\u2029');
+
+// Line Break is intentional
+result = delete        \v\f  
+

0;
+assert.sameValue(result, true, '\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029');
@@ -7,10 +7,12 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionExpression whose FunctionBody is contained
     in strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
-        var _13_1_42_s = {};
-assert.throws(SyntaxError, function() {
-            eval("_13_1_42_s.x = function arguments() {'use strict';};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function arguments() {'use strict';});
@@ -6,10 +6,12 @@ es5id: 13.1-14-s
 description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionExpression in strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-        var _13_1_14_s = {};
-assert.throws(SyntaxError, function() {
-            eval("_13_1_14_s.x = function arguments() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function arguments() {});
@@ -7,10 +7,12 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     Identifier of a FunctionExpression whose FunctionBody is contained
     in strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
-        var _13_1_38_s = {};
-assert.throws(SyntaxError, function() {
-            eval("_13_1_38_s.x = function eval() {'use strict'; };");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function eval() {'use strict';});
@@ -6,10 +6,12 @@ es5id: 13.1-12-s
 description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     Identifier of a FunctionExpression in strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-        var _13_1_12_s = {};
-assert.throws(SyntaxError, function() {
-            eval("_13_1_12_s.x = function eval() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function eval() {});
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created in
     'strict mode' using a FunctionExpression and the function has two
     identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_8_fun = function (param, param) { };");
-});
+(function (param, param) { });
@@ -12,10 +12,12 @@ description: >
     'strict mode' using a FunctionExpression and the function has two
     identical parameters, which are separated by a unique parameter
     name
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_9_fun = function (param1, param2, param1) { };");
-});
+(function (param1, param2, param1) { });
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created in
     'strict mode' using a FunctionExpression and the function has
     three identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_10_fun = function (param, param, param) { };")
-});
+(function (param, param, param) { });
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created using
     a FunctionExpression whose FunctionBody is contained in strict
     code and the function has two identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_30_fun = function (param, param) { 'use strict'; };");
-});
+(function (param, param) { 'use strict'; });
@@ -12,10 +12,12 @@ description: >
     a FunctionExpression whose FunctionBody is strict and the function
     has two identical parameters, which are separated by a unique
     parameter name
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_32_fun = function (param1, param2, param1) { 'use strict'; };");
-});
+(function (param1, param2, param1) { 'use strict'; });
@@ -10,10 +10,12 @@ es5id: 13.1-34-s
 description: >
     Strict Mode - SyntaxError is thrown if a function declaration has
     three identical parameters with a strict mode body
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_34_fun = function (param, param, param) { 'use strict'; };")
-});
+(function (param, param, param) { 'use strict'; });
@@ -11,10 +11,12 @@ description: >
     StrictMode - SyntaxError is thrown if the identifier 'eval'
     appears within a FormalParameterList of a strict mode
     FunctionExpression when FuctionBody is strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("var _13_1_18_fun = function (eval) { 'use strict'; }");
-});
+(function (eval) { 'use strict'; });
diff --git a/JSTests/test262/test/language/expressions/tagged-template/cache-different-functions-same-site.js b/JSTests/test262/test/language/expressions/tagged-template/cache-different-functions-same-site.js
new file mode 100644 (file)
index 0000000..91a554b
--- /dev/null
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-gettemplateobject
+description: Templates are cached by source location inside a function
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
+---*/
+function tag(templateObject) {
+  previousObject = templateObject;
+}
+
+var a = 1;
+var firstObject = null;
+var previousObject = null;
+
+function factory() {
+  return function() {
+    tag`head${a}tail`;
+  }
+}
+
+factory()();
+firstObject = previousObject;
+
+assert(firstObject !== null);
+previousObject = null;
+
+factory()();
+
+assert.sameValue(
+  previousObject,
+  firstObject,
+  'The realm\'s template cache is for source code locations in a function'
+);
+
index 1ae1f2d..3c89f7f 100644 (file)
@@ -1,13 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
+esid: sec-gettemplateobject
 description: Template caching using distinct expressions within `eval`
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical but their expressions
-    evaluate to different values and the tagged template is being evaluated in
-    an `eval` context.
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -23,4 +22,4 @@ assert(firstObject !== null);
 previousObject = null;
 
 eval('tag`head${b}tail`');
-assert.sameValue(previousObject, firstObject);
+assert.notSameValue(previousObject, firstObject);
index f909e9b..35dcf44 100644 (file)
@@ -1,13 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
+esid: sec-gettemplateobject
 description: Template caching using distinct expressions within `new Function`
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical but their expressions
-    evaluate to different values and the tagged template is being evaluated in
-    an `eval` context.
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -23,8 +22,8 @@ assert(firstObject !== null);
 previousObject = null;
 
 (new Function('tag', 'a', 'b', 'return tag`head${b}tail`;'))(tag, 1, 2);
-assert.sameValue(
+assert.notSameValue(
   previousObject,
   firstObject,
-  'The realm\'s template cache is referenced when tagged templates are declared within "new Function" contexts and templated values differ'
+  'The realm\'s template cache is by site, not string contents'
 );
index 17689d8..dd0b70c 100644 (file)
@@ -1,12 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
+esid: sec-gettemplateobject
 description: Template caching using distinct expressions
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical but their expressions
-    evaluate to different values.
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -22,4 +22,4 @@ assert(firstObject !== null);
 previousObject = null;
 
 tag`head${b}tail`;
-assert.sameValue(previousObject, firstObject);
+assert.notSameValue(previousObject, firstObject);
index 7e3cbec..54ee21b 100644 (file)
@@ -1,11 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
-description: Templates are cached according to their "raw" representation
-info: |
-    The internal template registry should be queried according to the "raw"
-    strings of the tagged template.
+esid: sec-gettemplateobject
+description: Templates are cached according to their site
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 var previousObject = null;
 var firstObject = null;
index 6e02a12..bebf79b 100644 (file)
@@ -1,11 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
-description: Templates are cached according to the number of "raw" strings
-info: |
-    The internal template registry should be queried according to the number of
-    "raw" strings in the tagged template.
+esid: sec-gettemplateobject
+description: Templates are cached according to the site
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 var previousObject = null;
 var firstObject = null;
index e7e3078..3a2a24f 100644 (file)
@@ -1,12 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
-description: Template caching using identical expressions within `eval`
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical and the tagged template is
-    being evaluated in an `eval` context.
+esid: sec-gettemplateobject
+description: Templates are cached by site, even using identical expressions within `eval`
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -21,4 +21,4 @@ assert(firstObject !== null);
 previousObject = null;
 
 eval('tag`head${a}tail`');
-assert.sameValue(previousObject, firstObject);
+assert.notSameValue(previousObject, firstObject);
index da0393f..01a5dd5 100644 (file)
@@ -1,12 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
-description: Template caching using identical expressions within `new Function`
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical and the tagged template is
-    being evaluated in a `new Function` context.
+esid: sec-gettemplateobject
+description: Template caching is by site, using identical expressions within `new Function`
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -21,4 +21,4 @@ assert(firstObject !== null);
 previousObject = null;
 
 (new Function('tag', 'a', 'b', 'return tag`head${b}tail`;'))(tag, 1, 2);
-assert.sameValue(previousObject, firstObject);
+assert.notSameValue(previousObject, firstObject);
index c6a5644..436aea6 100644 (file)
@@ -1,11 +1,12 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 12.2.8
-description: Template caching using identical expressions
-info: |
-    Previously-created template objects should be retrieved from the internal
-    template registry when their source is identical.
+esid: sec-gettemplateobject
+description: Templates are cached by site, even when using identical expressions
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
 ---*/
 function tag(templateObject) {
   previousObject = templateObject;
@@ -20,8 +21,8 @@ assert(firstObject !== null);
 previousObject = null;
 
 tag`head${a}tail`;
-assert.sameValue(
+assert.notSameValue(
   previousObject,
   firstObject,
-  'The realm\'s template cache is used when tagged templates are executed in the source code directly'
+  'The realm\'s template cache is by site, not string contents'
 );
index 039d9ba..2d18539 100644 (file)
@@ -25,8 +25,7 @@ info: |
      2. Let realm be the current Realm Record.
      3. Let templateRegistry be realm.[[TemplateMap]].
      4. For each element e of templateRegistry, do
-        a, If e.[[Strings]] and rawStrings contain the same values in the same
-           order, then
+        a. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
            i. Return e.[[Array]].
 features: [cross-realm]
 ---*/
diff --git a/JSTests/test262/test/language/expressions/tagged-template/cache-same-site-top-level.js b/JSTests/test262/test/language/expressions/tagged-template/cache-same-site-top-level.js
new file mode 100644 (file)
index 0000000..6968f3f
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-gettemplateobject
+description: Templates are cached by source location inside a function
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
+---*/
+
+let templates = [];
+
+function tag(templateObject) {
+  templates.push(templateObject);
+}
+
+let a = 1;
+for (let i = 0; i < 2; i++) {
+  tag`head${a}tail`;
+}
+
+assert.sameValue(templates.length, 2);
+
+assert.sameValue(
+  templates[0],
+  templates[1],
+  'The realm\'s template cache is for source code locations in a top-level script'
+);
+
+
diff --git a/JSTests/test262/test/language/expressions/tagged-template/cache-same-site.js b/JSTests/test262/test/language/expressions/tagged-template/cache-same-site.js
new file mode 100644 (file)
index 0000000..ab37d62
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-gettemplateobject
+description: Templates are cached by source location inside a function
+info: >
+    1. For each element _e_ of _templateRegistry_, do
+      1. If _e_.[[Site]] is the same Parse Node as _templateLiteral_, then
+        1. Return _e_.[[Array]].
+---*/
+function tag(templateObject) {
+  previousObject = templateObject;
+}
+
+var a = 1;
+var firstObject = null;
+var previousObject = null;
+
+function runTemplate() {
+  tag`head${a}tail`;
+}
+
+runTemplate();
+firstObject = previousObject;
+
+assert(firstObject !== null);
+previousObject = null;
+
+runTemplate();
+
+assert.sameValue(
+  previousObject,
+  firstObject,
+  'The realm\'s template cache is for source code locations in a function'
+);
+
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd-err.js
new file mode 100644 (file)
index 0000000..3eea2a3
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the appear adjacent to `0b` | `0B` in a
+  BinaryIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0b_1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bd.js
new file mode 100644 (file)
index 0000000..36129c5
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0b0_1, 0b01);
+assert.sameValue(0B0_1, 0B01);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bd-nsl-bds.js
new file mode 100644 (file)
index 0000000..84037cc
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0b` | `0B` BinaryDigit NumericLiteralSeparator BinaryDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0b0_10, 0b010);
+assert.sameValue(0B0_10, 0B010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bd.js
new file mode 100644 (file)
index 0000000..0c96479
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0b01_0, 0b010);
+assert.sameValue(0B01_0, 0B010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bds.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-bds-nsl-bds.js
new file mode 100644 (file)
index 0000000..c7237b2
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0b` | `0B` BinaryDigits NumericLiteralSeparator BinaryDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0b01_00, 0b0100);
+assert.sameValue(0B01_00, 0B0100);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-dunder-err.js
new file mode 100644 (file)
index 0000000..9b15080
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in a BinaryIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0b0__0
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-bil-nsl-bd-err.js
new file mode 100644 (file)
index 0000000..6a6c1e4
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of a
+  BinaryIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  BinaryIntegerLiteral ::
+    0b BinaryDigits
+    0B BinaryDigits
+
+  BinaryDigits ::
+    BinaryDigit
+    BinaryDigits BinaryDigit
+    BinaryDigits NumericLiteralSeparator BinaryDigit
+
+  BinaryDigit :: one of
+    0 1
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0b0_
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..f606a7a
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `-` DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1.0e-1_0, 1.0e-10);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-minus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..11d1fbf
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `-` DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1.0e-10_0, 1.0e-100);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dd-nsl-dd.js
new file mode 100644 (file)
index 0000000..a81aa06
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `+` DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1.0e+1_0, 1.0e+10);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-dot-dd-ep-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..fb1d330
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  DecimalDigits `.` DecimalDigits ExponentPart_opt `+` DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1.0e+10_0, 1.0e+100);
+
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dd-one-of.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..72d0b97
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NonZeroDigit NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+
+  DecimalDigit :: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1_0, 10);
+assert.sameValue(1_1, 11);
+assert.sameValue(1_2, 12);
+assert.sameValue(1_3, 13);
+assert.sameValue(1_4, 14);
+assert.sameValue(1_5, 15);
+assert.sameValue(1_6, 16);
+assert.sameValue(1_7, 17);
+assert.sameValue(1_8, 18);
+assert.sameValue(1_9, 19);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-dds-dunder-err.js
new file mode 100644 (file)
index 0000000..218b0c5
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in a DecimalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+1__0123456789
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dd-nsl-err.js
new file mode 100644 (file)
index 0000000..a217b54
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+1_
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-dot-dd-nsl-dd-ep-dd.js
new file mode 100644 (file)
index 0000000..290f67b
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  DecimalDigits `.` DecimalDigits NumericLiteralSeparator DecimalDigits
+  ExponentPart SignedInteger
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(10.00_01e2, 10.0001e2);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..30591b3
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: DecimalDigits NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(123456789_0, 1234567890);
+assert.sameValue(123456789_1, 1234567891);
+assert.sameValue(123456789_2, 1234567892);
+assert.sameValue(123456789_3, 1234567893);
+assert.sameValue(123456789_4, 1234567894);
+assert.sameValue(123456789_5, 1234567895);
+assert.sameValue(123456789_6, 1234567896);
+assert.sameValue(123456789_7, 1234567897);
+assert.sameValue(123456789_8, 1234567898);
+assert.sameValue(123456789_9, 1234567899);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-dds-dunder-err.js
new file mode 100644 (file)
index 0000000..de512d3
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in DecimalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+10__0123456789
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dds-nsl-err.js
new file mode 100644 (file)
index 0000000..b55e533
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of a
+  DecimalLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+10_
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-dds-nsl-ep-dd-err.js
new file mode 100644 (file)
index 0000000..6956736
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+10.0_e1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-ep-err.js
new file mode 100644 (file)
index 0000000..74e6a5b
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear between `.` and ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+   e E
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+10._e1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dil-dot-nsl-err.js
new file mode 100644 (file)
index 0000000..46ceaf4
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of a
+  DecimalLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    DecimalIntegerLiteral . DecimalDigits_opt ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+10._
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dd-ep.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..04f1b64
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `.` DecimalDigit NumericLiteralSeparator DecimalDigit ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(.0_1e2, .01e2);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dds-ep.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dd-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..37180f4
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `.` DecimalDigit NumericLiteralSeparator DecimalDigits ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(.1_01e2, .101e2);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dd-ep.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dd-ep.js
new file mode 100644 (file)
index 0000000..4dee9bb
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `.` DecimalDigits NumericLiteralSeparator DecimalDigit ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(.10_1e2, .101e2);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dds-ep.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-dds-ep.js
new file mode 100644 (file)
index 0000000..7365bd7
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `.` DecimalDigits NumericLiteralSeparator DecimalDigits ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(.00_01e2, .0001e2);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-dds-nsl-ep-err.js
new file mode 100644 (file)
index 0000000..9d7d658
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NumericLiteralSeparator may not appear adjacent to ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+.0_e1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-ep-err.js
new file mode 100644 (file)
index 0000000..f6ad978
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear between `.` and ExponentPart
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+  ExponentIndicator :: one of
+    e E
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+._e1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-dot-nsl-err.js
new file mode 100644 (file)
index 0000000..8947cfe
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of a
+  DecimalLiteral, nor adjacent to `.`
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalLiteral ::
+    . DecimalDigits ExponentPart_opt
+
+  DecimalDigits ::
+    ...
+    DecimalDigits NumericLiteralSeparator DecimalDigit
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+._
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd-err.js
new file mode 100644 (file)
index 0000000..15120ff
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the appear adjacent to `0x` | `0X` in a
+  HexIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0x_1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hd.js
new file mode 100644 (file)
index 0000000..0b931cf
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0x0_1, 0x01);
+assert.sameValue(0X0_1, 0X01);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hds.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hd-nsl-hds.js
new file mode 100644 (file)
index 0000000..b277fde
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0x0_10, 0x010);
+assert.sameValue(0X0_10, 0X010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hd.js
new file mode 100644 (file)
index 0000000..fe6b319
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0x01_0, 0x010);
+assert.sameValue(0X01_0, 0X010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hds.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-hds-nsl-hds.js
new file mode 100644 (file)
index 0000000..f44d6ae
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0x` | `0X` HexDigits NumericLiteralSeparator HexDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0x01_00, 0x0100);
+assert.sameValue(0X01_00, 0X0100);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-dunder-err.js
new file mode 100644 (file)
index 0000000..4c0d96e
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in a HexIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0x0__0
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-nsl-hd-err.js
new file mode 100644 (file)
index 0000000..21e285c
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of a
+  HexIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0x0_
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-od-nsl-od-one-of.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-hil-od-nsl-od-one-of.js
new file mode 100644 (file)
index 0000000..8650c06
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0x` | `0X` HexDigit NumericLiteralSeparator HexDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  HexIntegerLiteral ::
+    0x HexDigits
+    0X HexDigits
+
+  HexDigits ::
+    HexDigit
+    HexDigits HexDigit
+    HexDigits NumericLiteralSeparator HexDigit
+
+  HexDigit::one of
+    0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0x0_0, 0x00);
+assert.sameValue(0x1_1, 0x11);
+assert.sameValue(0x2_2, 0x22);
+assert.sameValue(0x3_3, 0x33);
+assert.sameValue(0x4_4, 0x44);
+assert.sameValue(0x5_5, 0x55);
+assert.sameValue(0x6_6, 0x66);
+assert.sameValue(0x7_7, 0x77);
+assert.sameValue(0x8_8, 0x88);
+assert.sameValue(0x9_9, 0x99);
+assert.sameValue(0xa_a, 0xaa);
+assert.sameValue(0xb_b, 0xbb);
+assert.sameValue(0xc_c, 0xcc);
+assert.sameValue(0xd_d, 0xdd);
+assert.sameValue(0xe_e, 0xee);
+assert.sameValue(0xf_f, 0xff);
+assert.sameValue(0xA_A, 0xAA);
+assert.sameValue(0xB_B, 0xBB);
+assert.sameValue(0xC_C, 0xCC);
+assert.sameValue(0xD_D, 0xDD);
+assert.sameValue(0xE_E, 0xEE);
+assert.sameValue(0xF_F, 0xFF);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd-one-of.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd-one-of.js
new file mode 100644 (file)
index 0000000..39d0db0
--- /dev/null
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NonZeroDigit NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    DecimalDigit
+    ...
+
+  DecimalDigit :: one of
+    0 1 2 3 4 5 6 7 8 9
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1_0, 10);
+assert.sameValue(1_1, 11);
+assert.sameValue(2_2, 22);
+assert.sameValue(3_3, 33);
+assert.sameValue(4_4, 44);
+assert.sameValue(5_5, 55);
+assert.sameValue(6_6, 66);
+assert.sameValue(7_7, 77);
+assert.sameValue(8_8, 88);
+assert.sameValue(9_9, 99);
+
+
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dd.js
new file mode 100644 (file)
index 0000000..f274b19
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NonZeroDigit NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    ...
+    DecimalDigits DecimalDigit
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1_1, 11);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-dunder-err.js
new file mode 100644 (file)
index 0000000..bd72a35
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in DecimalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0__0123456789
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds-leading-zero-err.js
new file mode 100644 (file)
index 0000000..d6c6fa8
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NonZeroDigit NumericLiteralSeparator DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0_0123456789
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-nzd-nsl-dds.js
new file mode 100644 (file)
index 0000000..dcd6de0
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: NonZeroDigit NumericLiteralSeparator DecimalDigits
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  DecimalIntegerLiteral ::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+  NonZeroDigit :: one of
+    1 2 3 4 5 6 7 8 9
+
+  DecimalDigits ::
+    ...
+    DecimalDigits DecimalDigit
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(1_0123456789, 10123456789);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-dunder-err.js
new file mode 100644 (file)
index 0000000..a306c6a
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not appear adjacent to another
+  NumericLiteralSeparator in a OctalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0o0__0
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-nsl-od-err.js
new file mode 100644 (file)
index 0000000..d91bf99
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the last digit character of an
+  OctalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0o0_
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-err.js
new file mode 100644 (file)
index 0000000..8303d30
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NumericLiteralSeparator may not be the appear adjacent to `0o` | `0O` in a
+  OctalIntegerLiteral
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+0o_1
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-one-of.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od-one-of.js
new file mode 100644 (file)
index 0000000..1818505
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0o0_0, 0o00);
+assert.sameValue(0o1_1, 0o11);
+assert.sameValue(0o2_2, 0o22);
+assert.sameValue(0o3_3, 0o33);
+assert.sameValue(0o4_4, 0o44);
+assert.sameValue(0o5_5, 0o55);
+assert.sameValue(0o6_6, 0o66);
+assert.sameValue(0o7_7, 0o77);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-od.js
new file mode 100644 (file)
index 0000000..7c3952d
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0o0_1, 0o01);
+assert.sameValue(0O0_1, 0O01);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-ods.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-od-nsl-ods.js
new file mode 100644 (file)
index 0000000..44e888a
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0o` | `0O` OctalDigit NumericLiteralSeparator OctalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0o0_10, 0o010);
+assert.sameValue(0O0_10, 0O010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-od.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-od.js
new file mode 100644 (file)
index 0000000..a87372e
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0o01_0, 0o010);
+assert.sameValue(0O01_0, 0O010);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-ods.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-oil-ods-nsl-ods.js
new file mode 100644 (file)
index 0000000..d649772
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  `0o` | `0O` OctalDigits NumericLiteralSeparator OctalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  OctalIntegerLiteral ::
+    0o OctalDigits
+    0O OctalDigits
+
+  OctalDigits ::
+    OctalDigit
+    OctalDigits OctalDigit
+    OctalDigits NumericLiteralSeparator OctalDigit
+
+  OctalDigit :: one of
+    0 1 2 3 4 5 6 7
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(0o01_00, 0o0100);
+assert.sameValue(0O01_00, 0O0100);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-minus-dds-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-minus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..bf01b6a
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: DecimalDigits NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  SignedInteger ::
+    ...
+    - DecimalDigits
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(-123456789_0, -1234567890);
+assert.sameValue(-123456789_1, -1234567891);
+assert.sameValue(-123456789_2, -1234567892);
+assert.sameValue(-123456789_3, -1234567893);
+assert.sameValue(-123456789_4, -1234567894);
+assert.sameValue(-123456789_5, -1234567895);
+assert.sameValue(-123456789_6, -1234567896);
+assert.sameValue(-123456789_7, -1234567897);
+assert.sameValue(-123456789_8, -1234567898);
+assert.sameValue(-123456789_9, -1234567899);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-plus-dds-nsl-dd.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-sign-plus-dds-nsl-dd.js
new file mode 100644 (file)
index 0000000..25c7824
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: DecimalDigits NumericLiteralSeparator DecimalDigit
+info: |
+  NumericLiteralSeparator ::
+    _
+
+  SignedInteger ::
+    ...
+    + DecimalDigits
+    ...
+
+features: [numeric-separator-literal]
+---*/
+
+assert.sameValue(+123456789_0, 1234567890);
+assert.sameValue(+123456789_1, 1234567891);
+assert.sameValue(+123456789_2, 1234567892);
+assert.sameValue(+123456789_3, 1234567893);
+assert.sameValue(+123456789_4, 1234567894);
+assert.sameValue(+123456789_5, 1234567895);
+assert.sameValue(+123456789_6, 1234567896);
+assert.sameValue(+123456789_7, 1234567897);
+assert.sameValue(+123456789_8, 1234567898);
+assert.sameValue(+123456789_9, 1234567899);
diff --git a/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js b/JSTests/test262/test/language/literals/numeric/numeric-separator-literal-unicode-err.js
new file mode 100644 (file)
index 0000000..0ff093d
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: prod-NumericLiteralSeparator
+description: >
+  NonZeroDigit NumericLiteralSeparator DecimalDigits sequence expressed with
+  unicode escape sequence
+info: |
+  NumericLiteralSeparator::
+    _
+
+  DecimalIntegerLiteral::
+    ...
+    NonZeroDigit NumericLiteralSeparator_opt DecimalDigits
+
+negative:
+  phase: early
+  type: SyntaxError
+
+features: [numeric-separator-literal]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+1\u005F0123456789
index 7b1e6eb..4b76d6a 100644 (file)
@@ -2,13 +2,28 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es5id: 7.8.5-1
-description: >
-    Literal RegExp Objects - SyntaxError exception is thrown if the
-    RegularExpressionNonTerminator position of a
+esid: prod-RegularExpressionBackslashSequence
+info: |
+  RegularExpressionBackslashSequence ::
+    \ RegularExpressionNonTerminator
+
+  RegularExpressionNonTerminator ::
+    SourceCharacter but not LineTerminator
+
+    SyntaxError exception is thrown if the RegularExpressionNonTerminator position of a
     RegularExpressionBackslashSequence is a LineTerminator.
+description: >
+  A RegularExpressionBackslashSequence may not contain a LineTerminator.
 ---*/
 
 assert.throws(SyntaxError, function() {
-            eval("var regExp = /\\\rn/;");
+  eval("/\\\rn/;");
+/*
+
+The result of this string is:
+
+"/\
+n/;"
+
+*/
 });
diff --git a/JSTests/test262/test/language/statements/function/S13_A7_T2.js b/JSTests/test262/test/language/statements/function/S13_A7_T2.js
deleted file mode 100644 (file)
index b4ed77c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The FunctionBody must be SourceElements
-es5id: 13_A7_T2
-description: >
-    Inserting elements that is different from SourceElements into the
-    FunctionBody
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-try{
-       eval("function __func(){/ ABC}");
-       $ERROR('#1: eval("function __func(){/ ABC}") lead to throwing exception');
-} catch(e){
-       if(!(e instanceof SyntaxError)){
-               $ERROR('#1.1: eval("function __func(){/ ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
-       }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#3
-try{
-       eval("function __func(){&1}");
-       $ERROR('#3: eval("function __func(){&1}") lead to throwing exception');
-} catch(e){
-       if(!(e instanceof SyntaxError)){
-               $ERROR('#3.1: eval("function __func(){&1}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
-       }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#4
-try{
-       eval("function __func(){# ABC}");
-       $ERROR('#4: eval("function __func(){# ABC}") lead to throwing exception');
-} catch(e){
-       if(!(e instanceof SyntaxError)){
-               $ERROR('#4.1: eval("function __func(){# ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
-       }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
@@ -10,16 +10,17 @@ description: >
     Strict Mode - SourceElements is evaluated as strict mode code when
     the code of this FunctionBody with an inner function contains a
     Use Strict Directive
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
-        function _13_0_10_fun() {
-            function _13_0_10_inner() {
-                "use strict";
-                eval("eval = 42;");
-            }
-            _13_0_10_inner();
-        };
-assert.throws(SyntaxError, function() {
-            _13_0_10_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+function _13_0_10_fun() {
+    function _13_0_10_inner() {
+        "use strict";
+        eval = 42;
+    }
+}
@@ -10,16 +10,17 @@ description: >
     Strict Mode - SourceElements is evaluated as strict mode code when
     the code of this FunctionBody with an inner function which is in
     strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
-        function _13_0_11_fun() {
-            "use strict";
-            function _13_0_11_inner() {
-                eval("eval = 42;");
-            }
-            _13_0_11_inner();
-        };
-assert.throws(SyntaxError, function() {
-            _13_0_11_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+function _13_0_11_fun() {
+    "use strict";
+    function _13_0_11_inner() {
+        eval = 42;
+    }
+}
@@ -10,13 +10,16 @@ description: >
     Strict Mode - SourceElements is evaluated as strict mode code when
     a FunctionDeclaration that is contained in strict mode code has an
     inner function
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-        var _13_0_9_fun = function () {
-            function _13_0_9_inner() { eval("eval = 42;"); }
-            _13_0_9_inner();
-        };
-assert.throws(SyntaxError, function() {
-            _13_0_9_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+var _13_0_9_fun = function () {
+    function _13_0_9_inner() {
+        eval = 42;
+    }
+};
@@ -6,9 +6,11 @@ es5id: 13.0-1
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     two function names
+negative:
+  phase: parse
+  type: SyntaxError
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function x, y() {}");
-});
+function x, y() {}
@@ -6,9 +6,11 @@ es5id: 13.0-2
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     three function names
+negative:
+  phase: parse
+  type: SyntaxError
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function x,y,z(){}");
-});
+function x,y,z(){}
diff --git a/JSTests/test262/test/language/statements/function/invalid-function-body-1.js b/JSTests/test262/test/language/statements/function/invalid-function-body-1.js
new file mode 100644 (file)
index 0000000..9888d4d
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+    Inserting elements that is different from SourceElements into the
+    FunctionBody
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){/ ABC}
diff --git a/JSTests/test262/test/language/statements/function/invalid-function-body-2.js b/JSTests/test262/test/language/statements/function/invalid-function-body-2.js
new file mode 100644 (file)
index 0000000..bbd8c93
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+    Inserting elements that is different from SourceElements into the
+    FunctionBody
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){&1}
diff --git a/JSTests/test262/test/language/statements/function/invalid-function-body-3.js b/JSTests/test262/test/language/statements/function/invalid-function-body-3.js
new file mode 100644 (file)
index 0000000..6087c3a
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+    Inserting elements that is different from SourceElements into the
+    FunctionBody
+negative:
+  phase: parse
+  type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){# ABC}
@@ -6,9 +6,11 @@ es5id: 13.0-3
 description: >
     13.0 - property names in function definition is not allowed, add a
     new property into object
+negative:
+  phase: parse
+  type: SyntaxError
 ---*/
 
-        var obj = {};
-assert.throws(SyntaxError, function() {
-            eval("function obj.tt() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+function obj.tt() {}
@@ -6,10 +6,11 @@ es5id: 13.0-4
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     add a new property into a property which is a object
+negative:
+  phase: parse
+  type: SyntaxError
 ---*/
 
-        var obj = {};
-        obj.tt = { len: 10 };
-assert.throws(SyntaxError, function() {
-            eval("function obj.tt.ss() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+function obj.tt.ss() {}
@@ -38,6 +38,12 @@ z
 
 z();
 
-eval("function\u0009\u2029w(\u000C)\u00A0{\u000D};");
+// The following function expression is expressed with literal unicode
+// characters so that parsers may benefit from this test. The included code
+// points are as follows:
+//
+// "function\u0009\u2029w(\u000C)\u00A0{\u000D}"
+
+function       
w(\f) {\r}
 
 w();
@@ -37,4 +37,12 @@ z
 
 z();
 
-eval("function\u0009\u2029w(\u000C)\u00A0{\u000D}; w()");
+// The following function expression is expressed with literal unicode
+// characters so that parsers may benefit from this test. The included code
+// points are as follows:
+//
+// "function\u0009\u2029w(\u000C)\u00A0{\u000D}"
+
+function       
w(\f) {\r}
+
+w();
@@ -7,10 +7,12 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionDeclaration whose FunctionBody is
     contained in strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function arguments() { 'use strict'; };")
-});
+function arguments() { 'use strict'; }
@@ -6,10 +6,12 @@ es5id: 13.1-13-s
 description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     function name of a FunctionDeclaration in strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function arguments() { };")
-});
+function arguments() { }
@@ -7,10 +7,12 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     function name of a FunctionDeclaration whose FunctionBody is in
     strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function eval() { 'use strict'; };")
-});
+function eval() { 'use strict'; }
@@ -6,10 +6,12 @@ es5id: 13.1-11-s
 description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     function name of a FunctionDeclaration in strict mode
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function eval() { };")
-});
+function eval() { }
@@ -12,7 +12,7 @@ var funcA = eval("function __func\u0041(__arg){return __arg;}; __funcA");
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
 if (typeof funcA !== "function") {
-       $ERROR('#1: unicode symbols in function name are allowed');
+    $ERROR('#1: unicode symbols in function name are allowed');
 }
 //
 //////////////////////////////////////////////////////////////////////////////
@@ -11,10 +11,12 @@ description: >
     StrictMode - SyntaxError is thrown if the identifier 'arguments'
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration when FuctionBody is strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_20_fun(arguments) { 'use strict'; }");
-});
+function _13_1_20_fun(arguments) { 'use strict'; }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'arguments'
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_3_fun(arguments) { }");
-});
+function _13_1_3_fun(arguments) { }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is declared in
     'strict mode' using a FunctionDeclaration and the function has two
     identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_5_fun(param, param) { }");
-});
+function _13_1_5_fun(param, param) { }
@@ -12,10 +12,12 @@ description: >
     'strict mode' using a FunctionDeclaration and the function has two
     identical parameters, which are separated by a unique parameter
     name
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_6_fun(param1, param2, param1) { }");
-});
+function _13_1_6_fun(param1, param2, param1) { }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created in
     'strict mode' using a FunctionDeclaration and the function has
     three identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_7_fun(param, param, param) { }");
-});
+function _13_1_7_fun(param, param, param) { }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created using
     a FunctionDeclaration whose FunctionBody is contained in strict
     code and the function has two identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_24_fun(param, param) { 'use strict'; }");
-});
+function _13_1_24_fun(param, param) { 'use strict'; }
@@ -12,10 +12,12 @@ description: >
     a FunctionDeclaration whose FunctionBody is contained in strict
     code and the function has two identical parameters which are
     separated by a unique parameter name
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_26_fun(param1, param2, param1) { 'use strict'; }");
-});
+function _13_1_26_fun(param1, param2, param1) { 'use strict'; }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if a function is created using
     a FunctionDeclaration whose FunctionBody is contained in strict
     code and the function has three identical parameters
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_28_fun(param, param, param) { 'use strict'; }");
-});
+function _13_1_28_fun(param, param, param) { 'use strict'; }
@@ -11,10 +11,12 @@ description: >
     StrictMode - SyntaxError is thrown if the identifier 'eval'
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration when FuctionBody is strict code
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_16_fun(eval) { 'use strict'; }");
-});
+function _13_1_16_fun(eval) { 'use strict'; }
@@ -11,10 +11,12 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'eval'
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration
+negative:
+  phase: parse
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
+throw "Test262: This statement should not be evaluated.";
 
-assert.throws(SyntaxError, function() {
-            eval("function _13_1_1_fun(eval) { }");
-});
+function _13_1_1_fun(eval) { }
index c05c998..d8059f5 100644 (file)
@@ -1,2 +1,2 @@
 test262 remote url: https://github.com/tc39/test262.git
-test262 revision: 1bcb4fc2efeda229b0317b920420ad3a514edcc9
+test262 revision: 18c1e799a01cc976695983b61e225ce7959bdd91