From d2d7894d8a9b5d701ddffd9bd3699cd2f284b243 Mon Sep 17 00:00:00 2001 From: Mihail Stoykov Date: Thu, 5 Aug 2021 17:12:24 +0300 Subject: [PATCH 1/3] Update goja to latest master This includes but is not limited to support for destructuring, arrow functions, spread operator, rest arguments and other fixes --- go.mod | 2 +- go.sum | 4 +- js/tc39/breaking_test_errors.json | 906 ++-------------- vendor/github.com/dop251/goja/README.md | 15 +- vendor/github.com/dop251/goja/array.go | 124 +-- vendor/github.com/dop251/goja/array_sparse.go | 10 +- vendor/github.com/dop251/goja/ast/node.go | 192 +++- .../github.com/dop251/goja/builtin_array.go | 47 +- .../dop251/goja/builtin_function.go | 19 +- vendor/github.com/dop251/goja/builtin_json.go | 16 +- .../github.com/dop251/goja/builtin_object.go | 4 +- .../github.com/dop251/goja/builtin_proxy.go | 20 +- .../github.com/dop251/goja/builtin_regexp.go | 2 +- .../github.com/dop251/goja/builtin_string.go | 2 +- .../github.com/dop251/goja/builtin_symbol.go | 2 - .../dop251/goja/builtin_typedarrays.go | 129 +-- vendor/github.com/dop251/goja/compiler.go | 223 +++- .../github.com/dop251/goja/compiler_expr.go | 974 +++++++++++++++--- .../github.com/dop251/goja/compiler_stmt.go | 248 +++-- vendor/github.com/dop251/goja/destruct.go | 277 +++++ vendor/github.com/dop251/goja/func.go | 52 +- vendor/github.com/dop251/goja/go.sum | 2 - vendor/github.com/dop251/goja/object.go | 20 +- .../github.com/dop251/goja/object_dynamic.go | 12 +- .../dop251/goja/parser/expression.go | 520 +++++++++- vendor/github.com/dop251/goja/parser/lexer.go | 54 +- .../dop251/goja/parser/statement.go | 100 +- vendor/github.com/dop251/goja/proxy.go | 41 +- vendor/github.com/dop251/goja/runtime.go | 281 ++++- vendor/github.com/dop251/goja/string_ascii.go | 4 +- .../dop251/goja/token/token_const.go | 4 + vendor/github.com/dop251/goja/typedarrays.go | 140 ++- vendor/github.com/dop251/goja/value.go | 32 +- vendor/github.com/dop251/goja/vm.go | 586 ++++++++++- vendor/modules.txt | 2 +- 35 files changed, 3415 insertions(+), 1651 deletions(-) create mode 100644 vendor/github.com/dop251/goja/destruct.go diff --git a/go.mod b/go.mod index 17db1234425..7ddc235aeaf 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/PuerkitoBio/goquery v1.6.1 github.com/Soontao/goHttpDigestClient v0.0.0-20170320082612-6d28bb1415c5 github.com/andybalholm/brotli v1.0.3 - github.com/dop251/goja v0.0.0-20210712101704-705acef95ba3 + github.com/dop251/goja v0.0.0-20210804101310-32956a348b49 github.com/fatih/color v1.12.0 github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect github.com/golang/protobuf v1.4.3 diff --git a/go.sum b/go.sum index 1caa4101fd6..f5a729fd0ac 100644 --- a/go.sum +++ b/go.sum @@ -56,8 +56,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 h1:Izz0+t1Z5nI16/II7vuEo/nHjodOg0p7+OiDpjX5t1E= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dop251/goja v0.0.0-20210712101704-705acef95ba3 h1:9ILKyhZZQ3D/7Hk5io+HA7HVg9mgGn0gocu6+n6kNgQ= -github.com/dop251/goja v0.0.0-20210712101704-705acef95ba3/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja v0.0.0-20210804101310-32956a348b49 h1:CtSi0QlA2Hy+nOh8JAZoiEBLW5pliAiKJ3l1Iq1472I= +github.com/dop251/goja v0.0.0-20210804101310-32956a348b49/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= diff --git a/js/tc39/breaking_test_errors.json b/js/tc39/breaking_test_errors.json index 1cf87f67ea2..f5af7754590 100644 --- a/js/tc39/breaking_test_errors.json +++ b/js/tc39/breaking_test_errors.json @@ -1,8 +1,8 @@ { "test/annexB/built-ins/Function/createdynfn-html-close-comment-body.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-close-comment-body.js: SyntaxError: SyntaxError: : Line 2:3 Unexpected token > (and 3 more errors) ", - "test/annexB/built-ins/Function/createdynfn-html-close-comment-params.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-close-comment-params.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected token -- (and 1 more errors) ", + "test/annexB/built-ins/Function/createdynfn-html-close-comment-params.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-close-comment-params.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected token -- (and 5 more errors) ", "test/annexB/built-ins/Function/createdynfn-html-open-comment-body.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-open-comment-body.js: SyntaxError: SyntaxError: : Line 1:23 Unexpected token < (and 2 more errors) ", - "test/annexB/built-ins/Function/createdynfn-html-open-comment-params.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-open-comment-params.js: SyntaxError: SyntaxError: : Line 1:21 Unexpected token < (and 2 more errors) ", + "test/annexB/built-ins/Function/createdynfn-html-open-comment-params.js-strict:true": "test/annexB/built-ins/Function/createdynfn-html-open-comment-params.js: SyntaxError: SyntaxError: : Line 1:21 Unexpected token < (and 5 more errors) ", "test/annexB/built-ins/Function/createdynfn-no-line-terminator-html-close-comment-body.js-strict:true": "test/annexB/built-ins/Function/createdynfn-no-line-terminator-html-close-comment-body.js: SyntaxError: SyntaxError: : Line 1:25 Unexpected token > (and 3 more errors) ", "test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.js-strict:true": "test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.js: Test262Error: Code unit: d800 Expected SameValue(«\\\\\\ud800», «\\�») to be true ", "test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.js-strict:true": "test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.js: Test262Error: Code unit: d800 Expected SameValue(«a\\\\\\ud800», «a\\�») to be true ", @@ -14,15 +14,9 @@ "test/built-ins/Array/length/define-own-prop-length-coercion-order-set.js-strict:true": "test/built-ins/Array/length/define-own-prop-length-coercion-order-set.js: Test262Error: Expected [number] and [number, number] to have the same contents. ", "test/built-ins/Array/length/define-own-prop-length-coercion-order.js-strict:true": "test/built-ins/Array/length/define-own-prop-length-coercion-order.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/built-ins/Array/length/define-own-prop-length-overflow-order.js-strict:true": "test/built-ins/Array/length/define-own-prop-length-overflow-order.js: Test262Error: Expected a RangeError but got a TypeError ", - "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-bad-throws.js-strict:true": "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-bad-throws.js: Test262Error: throw TypeError if @@species is a number Expected a TypeError to be thrown but no exception was thrown at all ", - "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor-poisoned-throws.js-strict:true": "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor-poisoned-throws.js: Test262Error: Return abrupt completion from species custom ctor Expected a Test262Error to be thrown but no exception was thrown at all ", - "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor.js-strict:true": "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-custom-ctor.js: Test262Error: returned value is an instance of custom ctor ", - "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species.js-strict:true": "test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species.js: Test262Error: got species once Expected SameValue(«0», «1») to be true ", "test/built-ins/Array/prototype/reverse/length-exceeding-integer-limit-with-proxy.js-strict:true": "test/built-ins/Array/prototype/reverse/length-exceeding-integer-limit-with-proxy.js: Test262Error: Expected [Get:length, Get:0, Get:9007199254740990, Set:0, GetOwnPropertyDescriptor:0, DefineProperty:0, Set:9007199254740990, GetOwnPropertyDescriptor:9007199254740990, DefineProperty:9007199254740990, Get:1, Get:9007199254740989, Set:1, GetOwnPropertyDescriptor:1, DefineProperty:1, Set:9007199254740989, GetOwnPropertyDescriptor:9007199254740989, DefineProperty:9007199254740989, Get:2, Get:9007199254740988, Set:2, GetOwnPropertyDescriptor:2, DefineProperty:2, Set:9007199254740988, GetOwnPropertyDescriptor:9007199254740988, DefineProperty:9007199254740988, Get:3, Get:9007199254740987, Set:3, GetOwnPropertyDescriptor:3, DefineProperty:3, Set:9007199254740987, GetOwnPropertyDescriptor:9007199254740987, DefineProperty:9007199254740987, Get:4] and [Get:length, Has:0, Get:0, Has:9007199254740990, Get:9007199254740990, Set:0, GetOwnPropertyDescriptor:0, DefineProperty:0, Set:9007199254740990, GetOwnPropertyDescriptor:9007199254740990, DefineProperty:9007199254740990, Has:1, Has:9007199254740989, Has:2, Get:2, Has:9007199254740988, Delete:2, Set:9007199254740988, GetOwnPropertyDescriptor:9007199254740988, DefineProperty:9007199254740988, Has:3, Has:9007199254740987, Get:9007199254740987, Set:3, GetOwnPropertyDescriptor:3, DefineProperty:3, Delete:9007199254740987, Has:4, Get:4] to have the same contents. ", - "test/built-ins/Array/prototype/splice/property-traps-order-with-species.js-strict:true": "test/built-ins/Array/prototype/splice/property-traps-order-with-species.js: Test262Error: Expected [defineProperty, defineProperty, set, getOwnPropertyDescriptor, defineProperty] and [defineProperty, defineProperty] to have the same contents. ", "test/built-ins/ArrayBuffer/isView/arg-is-dataview-subclass-instance.js-strict:true": "test/built-ins/ArrayBuffer/isView/arg-is-dataview-subclass-instance.js: TypeError: Constructor DataView requires 'new' ", "test/built-ins/ArrayBuffer/isView/arg-is-typedarray-subclass-instance.js-strict:true": "test/built-ins/ArrayBuffer/isView/arg-is-typedarray-subclass-instance.js: TypeError: Constructor TypedArray requires 'new' (Testing with Float64Array.) ", - "test/built-ins/ArrayBuffer/prototype/byteLength/detached-buffer.js-strict:true": "test/built-ins/ArrayBuffer/prototype/byteLength/detached-buffer.js: TypeError: ArrayBuffer is detached ", "test/built-ins/ArrayBuffer/prototype/slice/this-is-sharedarraybuffer.js-strict:true": "test/built-ins/ArrayBuffer/prototype/slice/this-is-sharedarraybuffer.js: Test262Error: `this` value cannot be a SharedArrayBuffer Expected a TypeError but got a GoError ", "test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js-strict:true": "test/built-ins/ArrayIteratorPrototype/next/detach-typedarray-in-progress.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all (Testing with Float64Array.) ", "test/built-ins/DataView/length.js-strict:true": "test/built-ins/DataView/length.js: Test262Error: descriptor value should be 1 ", @@ -36,49 +30,46 @@ "test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js-strict:true": "test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js: Test262Error: setUint8(-1.5, poisoned) Expected a RangeError but got a Test262Error ", "test/built-ins/Date/UTC/fp-evaluation-order.js-strict:true": "test/built-ins/Date/UTC/fp-evaluation-order.js: Test262Error: order of operations / precision in MakeTime Expected SameValue(«29256», «29312») to be true ", "test/built-ins/Error/prototype/toString/invalid-receiver.js-strict:true": "test/built-ins/Error/prototype/toString/invalid-receiver.js: Test262Error: Error.prototype.toString.call(1) Expected a TypeError to be thrown but no exception was thrown at all ", - "test/built-ins/Function/StrictFunction_restricted-properties.js-strict:true": "test/built-ins/Function/StrictFunction_restricted-properties.js: Test262Error: strict Functions created using Function constructor do not have own property \"caller\" Expected SameValue(«true», «false») to be true ", "test/built-ins/Function/internals/Construct/base-ctor-revoked-proxy.js-strict:true": "test/built-ins/Function/internals/Construct/base-ctor-revoked-proxy.js: Test262Error: Expected SameValue(«object», «function») to be true ", "test/built-ins/Function/internals/Construct/derived-return-val.js-strict:true": "test/built-ins/Function/internals/Construct/derived-return-val.js: SyntaxError: test/built-ins/Function/internals/Construct/derived-return-val.js: missing super() call in constructor\n 17 | \n 18 | class C extends Object {\n> 19 | constructor() {\n | ^\n 20 | return null;\n 21 | }\n 22 | } ", "test/built-ins/Function/internals/Construct/derived-this-uninitialized.js-strict:true": "test/built-ins/Function/internals/Construct/derived-this-uninitialized.js: SyntaxError: test/built-ins/Function/internals/Construct/derived-this-uninitialized.js: missing super() call in constructor\n 19 | \n 20 | class C extends Object {\n> 21 | constructor() {}\n | ^\n 22 | }\n 23 | \n 24 | assert.throws(ReferenceError, function() { ", "test/built-ins/Function/prototype/bind/instance-length-default-value.js-strict:true": "test/built-ins/Function/prototype/bind/instance-length-default-value.js: TypeError: Cannot convert a Symbol value to a number ", "test/built-ins/Function/prototype/bind/instance-length-exceeds-int32.js-strict:true": "test/built-ins/Function/prototype/bind/instance-length-exceeds-int32.js: Test262Error: Expected SameValue(«2147483649», «2147483648») to be true ", "test/built-ins/Function/prototype/bind/instance-length-tointeger.js-strict:true": "test/built-ins/Function/prototype/bind/instance-length-tointeger.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/built-ins/Function/prototype/restricted-property-arguments.js-strict:true": "test/built-ins/Function/prototype/restricted-property-arguments.js: Test262Error: The result of %FunctionPrototype%.hasOwnProperty(\"arguments\") is true Expected SameValue(«false», «true») to be true ", - "test/built-ins/Function/prototype/restricted-property-caller.js-strict:true": "test/built-ins/Function/prototype/restricted-property-caller.js: Test262Error: The result of %FunctionPrototype%.hasOwnProperty(\"caller\") is true Expected SameValue(«false», «true») to be true ", + "test/built-ins/Function/prototype/restricted-property-arguments.js-strict:true": "test/built-ins/Function/prototype/restricted-property-arguments.js: Test262Error: Expected obj[arguments] to have configurable:true. ", + "test/built-ins/Function/prototype/restricted-property-caller.js-strict:true": "test/built-ins/Function/prototype/restricted-property-caller.js: Test262Error: Expected obj[caller] to have configurable:true. ", "test/built-ins/Function/prototype/toString/Function.js-strict:true": "test/built-ins/Function/prototype/toString/Function.js: SyntaxError: SyntaxError: : Line 1:71 Unexpected end of input (and 4 more errors) ", - "test/built-ins/Function/prototype/toString/arrow-function.js-strict:true": "test/built-ins/Function/prototype/toString/arrow-function.js: Test262Error: Conforms to NativeFunction Syntax: \"function f( /* a */a /* b */, /* c */b /* d */) /* e */ /* f */{/* g */; /* h */}\" (( /* a */ a /* b */ , /* c */ b /* d */ ) /* e */ => /* f */ { /* g */ ; /* h */ }) ", "test/built-ins/Function/prototype/toString/class-declaration-complex-heritage.js-strict:true": "test/built-ins/Function/prototype/toString/class-declaration-complex-heritage.js: Test262Error: Conforms to NativeFunction Syntax: \"function A() {_classCallCheck(this, A);return _possibleConstructorReturn(this, (A.__proto__ || Object.getPrototypeOf(A)).apply(this, arguments));}\" (class /* a */ A /* b */ extends /* c */ class /* d */ B /* e */ { /* f */ } /* g */ { /* h */ }) ", "test/built-ins/Function/prototype/toString/class-declaration-explicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-declaration-explicit-ctor.js: SyntaxError: test/built-ins/Function/prototype/toString/class-declaration-explicit-ctor.js: missing super() call in constructor\n 9 | ---*/\n 10 | \n> 11 | /* before */class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }/* after */\n | ^\n 12 | \n 13 | assertToStringOrNativeFunction(A, \"class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }\");\n 14 | ", "test/built-ins/Function/prototype/toString/class-declaration-implicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-declaration-implicit-ctor.js: Test262Error: Conforms to NativeFunction Syntax: \"function A() {_classCallCheck(this, A);}\" (class /* a */ A /* b */ { /* c */ }) ", "test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js: SyntaxError: test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js: missing super() call in constructor\n 9 | ---*/\n 10 | \n> 11 | let A = /* before */class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }/* after */;\n | ^\n 12 | \n 13 | assertToStringOrNativeFunction(A, \"class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }\");\n 14 | ", "test/built-ins/Function/prototype/toString/class-expression-implicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-expression-implicit-ctor.js: Test262Error: Conforms to NativeFunction Syntax: \"function A() {_classCallCheck(this, A);}\" (class /* a */ A /* b */ { /* c */ }) ", - "test/built-ins/Function/prototype/toString/function-declaration-non-simple-parameter-list.js-strict:true": "test/built-ins/Function/prototype/toString/function-declaration-non-simple-parameter-list.js: Test262Error: Conforms to NativeFunction Syntax: \"function /* a */f /* b */() /* m */{let a /* d */ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : /* c */ /* e */0;let /* f */ /* g */_ref /* l */ = arguments[1];var _ref$b = _ref.b /* i */;let b = _ref$b === undefined ? /* h */ /* j */0 : _ref$b;}\" (function /* a */ f /* b */ ( /* c */ a /* d */ = /* e */ 0 /* f */ , /* g */ { /* h */ b /* i */ = /* j */ 0 /* k */ } /* l */ ) /* m */ { /* n */ }) ", "test/built-ins/Function/prototype/toString/getter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/getter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/getter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/getter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", - "test/built-ins/Function/prototype/toString/getter-object.js-strict:true": "test/built-ins/Function/prototype/toString/getter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"f /* b */() /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", + "test/built-ins/Function/prototype/toString/getter-object.js-strict:true": "test/built-ins/Function/prototype/toString/getter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/method-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* before */ /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", "test/built-ins/Function/prototype/toString/method-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", "test/built-ins/Function/prototype/toString/method-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* before */ /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", "test/built-ins/Function/prototype/toString/method-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", - "test/built-ins/Function/prototype/toString/method-computed-property-name.js-strict:true": "test/built-ins/Function/prototype/toString/method-computed-property-name.js: Test262Error: Conforms to NativeFunction Syntax: \"function () /* before */ /* c */ /* d */ /* e */{}\" ([ /* a */ \"f\" /* b */ ] /* c */ ( /* d */ ) /* e */ { /* f */ }) ", - "test/built-ins/Function/prototype/toString/method-object.js-strict:true": "test/built-ins/Function/prototype/toString/method-object.js: Test262Error: Conforms to NativeFunction Syntax: \"( /* b */ ) /* c */ { /* d */ }\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", + "test/built-ins/Function/prototype/toString/method-computed-property-name.js-strict:true": "test/built-ins/Function/prototype/toString/method-computed-property-name.js: Test262Error: Conforms to NativeFunction Syntax: \"\" ([ /* a */ \"f\" /* b */ ] /* c */ ( /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/method-object.js-strict:true": "test/built-ins/Function/prototype/toString/method-object.js: Test262Error: Conforms to NativeFunction Syntax: \"\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", "test/built-ins/Function/prototype/toString/private-method-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/private-method-class-expression.js: SyntaxError: test/built-ins/Function/prototype/toString/private-method-class-expression.js: Unexpected character '#' (12:14)\n 10 | \n 11 | let c = new (class {\n> 12 | /* before */#f /* a */ ( /* b */ ) /* c */ { /* d */ }/* after */\n | ^\n 13 | assert(expected) {\n 14 | assertToStringOrNativeFunction(this.#f, expected);\n 15 | } ", "test/built-ins/Function/prototype/toString/private-method-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/private-method-class-statement.js: SyntaxError: test/built-ins/Function/prototype/toString/private-method-class-statement.js: Unexpected character '#' (12:14)\n 10 | \n 11 | class C {\n> 12 | /* before */#f /* a */ ( /* b */ ) /* c */ { /* d */ }/* after */\n | ^\n 13 | assert(expected) {\n 14 | assertToStringOrNativeFunction(this.#f, expected);\n 15 | } ", "test/built-ins/Function/prototype/toString/private-static-method-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/private-static-method-class-expression.js: SyntaxError: test/built-ins/Function/prototype/toString/private-static-method-class-expression.js: Unexpected character '#' (12:21)\n 10 | \n 11 | let C = class {\n> 12 | /* before */static #f /* a */ ( /* b */ ) /* c */ { /* d */ }/* after */\n | ^\n 13 | static assert(expected) {\n 14 | assertToStringOrNativeFunction(this.#f, expected);\n 15 | } ", "test/built-ins/Function/prototype/toString/private-static-method-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/private-static-method-class-statement.js: SyntaxError: test/built-ins/Function/prototype/toString/private-static-method-class-statement.js: Unexpected character '#' (12:21)\n 10 | \n 11 | class C {\n> 12 | /* before */static #f /* a */ ( /* b */ ) /* c */ { /* d */ }/* after */\n | ^\n 13 | static assert(expected) {\n 14 | assertToStringOrNativeFunction(this.#f, expected);\n 15 | } ", - "test/built-ins/Function/prototype/toString/proxy-arrow-function.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-arrow-function.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [function () {}] }\" ", + "test/built-ins/Function/prototype/toString/proxy-arrow-function.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-arrow-function.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [() => {}] }\" ", "test/built-ins/Function/prototype/toString/proxy-bound-function.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-bound-function.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [bound ] }\" ", "test/built-ins/Function/prototype/toString/proxy-class.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-class.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [function _class() {_classCallCheck(this, _class);}] }\" ", "test/built-ins/Function/prototype/toString/proxy-function-expression.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-function-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [function() {}] }\" ", - "test/built-ins/Function/prototype/toString/proxy-method-definition.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-method-definition.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [() {}] }\" ", + "test/built-ins/Function/prototype/toString/proxy-method-definition.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-method-definition.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [] }\" ", "test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/built-ins/Function/prototype/toString/setter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/setter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/setter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/setter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", - "test/built-ins/Function/prototype/toString/setter-object.js-strict:true": "test/built-ins/Function/prototype/toString/setter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"f /* b */( /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/setter-object.js-strict:true": "test/built-ins/Function/prototype/toString/setter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/unicode.js-strict:true": "test/built-ins/Function/prototype/toString/unicode.js: Test262Error: Conforms to NativeFunction Syntax: \"function a(b, c) {b = c;return b;}\" (function \\u0061(\\u{62}, \\u0063) { \\u0062 = \\u{00063}; return b; }) ", "test/built-ins/JSON/parse/reviver-array-get-prop-from-prototype.js-strict:true": "test/built-ins/JSON/parse/reviver-array-get-prop-from-prototype.js: Test262Error: Expected SameValue(«2», «3») to be true ", "test/built-ins/JSON/parse/reviver-object-get-prop-from-prototype.js-strict:true": "test/built-ins/JSON/parse/reviver-object-get-prop-from-prototype.js: Test262Error: Expected true but got false ", @@ -151,7 +142,6 @@ "test/built-ins/Object/subclass-object-arg.js-strict:true": "test/built-ins/Object/subclass-object-arg.js: Test262Error: Expected SameValue(«1», «undefined») to be true ", "test/built-ins/Proxy/construct/trap-is-undefined-target-is-proxy.js-strict:true": "test/built-ins/Proxy/construct/trap-is-undefined-target-is-proxy.js: TypeError: Cannot call a class as a function ", "test/built-ins/Proxy/create-handler-is-revoked-proxy.js-strict:true": "test/built-ins/Proxy/create-handler-is-revoked-proxy.js: TypeError: Cannot create proxy with a revoked proxy as handler ", - "test/built-ins/Proxy/create-target-is-not-callable.js-strict:true": "panic while running test/built-ins/Proxy/create-target-is-not-callable.js: runtime error: invalid memory address or nil pointer dereference", "test/built-ins/Proxy/create-target-is-revoked-function-proxy.js-strict:true": "test/built-ins/Proxy/create-target-is-revoked-function-proxy.js: TypeError: Cannot create proxy with a revoked proxy as target ", "test/built-ins/Proxy/create-target-is-revoked-proxy.js-strict:true": "test/built-ins/Proxy/create-target-is-revoked-proxy.js: TypeError: Cannot create proxy with a revoked proxy as target ", "test/built-ins/Proxy/defineProperty/trap-is-missing-target-is-proxy.js-strict:true": "test/built-ins/Proxy/defineProperty/trap-is-missing-target-is-proxy.js: Test262Error: Expected SameValue(«undefined», «4») to be true ", @@ -160,7 +150,6 @@ "test/built-ins/Proxy/preventExtensions/trap-is-missing-target-is-proxy.js-strict:true": "test/built-ins/Proxy/preventExtensions/trap-is-missing-target-is-proxy.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/built-ins/Proxy/preventExtensions/trap-is-undefined-target-is-proxy.js-strict:true": "test/built-ins/Proxy/preventExtensions/trap-is-undefined-target-is-proxy.js: ReferenceError: require is not defined ", "test/built-ins/Proxy/revocable/handler-is-revoked-proxy.js-strict:true": "test/built-ins/Proxy/revocable/handler-is-revoked-proxy.js: TypeError: Cannot create proxy with a revoked proxy as handler ", - "test/built-ins/Proxy/revocable/revocation-function-name.js-strict:true": "test/built-ins/Proxy/revocable/revocation-function-name.js: Test262Error: obj should have an own property name ", "test/built-ins/Proxy/revocable/target-is-revoked-function-proxy.js-strict:true": "test/built-ins/Proxy/revocable/target-is-revoked-function-proxy.js: TypeError: Cannot create proxy with a revoked proxy as target ", "test/built-ins/Proxy/revocable/target-is-revoked-proxy.js-strict:true": "test/built-ins/Proxy/revocable/target-is-revoked-proxy.js: TypeError: Cannot create proxy with a revoked proxy as target ", "test/built-ins/Proxy/set/trap-is-null-target-is-proxy.js-strict:true": "test/built-ins/Proxy/set/trap-is-null-target-is-proxy.js: Test262Error: Expected true but got false ", @@ -211,12 +200,9 @@ "test/built-ins/RegExp/named-groups/unicode-property-names-valid.js-strict:true": "test/built-ins/RegExp/named-groups/unicode-property-names-valid.js: SyntaxError: Invalid regular expression (regexp2): (?<\\u{1d4d1}\\u{1d4fb}\\u{1d4f8}\\u{1d500}\\u{1d4f7}>brown) (Invalid regular expression (regexp2): (?<\\u{1d4d1}\\u{1d4fb}\\u{1d4f8}\\u{1d500}\\u{1d4f7}>brown) (error parsing regexp: invalid group name: group names must begin with a word character and have a matching terminator in `(?<\\u{1d4d1}\\u{1d4fb}\\u{1d4f8}\\u{1d500}\\u{1d4f7}>brown)`)) ", "test/built-ins/RegExp/named-groups/unicode-property-names.js-strict:true": "test/built-ins/RegExp/named-groups/unicode-property-names.js: test/built-ins/RegExp/named-groups/unicode-property-names.js: Line 18:60 Unexpected token ILLEGAL (and 5 more errors)", "test/built-ins/RegExp/named-groups/unicode-references.js-strict:true": "test/built-ins/RegExp/named-groups/unicode-references.js: TypeError: Cannot read property 'a' of undefined ", - "test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js: Test262Error: Expected SameValue(«3», «4») to be true ", - "test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js: Test262Error: Expected a Test262Error but got a SyntaxError ", - "test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", "test/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js: Test262Error: Expected SameValue(«a», «null») to be true ", "test/built-ins/RegExp/prototype/Symbol.replace/named-groups.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/named-groups.js: SyntaxError: Invalid regular expression (regexp2): (?<$𐒤>b) (Invalid regular expression (regexp2): (?<$𐒤>b) (error parsing regexp: invalid group name: group names must begin with a word character and have a matching terminator in `(?<$𐒤>b)`)) ", - "test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js: Test262Error: 0 setter should be unreachable. ", + "test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js: TypeError: object is not iterable ", "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js-strict:true": "test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js: Test262Error: Expected SameValue(«[$]b», «[toString value]b») to be true ", @@ -266,14 +252,6 @@ "test/built-ins/String/prototype/item/returns-item-relative-index.js-strict:true": "test/built-ins/String/prototype/item/returns-item-relative-index.js: Test262Error: Expected SameValue(«undefined», «function») to be true ", "test/built-ins/String/prototype/item/returns-item.js-strict:true": "test/built-ins/String/prototype/item/returns-item.js: Test262Error: Expected SameValue(«undefined», «function») to be true ", "test/built-ins/String/prototype/item/returns-undefined-for-out-of-range-index.js-strict:true": "test/built-ins/String/prototype/item/returns-undefined-for-out-of-range-index.js: Test262Error: Expected SameValue(«undefined», «function») to be true ", - "test/built-ins/String/prototype/trimEnd/this-value-object-toprimitive-call-err.js-strict:true": "test/built-ins/String/prototype/trimEnd/this-value-object-toprimitive-call-err.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", - "test/built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-priority.js: Test262Error: thisVal[Symbol.toPrimitive] expected to have been accessed. Expected SameValue(«0», «1») to be true ", - "test/built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-priority.js: Test262Error: thisVal.toString expected to have been accessed. Expected SameValue(«0», «1») to be true ", - "test/built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-priority.js: Test262Error: thisVal[Symbol.toPrimitive should have been accessed. Expected SameValue(«0», «1») to be true ", - "test/built-ins/String/prototype/trimStart/this-value-object-toprimitive-call-err.js-strict:true": "test/built-ins/String/prototype/trimStart/this-value-object-toprimitive-call-err.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", - "test/built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-priority.js: Test262Error: thisVal[Symbol.toPrimitive] expected to have been accessed. Expected SameValue(«0», «1») to be true ", - "test/built-ins/String/prototype/trimStart/this-value-object-tostring-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimStart/this-value-object-tostring-meth-priority.js: Test262Error: thisVal.toString expected to have been accessed. Expected SameValue(«0», «1») to be true ", - "test/built-ins/String/prototype/trimStart/this-value-object-valueof-meth-priority.js-strict:true": "test/built-ins/String/prototype/trimStart/this-value-object-valueof-meth-priority.js: Test262Error: thisVal[Symbol.toPrimitive should have been accessed. Expected SameValue(«0», «1») to be true ", "test/built-ins/Symbol/is-constructor.js-strict:true": "test/built-ins/Symbol/is-constructor.js: Test262Error: Expected true but got false ", "test/built-ins/Symbol/prototype/description/description-symboldescriptivestring.js-strict:true": "test/built-ins/Symbol/prototype/description/description-symboldescriptivestring.js: Test262Error: The value of symbol.description is \"foo\" Expected SameValue(«undefined», «foo») to be true ", "test/built-ins/Symbol/prototype/description/descriptor.js-strict:true": "test/built-ins/Symbol/prototype/description/descriptor.js: TypeError: Cannot read property 'set' of undefined ", @@ -286,8 +264,7 @@ "test/built-ins/ThrowTypeError/frozen.js-strict:true": "test/built-ins/ThrowTypeError/frozen.js: Test262Error: Expected SameValue(«false», «true») to be true ", "test/built-ins/ThrowTypeError/length.js-strict:true": "test/built-ins/ThrowTypeError/length.js: Test262Error: Expected obj[length] to have configurable:false. ", "test/built-ins/ThrowTypeError/name.js-strict:true": "test/built-ins/ThrowTypeError/name.js: Test262Error: descriptor value should be ; descriptor should not be configurable ", - "test/built-ins/ThrowTypeError/unique-per-realm-function-proto.js-strict:true": "test/built-ins/ThrowTypeError/unique-per-realm-function-proto.js: TypeError: Cannot read property 'get' of undefined ", - "test/built-ins/TypedArray/prototype/slice/detached-buffer-custom-ctor-other-targettype.js-strict:true": "test/built-ins/TypedArray/prototype/slice/detached-buffer-custom-ctor-other-targettype.js: Test262Error: Expected obj[0] to have configurable:true. (Testing with Float64Array.) ", + "test/built-ins/TypedArray/prototype/slice/detached-buffer-custom-ctor-other-targettype.js-strict:true": "test/built-ins/TypedArray/prototype/slice/detached-buffer-custom-ctor-other-targettype.js: Test262Error: Expected obj[0] to be configurable, but was not. (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/BigUint64Array/is-a-constructor.js-strict:true": "test/built-ins/TypedArrayConstructors/BigUint64Array/is-a-constructor.js: ReferenceError: BigUint64Array is not defined ", "test/built-ins/TypedArrayConstructors/ctors/buffer-arg/excessive-offset-throws.js-strict:true": "test/built-ins/TypedArrayConstructors/ctors/buffer-arg/excessive-offset-throws.js: Test262Error: Expected a RangeError to be thrown but no exception was thrown at all (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/ctors/buffer-arg/length-to-number-detachbuffer.js-strict:true": "test/built-ins/TypedArrayConstructors/ctors/buffer-arg/length-to-number-detachbuffer.js: Test262Error: Expected a TypeError but got a RangeError (Testing with Float64Array.) ", @@ -307,50 +284,27 @@ "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/same-ctor-buffer-ctor-species-throws.js-strict:true": "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/same-ctor-buffer-ctor-species-throws.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/use-custom-proto-if-object.js-strict:true": "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/use-custom-proto-if-object.js: TypeError: Invalid TypedArray: [object Object] (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/use-default-proto-if-custom-proto-is-not-object.js-strict:true": "test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/use-default-proto-if-custom-proto-is-not-object.js: TypeError: Invalid TypedArray: [object Object] (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation-consistent-nan.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation-consistent-nan.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/desc-value-throws.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/desc-value-throws.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-minus-zero.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-minus-zero.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-not-canonical-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-not-canonical-index.js: Test262Error: return true after defining data property [+1] Expected SameValue(«false», «true») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-not-integer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-not-integer.js: Test262Error: 0.1 Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-not-writable.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-not-writable.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/set-value.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/set-value.js: runtime error: invalid memory address or nil pointer dereference", - "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js-strict:true": "panic while running test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js: runtime error: invalid memory address or nil pointer dereference", + "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-configurable.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-configurable.js: Test262Error: defineProperty's result Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex.js: Test262Error: Expected SameValue(«false», «true») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js: Test262Error: Reflect.defineProperty(ta, 0, {value: {valueOf() {$DETACHBUFFER(ta.buffer); return 42;}}} ) must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/Delete/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-non-strict.js: TypeError: Cannot delete property '0' of 0,0 (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-non-strict.js: TypeError: Cannot delete property '1.0' of (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js: Test262Error: `delete sample[key]` throws TypeError Expected a TypeError to be thrown but no exception was thrown at all (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-non-strict.js: Test262Error: The value of `delete sample[\"0\"]` is false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js: Test262Error: `delete sample[\"0\"]` throws TypeError Expected a TypeError to be thrown but no exception was thrown at all (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-non-strict.js: Test262Error: The value of `delete sample[-0]` is false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js: TypeError: Cannot delete property '0' of 0 (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-non-strict.js: TypeError: Cannot delete property '-1' of 0 (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js: Test262Error: `delete sample[-0]` throws TypeError Expected a TypeError to be thrown but no exception was thrown at all (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-non-strict.js-strict:false": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-non-strict.js: Test262Error: The value of `delete sample[\"-1\"]` is true Expected SameValue(«false», «true») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js: TypeError: Cannot delete property '-1' of 0 (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Get/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Get/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-canonical-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-canonical-index.js: Test262Error: return value from own key [+1] Expected SameValue(«test262», «bar») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-integer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-integer.js: Test262Error: OrdinaryGet was called! Ref: 9.1.8.1 3.c (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-minus-zero.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Get/key-is-not-minus-zero.js: Test262Error: Expected SameValue(«42», «undefined») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Get/key-is-out-of-bounds.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Get/key-is-out-of-bounds.js: Test262Error: OrdinaryGet was called! Ref: 9.1.8.1 3.c (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/index-prop-desc.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/index-prop-desc.js: Test262Error: Expected obj[0] to have configurable:true. (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/key-is-minus-zero.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/key-is-minus-zero.js: Test262Error: Expected SameValue(«[object Object]», «undefined») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/key-is-not-canonical-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/key-is-not-canonical-index.js: Test262Error: undefined property [+1] Expected SameValue(«[object Object]», «undefined») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/enumerate-detached-buffer.js: Test262Error: The value of `count` is 0 Expected SameValue(«42», «0») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/index-prop-desc.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/index-prop-desc.js: Test262Error: Expected obj[0] to be configurable, but was not. (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js: Test262Error: (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/inherited-property.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/inherited-property.js: Test262Error: 42 Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-greater-than-last-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-greater-than-last-index.js: Test262Error: Reflect.has(sample, \"1\") must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-lower-than-zero.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-lower-than-zero.js: Test262Error: Reflect.has(sample, \"-1\") must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-minus-zero.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-minus-zero.js: Test262Error: Reflect.has(sample, \"-0\") must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-not-canonical-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-not-canonical-index.js: Test262Error: returns true with own key [+1] Expected SameValue(«false», «true») to be true (Testing with Float64Array.) ", "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-not-integer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/HasProperty/key-is-not-integer.js: Test262Error: 1.1 Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero.js: Test262Error: Reflect.set(sample, \"-0\", 1) must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-canonical-index.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-canonical-index.js: Test262Error: Reflect.set(sample, key, \"ecma262\") must return true Expected SameValue(«false», «true») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer.js: Test262Error: Reflect.set(sample, \"1.1\", 1) must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js: Test262Error: sample.hasOwnProperty(\"-1\") must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js: TypeError: ArrayBuffer is detached (Testing with Float64Array.) ", - "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js: Test262Error: `sample[\"1.1\"] = obj` throws Test262Error Expected a Test262Error to be thrown but no exception was thrown at all (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js: Test262Error: `sample[0] = 1` is false Expected SameValue(«1», «false») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js: Test262Error: Reflect.set(sample, \"-1\", 1) must return false Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", + "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js-strict:true": "test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js: Test262Error: Expected SameValue(«true», «false») to be true (Testing with Float64Array.) ", "test/built-ins/WeakRef/constructor.js-strict:true": "test/built-ins/WeakRef/constructor.js: Test262Error: typeof WeakRef is function Expected SameValue(«undefined», «function») to be true ", "test/built-ins/WeakRef/instance-extensible.js-strict:true": "test/built-ins/WeakRef/instance-extensible.js: ReferenceError: WeakRef is not defined ", "test/built-ins/WeakRef/is-a-constructor.js-strict:true": "test/built-ins/WeakRef/is-a-constructor.js: ReferenceError: WeakRef is not defined ", @@ -415,51 +369,11 @@ "test/language/computed-property-names/class/accessor/getter-duplicates.js-strict:true": "test/language/computed-property-names/class/accessor/getter-duplicates.js: TypeError: test/language/computed-property-names/class/accessor/getter-duplicates.js: Cannot read property '_inherits' of undefined ", "test/language/computed-property-names/class/accessor/setter-duplicates.js-strict:true": "test/language/computed-property-names/class/accessor/setter-duplicates.js: TypeError: test/language/computed-property-names/class/accessor/setter-duplicates.js: Cannot read property '_inherits' of undefined ", "test/language/computed-property-names/class/static/getter-prototype.js-strict:true": "test/language/computed-property-names/class/static/getter-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/computed-property-names/class/static/method-number.js-strict:true": "test/language/computed-property-names/class/static/method-number.js: Test262Error: Expected [prototype, 1, 2, name, length, caller, arguments, a, c] and [1, 2, length, name, prototype, a, c] to have the same contents. ", + "test/language/computed-property-names/class/static/method-number.js-strict:true": "test/language/computed-property-names/class/static/method-number.js: Test262Error: Expected [prototype, 1, 2, name, length, a, c] and [1, 2, length, name, prototype, a, c] to have the same contents. ", "test/language/computed-property-names/class/static/method-prototype.js-strict:true": "test/language/computed-property-names/class/static/method-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/computed-property-names/class/static/method-string.js-strict:true": "test/language/computed-property-names/class/static/method-string.js: Test262Error: Expected [prototype, name, length, caller, arguments, a, b, c, d] and [length, name, prototype, a, b, c, d] to have the same contents. ", - "test/language/computed-property-names/class/static/method-symbol.js-strict:true": "test/language/computed-property-names/class/static/method-symbol.js: Test262Error: Expected [prototype, name, length, caller, arguments, a, c] and [length, name, prototype, a, c] to have the same contents. ", + "test/language/computed-property-names/class/static/method-string.js-strict:true": "test/language/computed-property-names/class/static/method-string.js: Test262Error: Expected [prototype, name, length, a, b, c, d] and [length, name, prototype, a, b, c, d] to have the same contents. ", + "test/language/computed-property-names/class/static/method-symbol.js-strict:true": "test/language/computed-property-names/class/static/method-symbol.js: Test262Error: Expected [prototype, name, length, a, c] and [length, name, prototype, a, c] to have the same contents. ", "test/language/computed-property-names/class/static/setter-prototype.js-strict:true": "test/language/computed-property-names/class/static/setter-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/computed-property-names/to-name-side-effects/numbers-object.js-strict:true": "test/language/computed-property-names/to-name-side-effects/numbers-object.js: Test262Error: The result of `counter++` is `0` Expected SameValue(«1», «0») to be true ", - "test/language/computed-property-names/to-name-side-effects/object.js-strict:true": "test/language/computed-property-names/to-name-side-effects/object.js: Test262Error: The result of `counter++` is `0` Expected SameValue(«1», «0») to be true ", - "test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (11:69)\n 9 | \n 10 | const oldArguments = globalThis.arguments;\n> 11 | const f = (p = eval(\"var arguments = 'param'\"), q = () => arguments, arguments) => {}\n | ^\n 12 | assert.throws(SyntaxError, f);\n 13 | assert.sameValue(globalThis.arguments, oldArguments, \"globalThis.arguments unchanged\");\n 14 | ", - "test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (11:48)\n 9 | \n 10 | const oldArguments = globalThis.arguments;\n> 11 | const f = (p = eval(\"var arguments = 'param'\"), arguments) => {}\n | ^\n 12 | assert.throws(SyntaxError, f);\n 13 | assert.sameValue(globalThis.arguments, oldArguments, \"globalThis.arguments unchanged\");\n 14 | ", - "test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (11:11)\n 9 | \n 10 | const oldArguments = globalThis.arguments;\n> 11 | const f = (arguments, p = eval(\"var arguments = 'param'\"), q = () => arguments) => {}\n | ^\n 12 | assert.throws(SyntaxError, f);\n 13 | assert.sameValue(globalThis.arguments, oldArguments, \"globalThis.arguments unchanged\");\n 14 | ", - "test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (11:11)\n 9 | \n 10 | const oldArguments = globalThis.arguments;\n> 11 | const f = (arguments, p = eval(\"var arguments = 'param'\")) => {}\n | ^\n 12 | assert.throws(SyntaxError, f);\n 13 | assert.sameValue(globalThis.arguments, oldArguments, \"globalThis.arguments unchanged\");\n 14 | ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (13:11)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\"), q = () => arguments) => {\n> 13 | function arguments() {}\n | ^\n 14 | assert.sameValue(typeof arguments, \"function\");\n 15 | assert.sameValue(q(), \"param\");\n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (13:11)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\")) => {\n> 13 | function arguments() {}\n | ^\n 14 | assert.sameValue(typeof arguments, \"function\");\n 15 | \n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (13:11)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\"), q = () => arguments) => {\n> 13 | function arguments() {}\n | ^\n 14 | assert.sameValue(typeof arguments, \"function\");\n 15 | assert.sameValue(q(), \"param\");\n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (13:11)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\")) => {\n> 13 | function arguments() {}\n | ^\n 14 | assert.sameValue(typeof arguments, \"function\");\n 15 | \n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (13:6)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\"), q = () => arguments) => {\n> 13 | let arguments = \"local\";\n | ^\n 14 | assert.sameValue(arguments, \"local\");\n 15 | assert.sameValue(q(), \"param\");\n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (13:6)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\")) => {\n> 13 | let arguments = \"local\";\n | ^\n 14 | assert.sameValue(arguments, \"local\");\n 15 | \n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: arguments is a reserved word in strict mode (13:6)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\"), q = () => arguments) => {\n> 13 | var arguments = \"local\";\n | ^\n 14 | assert.sameValue(arguments, \"local\");\n 15 | assert.sameValue(q(), \"param\");\n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign.js: SyntaxError: test/language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign.js: arguments is a reserved word in strict mode (13:6)\n 11 | let count = 0;\n 12 | const f = (p = eval(\"var arguments = 'param'\")) => {\n> 13 | var arguments = \"local\";\n | ^\n 14 | assert.sameValue(arguments, \"local\");\n 15 | \n 16 | count++; ", - "test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js-strict:false": "test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: ReferenceError: arguments is not defined ", - "test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign.js-strict:false": "test/language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign.js: ReferenceError: arguments is not defined ", - "test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:48)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:38)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:11)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:11)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function f(arguments, p = eval(\"var arguments\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | function f(p = eval(\"var arguments = 'param'\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | function f(p = eval(\"var arguments\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | function f(p = eval(\"var arguments = 'param'\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | function f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: TypeError: Value is not an object: undefined ", - "test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: TypeError: Value is not an object: undefined ", - "test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:54)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:44)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:17)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:17)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function(arguments, p = eval(\"var arguments\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | let f = function(p = eval(\"var arguments = 'param'\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | let f = function(p = eval(\"var arguments\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function(p = eval(\"var arguments = 'param'\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: TypeError: Value is not an object: undefined ", - "test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: TypeError: Value is not an object: undefined ", "test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:50)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function * f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:40)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function * f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:13)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | function * f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", @@ -470,8 +384,8 @@ "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | function * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:9 Unexpected token * (and 4 more errors)", - "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:9 Unexpected token * (and 4 more errors)", + "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:9 Unexpected token * (and 9 more errors)", + "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:9 Unexpected token * (and 9 more errors)", "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:58)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:48)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:21)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", @@ -482,8 +396,8 @@ "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 3 more errors)", - "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 3 more errors)", + "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 10 more errors)", + "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 10 more errors)", "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:57)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:47)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:20)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", @@ -494,8 +408,8 @@ "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function * (p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * (p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * (p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 3 more errors)", - "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 3 more errors)", + "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 10 more errors)", + "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 10 more errors)", "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:51)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:41)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", "test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:14)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", @@ -506,225 +420,33 @@ "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let o = { * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }};\n 17 | assert.throws(SyntaxError, o.f);\n 18 | ", "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:12 Unexpected identifier (and 8 more errors)", - "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:12 Unexpected identifier (and 8 more errors)", + "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:12 Unexpected identifier (and 15 more errors)", + "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:12 Unexpected identifier (and 15 more errors)", "test/language/eval-code/direct/lex-env-distinct-cls.js-strict:true": "test/language/eval-code/direct/lex-env-distinct-cls.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/eval-code/direct/lex-env-no-init-cls.js-strict:true": "test/language/eval-code/direct/lex-env-no-init-cls.js: Test262Error: Expected a ReferenceError but got a SyntaxError ", - "test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:49)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", - "test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:39)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", - "test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:12)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", - "test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:12)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { f(arguments, p = eval(\"var arguments\")) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | let o = { f(p = eval(\"var arguments = 'param'\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments.js: arguments is a reserved word in strict mode (14:11)\n 12 | \n 13 | let o = { f(p = eval(\"var arguments\")) {\n> 14 | function arguments() {}\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let o = { f(p = eval(\"var arguments = 'param'\")) {\n> 15 | let arguments;\n | ^\n 16 | }};\n 17 | assert.throws(SyntaxError, o.f);\n 18 | ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let o = { f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }};\n 17 | assert.throws(SyntaxError, o.f);\n 18 | ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: TypeError: Value is not an object: undefined ", - "test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: TypeError: Value is not an object: undefined ", "test/language/eval-code/direct/new.target-fn.js-strict:true": "test/language/eval-code/direct/new.target-fn.js: SyntaxError: SyntaxError: : Line 1:1 new.target expression is not allowed here ", "test/language/eval-code/direct/super-prop-method.js-strict:true": "test/language/eval-code/direct/super-prop-method.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/eval-code/indirect/lex-env-distinct-cls.js-strict:true": "test/language/eval-code/indirect/lex-env-distinct-cls.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/eval-code/indirect/lex-env-no-init-cls.js-strict:true": "test/language/eval-code/indirect/lex-env-no-init-cls.js: Test262Error: Expected a ReferenceError but got a SyntaxError ", - "test/language/expressions/array/spread-err-mult-err-iter-get-value.js-strict:true": "test/language/expressions/array/spread-err-mult-err-iter-get-value.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js-strict:true": "test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js: SyntaxError: test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js: Unexpected token (38:10)\n 36 | \n 37 | assert.throws(ReferenceError, function() {\n> 38 | [{a: 0, ...unresolvableReference}];\n | ^\n 39 | });\n 40 | ", - "test/language/expressions/array/spread-err-sngl-err-obj-unresolvable.js-strict:true": "test/language/expressions/array/spread-err-sngl-err-obj-unresolvable.js: SyntaxError: test/language/expressions/array/spread-err-sngl-err-obj-unresolvable.js: Unexpected token (38:4)\n 36 | \n 37 | assert.throws(ReferenceError, function() {\n> 38 | [{...unresolvableReference}];\n | ^\n 39 | });\n 40 | ", - "test/language/expressions/array/spread-mult-obj-ident.js-strict:true": "test/language/expressions/array/spread-mult-obj-ident.js: SyntaxError: test/language/expressions/array/spread-mult-obj-ident.js: Unexpected token (73:28)\n 71 | });\n 72 | callCount += 1;\n> 73 | }.apply(null, [{a: 1, b: 2, ...o}]));\n | ^\n 74 | \n 75 | assert.sameValue(callCount, 1);\n 76 | ", - "test/language/expressions/array/spread-mult-obj-null.js-strict:true": "test/language/expressions/array/spread-mult-obj-null.js: SyntaxError: test/language/expressions/array/spread-mult-obj-null.js: Unexpected token (44:28)\n 42 | assert.sameValue(Object.keys(obj).length, 2);\n 43 | callCount += 1;\n> 44 | }.apply(null, [{a: 1, b: 2, ...null}]));\n | ^\n 45 | \n 46 | assert.sameValue(callCount, 1);\n 47 | ", - "test/language/expressions/array/spread-mult-obj-undefined.js-strict:true": "test/language/expressions/array/spread-mult-obj-undefined.js: SyntaxError: test/language/expressions/array/spread-mult-obj-undefined.js: Unexpected token (44:28)\n 42 | assert.sameValue(Object.keys(obj).length, 2);\n 43 | callCount += 1;\n> 44 | }.apply(null, [{a: 1, b: 2, ...undefined}]));\n | ^\n 45 | \n 46 | assert.sameValue(callCount, 1);\n 47 | ", - "test/language/expressions/array/spread-obj-getter-descriptor.js-strict:true": "test/language/expressions/array/spread-obj-getter-descriptor.js: SyntaxError: test/language/expressions/array/spread-obj-getter-descriptor.js: Unexpected token (58:16)\n 56 | });\n 57 | callCount += 1;\n> 58 | }.apply(null, [{...o, c: 4, d: 5}]));\n | ^\n 59 | \n 60 | assert.sameValue(callCount, 1);\n 61 | ", - "test/language/expressions/array/spread-obj-getter-init.js-strict:true": "test/language/expressions/array/spread-obj-getter-init.js: SyntaxError: test/language/expressions/array/spread-obj-getter-init.js: Unexpected token (38:16)\n 36 | assert.sameValue(Object.keys(obj).length, 3);\n 37 | callCount += 1;\n> 38 | }.apply(null, [{...o, get c() { executedGetter = true; }}]));\n | ^\n 39 | \n 40 | assert.sameValue(callCount, 1);\n 41 | ", - "test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js-strict:true": "test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js: SyntaxError: test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js: Unexpected token (52:16)\n 50 | assert.sameValue(Object.keys(obj).length, 3);\n 51 | callCount += 1;\n> 52 | }.apply(null, [{...cthulhu, ...o}]));\n | ^\n 53 | \n 54 | assert.sameValue(callCount, 1);\n 55 | ", - "test/language/expressions/array/spread-obj-mult-spread-getter.js-strict:true": "test/language/expressions/array/spread-obj-mult-spread-getter.js: SyntaxError: test/language/expressions/array/spread-obj-mult-spread-getter.js: Unexpected token (52:16)\n 50 | assert.sameValue(Object.keys(obj).length, 3);\n 51 | callCount += 1;\n> 52 | }.apply(null, [{...o, c: 4, d: 5, a: 42, ...o}]));\n | ^\n 53 | \n 54 | assert.sameValue(callCount, 1);\n 55 | ", - "test/language/expressions/array/spread-obj-mult-spread.js-strict:true": "test/language/expressions/array/spread-obj-mult-spread.js: SyntaxError: test/language/expressions/array/spread-obj-mult-spread.js: Unexpected token (50:16)\n 48 | assert.sameValue(Object.keys(obj).length, 4);\n 49 | callCount += 1;\n> 50 | }.apply(null, [{...o, ...o2}]));\n | ^\n 51 | \n 52 | assert.sameValue(callCount, 1);\n 53 | ", - "test/language/expressions/array/spread-obj-null.js-strict:true": "test/language/expressions/array/spread-obj-null.js: SyntaxError: test/language/expressions/array/spread-obj-null.js: Unexpected token (42:16)\n 40 | assert.sameValue(Object.keys(obj).length, 0);\n 41 | callCount += 1;\n> 42 | }.apply(null, [{...null}]));\n | ^\n 43 | \n 44 | assert.sameValue(callCount, 1);\n 45 | ", - "test/language/expressions/array/spread-obj-override-immutable.js-strict:true": "test/language/expressions/array/spread-obj-override-immutable.js: SyntaxError: test/language/expressions/array/spread-obj-override-immutable.js: Unexpected token (51:16)\n 49 | });\n 50 | callCount += 1;\n> 51 | }.apply(null, [{...o, a: 3}]));\n | ^\n 52 | \n 53 | assert.sameValue(callCount, 1);\n 54 | ", - "test/language/expressions/array/spread-obj-overrides-prev-properties.js-strict:true": "test/language/expressions/array/spread-obj-overrides-prev-properties.js: SyntaxError: test/language/expressions/array/spread-obj-overrides-prev-properties.js: Unexpected token (48:28)\n 46 | assert.sameValue(o.b, 3);\n 47 | callCount += 1;\n> 48 | }.apply(null, [{a: 1, b: 7, ...o}]));\n | ^\n 49 | \n 50 | assert.sameValue(callCount, 1);\n 51 | ", - "test/language/expressions/array/spread-obj-skip-non-enumerable.js-strict:true": "test/language/expressions/array/spread-obj-skip-non-enumerable.js: SyntaxError: test/language/expressions/array/spread-obj-skip-non-enumerable.js: Unexpected token (36:16)\n 34 | assert.sameValue(Object.keys(obj).length, 0);\n 35 | callCount += 1;\n> 36 | }.apply(null, [{...o}]));\n | ^\n 37 | \n 38 | assert.sameValue(callCount, 1);\n 39 | ", - "test/language/expressions/array/spread-obj-spread-order.js-strict:true": "test/language/expressions/array/spread-obj-spread-order.js: SyntaxError: test/language/expressions/array/spread-obj-spread-order.js: Unexpected token (49:16)\n 47 | assert.sameValue(Object.keys(obj).length, 3);\n 48 | callCount += 1;\n> 49 | }.apply(null, [{...o}]));\n | ^\n 50 | \n 51 | assert.sameValue(callCount, 1);\n 52 | ", - "test/language/expressions/array/spread-obj-symbol-property.js-strict:true": "test/language/expressions/array/spread-obj-symbol-property.js: SyntaxError: test/language/expressions/array/spread-obj-symbol-property.js: Unexpected token (50:16)\n 48 | assert.sameValue(Object.keys(obj).length, 2);\n 49 | callCount += 1;\n> 50 | }.apply(null, [{...o, c: 4, d: 5}]));\n | ^\n 51 | \n 52 | assert.sameValue(callCount, 1);\n 53 | ", - "test/language/expressions/array/spread-obj-undefined.js-strict:true": "test/language/expressions/array/spread-obj-undefined.js: SyntaxError: test/language/expressions/array/spread-obj-undefined.js: Unexpected token (42:16)\n 40 | assert.sameValue(Object.keys(obj).length, 0);\n 41 | callCount += 1;\n> 42 | }.apply(null, [{...undefined}]));\n | ^\n 43 | \n 44 | assert.sameValue(callCount, 1);\n 45 | ", - "test/language/expressions/array/spread-obj-with-overrides.js-strict:true": "test/language/expressions/array/spread-obj-with-overrides.js: SyntaxError: test/language/expressions/array/spread-obj-with-overrides.js: Unexpected token (54:16)\n 52 | assert.sameValue(Object.keys(obj).length, 10);\n 53 | callCount += 1;\n> 54 | }.apply(null, [{...o, a: 1, b: 7, d: 5, h: -0, i: Symbol(\"foo\"), j: o}]));\n | ^\n 55 | \n 56 | assert.sameValue(callCount, 1);\n 57 | ", - "test/language/expressions/array/spread-sngl-obj-ident.js-strict:true": "test/language/expressions/array/spread-sngl-obj-ident.js: SyntaxError: test/language/expressions/array/spread-sngl-obj-ident.js: Unexpected token (59:16)\n 57 | });\n 58 | callCount += 1;\n> 59 | }.apply(null, [{...o}]));\n | ^\n 60 | \n 61 | assert.sameValue(callCount, 1);\n 62 | ", - "test/language/expressions/arrow-function/ArrowFunction_restricted-properties.js-strict:true": "test/language/expressions/arrow-function/ArrowFunction_restricted-properties.js: Test262Error: Functions created using ArrowFunction syntactic form do not have own property \"caller\" Expected SameValue(«true», «false») to be true ", - "test/language/expressions/arrow-function/arrow/binding-tests-1.js-strict:false": "test/language/expressions/arrow-function/arrow/binding-tests-1.js: SyntaxError: SyntaxError: : Line 1:2 Unexpected token ) (and 1 more errors) ", - "test/language/expressions/arrow-function/arrow/binding-tests-2.js-strict:false": "test/language/expressions/arrow-function/arrow/binding-tests-2.js: SyntaxError: SyntaxError: : Line 1:2 Unexpected token ) (and 1 more errors) ", - "test/language/expressions/arrow-function/arrow/capturing-closure-variables-2.js-strict:false": "test/language/expressions/arrow-function/arrow/capturing-closure-variables-2.js: SyntaxError: test/language/expressions/arrow-function/arrow/capturing-closure-variables-2.js: 'with' in strict mode (12:4)\n 10 | function foo(){\n 11 | var a = {a : 10};\n> 12 | with(a){\n | ^\n 13 | return () => a;\n 14 | }\n 15 | } ", - "test/language/expressions/arrow-function/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (56:9)\n 54 | var callCount = 0;\n 55 | var f;\n> 56 | f = ([...{ length }]) => {\n | ^\n 57 | assert.sameValue(length, 3);\n 58 | callCount = callCount + 1;\n 59 | }; ", - "test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/arrow-function/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (57:9)\n 55 | var callCount = 0;\n 56 | var f;\n> 57 | f = ([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) => {\n | ^\n 58 | assert.sameValue(v, 7);\n 59 | assert.sameValue(w, 8);\n 60 | assert.sameValue(x, 9); ", - "test/language/expressions/arrow-function/dstr/dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-id.js: Unexpected token (56:9)\n 54 | var callCount = 0;\n 55 | var f;\n> 56 | f = ([...{ length }] = [1, 2, 3]) => {\n | ^\n 57 | assert.sameValue(length, 3);\n 58 | callCount = callCount + 1;\n 59 | }; ", - "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (57:9)\n 55 | var callCount = 0;\n 56 | var f;\n> 57 | f = ([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) => {\n | ^\n 58 | assert.sameValue(v, 7);\n 59 | assert.sameValue(w, 8);\n 60 | assert.sameValue(x, 9); ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js: Unexpected token (45:6)\n 43 | var callCount = 0;\n 44 | var f;\n> 45 | f = ({...x} = { get v() { count++; return 2; } }) => {\n | ^\n 46 | assert.sameValue(count, 1);\n 47 | \n 48 | verifyProperty(x, \"v\", { ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (46:6)\n 44 | var callCount = 0;\n 45 | var f;\n> 46 | f = ({...rest} = o) => {\n | ^\n 47 | assert.sameValue(rest.x, undefined);\n 48 | \n 49 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js: Unexpected token (44:12)\n 42 | var callCount = 0;\n 43 | var f;\n> 44 | f = ({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) => {\n | ^\n 45 | assert.sameValue(rest.a, undefined);\n 46 | assert.sameValue(rest.b, undefined);\n 47 | ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/arrow-function/dstr/obj-ptrn-rest-getter.js: Unexpected token (45:6)\n 43 | var callCount = 0;\n 44 | var f;\n> 45 | f = ({...x}) => {\n | ^\n 46 | assert.sameValue(count, 1);\n 47 | \n 48 | verifyProperty(x, \"v\", { ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/arrow-function/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (46:6)\n 44 | var callCount = 0;\n 45 | var f;\n> 46 | f = ({...rest}) => {\n | ^\n 47 | assert.sameValue(rest.x, undefined);\n 48 | \n 49 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/arrow-function/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (44:12)\n 42 | var callCount = 0;\n 43 | var f;\n> 44 | f = ({a, b, ...rest}) => {\n | ^\n 45 | assert.sameValue(rest.a, undefined);\n 46 | assert.sameValue(rest.b, undefined);\n 47 | ", - "test/language/expressions/arrow-function/eval-var-scope-syntax-err.js-strict:false": "test/language/expressions/arrow-function/eval-var-scope-syntax-err.js: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all ", - "test/language/expressions/arrow-function/lexical-bindings-overriden-by-formal-parameters-non-strict.js-strict:false": "test/language/expressions/arrow-function/lexical-bindings-overriden-by-formal-parameters-non-strict.js: SyntaxError: test/language/expressions/arrow-function/lexical-bindings-overriden-by-formal-parameters-non-strict.js: arguments is a reserved word in strict mode (11:10)\n 9 | ---*/\n 10 | function f() {\n> 11 | return (arguments) => arguments;\n | ^\n 12 | }\n 13 | \n 14 | assert.sameValue(f(1)(2), 2); ", - "test/language/expressions/arrow-function/lexical-new.target-closure-returned.js-strict:true": "test/language/expressions/arrow-function/lexical-new.target-closure-returned.js: Test262Error: Expected SameValue(«2», «1») to be true ", - "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js-strict:true": "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: Line 36:131 Unexpected token = (and 14 more errors)", - "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js-strict:true": "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: Line 30:22 Unexpected token = (and 14 more errors)", - "test/language/expressions/arrow-function/name.js-strict:true": "test/language/expressions/arrow-function/name.js: Test262Error: obj should have an own property name ", - "test/language/expressions/arrow-function/non-strict.js-strict:false": "test/language/expressions/arrow-function/non-strict.js: ReferenceError: foo is not defined ", - "test/language/expressions/arrow-function/prototype-rules.js-strict:true": "test/language/expressions/arrow-function/prototype-rules.js: Test262Error: Expected SameValue(«true», «false») to be true ", - "test/language/expressions/arrow-function/scope-body-lex-distinct.js-strict:false": "test/language/expressions/arrow-function/scope-body-lex-distinct.js: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all ", - "test/language/expressions/arrow-function/scope-param-elem-var-close.js-strict:false": "test/language/expressions/arrow-function/scope-param-elem-var-close.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/arrow-function/scope-param-elem-var-open.js-strict:false": "test/language/expressions/arrow-function/scope-param-elem-var-open.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js-strict:false": "test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js: SyntaxError: test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js: Unexpected token (22:7)\n 20 | \n 21 | ((\n> 22 | ...[_ = (eval('var x = \"inside\";'), probeParam = function() { return x; })]\n | ^\n 23 | ) => {\n 24 | probeBody = function() { return x; }\n 25 | })(); ", - "test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js-strict:false": "test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js: SyntaxError: test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js: Unexpected token (23:7)\n 21 | ((\n 22 | _ = probe1 = function() { return x; },\n> 23 | ...[__ = (eval('var x = \"inside\";'), probe2 = function() { return x; })]\n | ^\n 24 | ) => {\n 25 | })();\n 26 | ", - "test/language/expressions/arrow-function/scope-paramsbody-var-open.js-strict:true": "test/language/expressions/arrow-function/scope-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-arguments.js-strict:false": "test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-arguments.js: SyntaxError: test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-arguments.js: arguments is a reserved word in strict mode (14:9)\n 12 | flags: [noStrict]\n 13 | ---*/\n> 14 | var af = arguments => arguments;\n | ^\n 15 | \n 16 | assert.sameValue(typeof af, \"function\");\n 17 | assert.sameValue(af(1), 1); ", - "test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-eval.js-strict:false": "test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-eval.js: SyntaxError: test/language/expressions/arrow-function/syntax/arrowparameters-bindingidentifier-eval.js: eval is a reserved word in strict mode (14:9)\n 12 | flags: [noStrict]\n 13 | ---*/\n> 14 | var af = eval => eval;\n | ^\n 15 | \n 16 | \n 17 | assert.sameValue(typeof af, \"function\"); ", - "test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-arguments.js-strict:false": "test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-arguments.js: SyntaxError: test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-arguments.js: arguments is a reserved word in strict mode (14:10)\n 12 | flags: [noStrict]\n 13 | ---*/\n> 14 | var af = (arguments) => arguments;\n | ^\n 15 | \n 16 | assert.sameValue(typeof af, \"function\");\n 17 | assert.sameValue(af(1), 1); ", - "test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-eval.js-strict:false": "test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-eval.js: SyntaxError: test/language/expressions/arrow-function/syntax/arrowparameters-cover-formalparameters-eval.js: eval is a reserved word in strict mode (14:10)\n 12 | flags: [noStrict]\n 13 | ---*/\n> 14 | var af = (eval) => eval;\n | ^\n 15 | \n 16 | assert.sameValue(typeof af, \"function\");\n 17 | assert.sameValue(af(1), 1); ", - "test/language/expressions/arrow-function/throw-new.js-strict:true": "test/language/expressions/arrow-function/throw-new.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/arrow-function/unscopables-with-in-nested-fn.js-strict:false": "test/language/expressions/arrow-function/unscopables-with-in-nested-fn.js: SyntaxError: test/language/expressions/arrow-function/unscopables-with-in-nested-fn.js: 'with' in strict mode (74:4)\n 72 | (function() {\n 73 | count++;\n> 74 | with (globalThis) {\n | ^\n 75 | count++;\n 76 | assert.sameValue(v, 1, 'The value of `v` is 1');\n 77 | } ", - "test/language/expressions/arrow-function/unscopables-with.js-strict:false": "test/language/expressions/arrow-function/unscopables-with.js: SyntaxError: test/language/expressions/arrow-function/unscopables-with.js: 'with' in strict mode (73:2)\n 71 | ref = (x) => {\n 72 | count++;\n> 73 | with (globalThis) {\n | ^\n 74 | count++;\n 75 | assert.sameValue(v, undefined, 'The value of `v` is expected to equal `undefined`');\n 76 | } ", + "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js-strict:true": "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: Line 36:231 Unexpected token ( (and 4 more errors)", + "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js-strict:true": "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: Line 30:122 Unexpected token ( (and 7 more errors)", "test/language/expressions/assignment/S11.13.1_A7_T1.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/assignment/S11.13.1_A7_T2.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/assignment/S11.13.1_A7_T3.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T3.js: Test262Error: Expected a DummyError but got a Test262Error ", - "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js-strict:false": "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js-strict:false": "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js: SyntaxError: test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js: 'with' in strict mode (23:0)\n 21 | var scope = {x: 1};\n 22 | \n> 23 | with (scope) {\n | ^\n 24 | (function() {\n 25 | \"use strict\";\n 26 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js-strict:true": "test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js: Test262Error: Expected [source, iterator, iterator-step, iterator-done, target, target-key, target-key-tostring, set] and [source, iterator, target, target-key, target-key-tostring, iterator-step, iterator-done, set] to have the same contents. ", - "test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js-strict:true": "test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js: Test262Error: Expected [source, target, target-key, source-key, source-key-tostring, get, target-key-tostring, set] and [source, source-key, source-key-tostring, target, target-key, target-key-tostring, get, set] to have the same contents. ", - "test/language/expressions/assignment/destructuring/obj-prop-__proto__dup.js-strict:true": "test/language/expressions/assignment/destructuring/obj-prop-__proto__dup.js: SyntaxError: test/language/expressions/assignment/destructuring/obj-prop-__proto__dup.js: Redefinition of __proto__ property (20:25)\n 18 | var result, x, y;\n 19 | \n> 20 | result = { __proto__: x, __proto__: y } = value;\n | ^\n 21 | \n 22 | assert.sameValue(result, value);\n 23 | assert.sameValue(x, 123, 'first AssignmentProperty'); ", - "test/language/expressions/assignment/dstr/array-elem-init-fn-name-arrow.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", + "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js-strict:false": "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js-strict:false": "test/language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/assignment/dstr/array-elem-init-fn-name-class.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/expressions/assignment/dstr/array-elem-init-fn-name-cover.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/array-elem-init-fn-name-fn.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/array-elem-init-simple-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/array-elem-init-simple-no-strict.js: SyntaxError: test/language/expressions/assignment/dstr/array-elem-init-simple-no-strict.js: eval is a reserved word in strict mode (18:14)\n 16 | BindingPattern passing rval and undefined as arguments.\n 17 | ---*/\n> 18 | var argument, eval;\n | ^\n 19 | \n 20 | var result;\n 21 | var vals = []; ", - "test/language/expressions/assignment/dstr/array-elem-iter-nrml-close-null.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-elem-iter-thrw-close-err.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-iter-thrw-close-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-elem-iter-thrw-close.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-iter-thrw-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-elem-put-unresolvable-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/array-elem-put-unresolvable-no-strict.js: ReferenceError: unresolvable is not defined ", - "test/language/expressions/assignment/dstr/array-elem-target-simple-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/array-elem-target-simple-no-strict.js: SyntaxError: test/language/expressions/assignment/dstr/array-elem-target-simple-no-strict.js: eval is a reserved word in strict mode (18:14)\n 16 | BindingPattern passing rval and undefined as arguments.\n 17 | ---*/\n> 18 | var argument, eval;\n | ^\n 19 | \n 20 | var result;\n 21 | var vals = [2, 3]; ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-elision-iter-nrml-close-null.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-elision-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-nrml-close-null.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close-err.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-list-thrw-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close-err.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close-err.js: Test262Error: Expected SameValue(«11», «1») to be true ", - "test/language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close.js-strict:true": "test/language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close.js: Test262Error: Expected SameValue(«11», «1») to be true ", - "test/language/expressions/assignment/dstr/array-elision-iter-nrml-close-null.js-strict:true": "test/language/expressions/assignment/dstr/array-elision-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-empty-iter-close-err.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-iter-close-err.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-empty-iter-close-null.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-iter-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-empty-iter-close.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-iter-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-empty-val-bool.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-val-bool.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-empty-val-num.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-val-num.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/assignment/dstr/array-empty-val-symbol.js-strict:true": "test/language/expressions/assignment/dstr/array-empty-val-symbol.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/expressions/assignment/dstr/array-rest-before-elision.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-before-elision.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignment/dstr/array-rest-elision-invalid.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-elision-invalid.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/assignment/dstr/array-rest-iter-thrw-close-err.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-iter-thrw-close-err.js: Test262Error: Expected SameValue(«11», «0») to be true ", - "test/language/expressions/assignment/dstr/array-rest-iter-thrw-close.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-iter-thrw-close.js: Test262Error: Expected SameValue(«11», «0») to be true ", - "test/language/expressions/assignment/dstr/array-rest-lref-err.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-lref-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/expressions/assignment/dstr/array-rest-nested-obj-null.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-nested-obj-null.js: SyntaxError: test/language/expressions/assignment/dstr/array-rest-nested-obj-null.js: Unexpected token (24:13)\n 22 | var vals = [null];\n 23 | \n> 24 | result = [...{ 0: x, length }] = vals;\n | ^\n 25 | \n 26 | assert.sameValue(x, null);\n 27 | assert.sameValue(length, 1); ", - "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-hole.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-hole.js: SyntaxError: test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-hole.js: Unexpected token (27:13)\n 25 | var vals = [ , ];\n 26 | \n> 27 | result = [...{ 0: x, length }] = vals;\n | ^\n 28 | \n 29 | assert.sameValue(x, undefined);\n 30 | assert.sameValue(length, 1); ", - "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-own.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-own.js: SyntaxError: test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined-own.js: Unexpected token (27:13)\n 25 | var vals = [undefined];\n 26 | \n> 27 | result = [...{ 0: x, length }] = vals;\n | ^\n 28 | \n 29 | assert.sameValue(x, undefined);\n 30 | assert.sameValue(length, 1); ", - "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined.js: SyntaxError: test/language/expressions/assignment/dstr/array-rest-nested-obj-undefined.js: Unexpected token (27:13)\n 25 | var vals = [];\n 26 | \n> 27 | result = [...{ 0: x, length }] = vals;\n | ^\n 28 | \n 29 | assert.sameValue(x, undefined);\n 30 | assert.sameValue(length, 0); ", - "test/language/expressions/assignment/dstr/array-rest-nested-obj.js-strict:true": "test/language/expressions/assignment/dstr/array-rest-nested-obj.js: SyntaxError: test/language/expressions/assignment/dstr/array-rest-nested-obj.js: Unexpected token (24:13)\n 22 | var vals = [1, 2, 3];\n 23 | \n> 24 | result = [...{ 1: x }] = vals;\n | ^\n 25 | \n 26 | assert.sameValue(x, 2);\n 27 | ", - "test/language/expressions/assignment/dstr/array-rest-put-unresolvable-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/array-rest-put-unresolvable-no-strict.js: ReferenceError: unresolvable is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-break-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-break-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-case-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-case-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-catch-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-catch-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-class-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-class-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-const-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-const-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-continue-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-continue-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-debugger-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-debugger-escaped.js: ReferenceError: x is not defined ", "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped-ext.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped-ext.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-delete-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-delete-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-do-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-do-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-else-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-else-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-enum-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-enum-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-export-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-export-escaped.js: ReferenceError: x is not defined ", "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped-ext.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped-ext.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-finally-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-finally-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-for-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-for-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-function-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-function-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-if-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-if-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-implements-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-implements-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-import-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-import-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-in-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-in-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-instanceof-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-instanceof-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-interface-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-interface-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-let-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-let-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-new-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-new-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-package-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-package-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-private-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-private-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-protected-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-protected-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-public-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-public-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-return-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-return-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-static-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-static-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-super-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-super-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-switch-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-switch-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-this-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-this-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-throw-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-throw-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-try-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-try-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-typeof-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-typeof-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-var-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-var-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-void-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-void-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-while-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-while-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-with-escaped.js-strict:false": "test/language/expressions/assignment/dstr/ident-name-prop-name-literal-with-escaped.js: ReferenceError: x is not defined ", - "test/language/expressions/assignment/dstr/obj-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/assignment/dstr/obj-id-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", "test/language/expressions/assignment/dstr/obj-id-init-fn-name-class.js-strict:true": "test/language/expressions/assignment/dstr/obj-id-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/expressions/assignment/dstr/obj-id-init-fn-name-cover.js-strict:true": "test/language/expressions/assignment/dstr/obj-id-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/obj-id-init-fn-name-fn.js-strict:true": "test/language/expressions/assignment/dstr/obj-id-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/obj-id-init-simple-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/obj-id-init-simple-no-strict.js: SyntaxError: test/language/expressions/assignment/dstr/obj-id-init-simple-no-strict.js: eval is a reserved word in strict mode (18:4)\n 16 | BindingPattern passing rval and undefined as arguments.\n 17 | ---*/\n> 18 | var eval, arguments;\n | ^\n 19 | \n 20 | var result;\n 21 | var vals = {}; ", - "test/language/expressions/assignment/dstr/obj-id-put-unresolvable-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/obj-id-put-unresolvable-no-strict.js: ReferenceError: unresolvable is not defined ", - "test/language/expressions/assignment/dstr/obj-id-simple-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/obj-id-simple-no-strict.js: SyntaxError: test/language/expressions/assignment/dstr/obj-id-simple-no-strict.js: eval is a reserved word in strict mode (18:4)\n 16 | BindingPattern passing rval and undefined as arguments.\n 17 | ---*/\n> 18 | var eval, arguments;\n | ^\n 19 | \n 20 | var result;\n 21 | var vals = { eval: 1, arguments: 2 }; ", - "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-arrow.js-strict:true": "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-class.js-strict:true": "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-cover.js-strict:true": "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-fn.js-strict:true": "test/language/expressions/assignment/dstr/obj-prop-elem-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/expressions/assignment/dstr/obj-prop-put-unresolvable-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/obj-prop-put-unresolvable-no-strict.js: ReferenceError: unresolvable is not defined ", - "test/language/expressions/assignment/dstr/obj-rest-computed-property-no-strict.js-strict:false": "test/language/expressions/assignment/dstr/obj-rest-computed-property-no-strict.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-computed-property-no-strict.js: Unexpected token (24:17)\n 22 | var vals = { foo: 1, bar: 2, baz: 3 };\n 23 | \n> 24 | result = {[a]:b, ...rest} = vals;\n | ^\n 25 | \n 26 | assert.sameValue(b, 1);\n 27 | assert.sameValue(rest.bar, 2); ", - "test/language/expressions/assignment/dstr/obj-rest-computed-property.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-computed-property.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-computed-property.js: Unexpected token (26:17)\n 24 | var vals = { foo: 1, bar: 2, baz: 3 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(b, 1);\n 29 | assert.sameValue(rest.bar, 2); ", - "test/language/expressions/assignment/dstr/obj-rest-descriptors.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-descriptors.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-descriptors.js: Unexpected token (28:10)\n 26 | var vals = obj;\n 27 | \n> 28 | result = {...rest} = vals;\n | ^\n 29 | \n 30 | verifyProperty(rest, \"a\", {\n 31 | enumerable: true, ", - "test/language/expressions/assignment/dstr/obj-rest-empty-obj.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-empty-obj.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-empty-obj.js: Unexpected token (25:10)\n 23 | var vals = {};\n 24 | \n> 25 | result = {...rest} = vals;\n | ^\n 26 | \n 27 | assert.notSameValue(rest, undefined);\n 28 | assert.notSameValue(rest, null); ", - "test/language/expressions/assignment/dstr/obj-rest-getter-abrupt-get-error.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-getter-abrupt-get-error.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-getter-abrupt-get-error.js: Unexpected token (23:6)\n 21 | \n 22 | assert.throws(Test262Error, function() {\n> 23 | 0, {...x} = { get v() { count++; throw new Test262Error(); } };\n | ^\n 24 | });\n 25 | \n 26 | assert.sameValue(count, 1); ", - "test/language/expressions/assignment/dstr/obj-rest-getter.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-getter.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-getter.js: Unexpected token (26:10)\n 24 | var vals = { get v() { count++; return 2; } };\n 25 | \n> 26 | result = {...x} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(count, 1);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1.js: Unexpected token (26:17)\n 24 | var vals = {[a]: 1, bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(b, 1);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot.js: Unexpected token (26:17)\n 24 | var vals = {[a]: [1], bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.compareArray(b, [1]);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1dot0.js: Unexpected token (26:17)\n 24 | var vals = {[a]: 1.0, bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(b, 1);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-1e0.js: Unexpected token (26:17)\n 24 | var vals = {[a]: 1e0, bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(b, 1);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1.js: Unexpected token (26:17)\n 24 | var vals = {[a]: [1], bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.compareArray(b, [1]);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-array-1e0.js: Unexpected token (26:17)\n 24 | var vals = {[a]: [1e0], bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.compareArray(b, [1]);\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-non-string-computed-property-string-1.js: Unexpected token (26:17)\n 24 | var vals = {[a]: \"1\", bar: 2 };\n 25 | \n> 26 | result = {[a]:b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(b, \"1\");\n 29 | ", - "test/language/expressions/assignment/dstr/obj-rest-number.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-number.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-number.js: Unexpected token (25:10)\n 23 | var vals = 51;\n 24 | \n> 25 | result = {...rest} = vals;\n | ^\n 26 | \n 27 | assert.notSameValue(rest, undefined);\n 28 | assert.notSameValue(rest, null); ", - "test/language/expressions/assignment/dstr/obj-rest-order.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-order.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-order.js: Unexpected token (29:10)\n 27 | var vals = o;\n 28 | \n> 29 | result = {...rest} = vals;\n | ^\n 30 | \n 31 | assert(compareArray(calls, [1, 'z', 'a', \"Symbol(foo)\"]));\n 32 | assert.sameValue(Object.keys(rest).length, 3); ", - "test/language/expressions/assignment/dstr/obj-rest-put-const.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-put-const.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-put-const.js: Unexpected token (22:6)\n 20 | \n 21 | assert.throws(TypeError, function() {\n> 22 | 0, {...rest} = {}\n | ^\n 23 | ;\n 24 | });\n 25 | ", - "test/language/expressions/assignment/dstr/obj-rest-same-name.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-same-name.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-same-name.js: Unexpected token (30:14)\n 28 | var vals = o;\n 29 | \n> 30 | result = { x, ...z } = vals;\n | ^\n 31 | \n 32 | assert.sameValue(x, 42);\n 33 | assert.sameValue(y, undefined); ", - "test/language/expressions/assignment/dstr/obj-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-skip-non-enumerable.js: Unexpected token (27:10)\n 25 | var vals = obj;\n 26 | \n> 27 | result = {...rest} = vals;\n | ^\n 28 | \n 29 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"x\"), undefined);\n 30 | ", - "test/language/expressions/assignment/dstr/obj-rest-str-val.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-str-val.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-str-val.js: Unexpected token (25:10)\n 23 | var vals = \"foo\";\n 24 | \n> 25 | result = {...rest} = vals;\n | ^\n 26 | \n 27 | assert.sameValue(rest[\"0\"], \"f\");\n 28 | assert.sameValue(rest[\"1\"], \"o\"); ", - "test/language/expressions/assignment/dstr/obj-rest-symbol-val.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-symbol-val.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-symbol-val.js: Unexpected token (25:10)\n 23 | var vals = Symbol(\"foo\");\n 24 | \n> 25 | result = {...rest} = vals;\n | ^\n 26 | \n 27 | assert.notSameValue(rest, undefined);\n 28 | assert.notSameValue(rest, null); ", - "test/language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js: Unexpected token (32:10)\n 30 | var vals = { x: 1, y: 2};\n 31 | \n> 32 | result = {...src.y} = vals;\n | ^\n 33 | \n 34 | assert.sameValue(settedValue.x, 1);\n 35 | assert.sameValue(settedValue.y, 2); ", - "test/language/expressions/assignment/dstr/obj-rest-to-property.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-to-property.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-to-property.js: Unexpected token (25:10)\n 23 | var vals = { x: 1, y: 2};\n 24 | \n> 25 | result = {...src.y} = vals;\n | ^\n 26 | \n 27 | assert.sameValue(src.y.x, 1);\n 28 | assert.sameValue(src.y.y, 2); ", - "test/language/expressions/assignment/dstr/obj-rest-val-null.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-val-null.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-val-null.js: Unexpected token (22:6)\n 20 | \n 21 | assert.throws(TypeError, function() {\n> 22 | 0, {...rest} = null\n | ^\n 23 | ;\n 24 | });\n 25 | ", - "test/language/expressions/assignment/dstr/obj-rest-val-undefined.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-val-undefined.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-val-undefined.js: Unexpected token (22:6)\n 20 | \n 21 | assert.throws(TypeError, function() {\n> 22 | 0, {...rest} = undefined\n | ^\n 23 | ;\n 24 | });\n 25 | ", - "test/language/expressions/assignment/dstr/obj-rest-valid-object.js-strict:true": "test/language/expressions/assignment/dstr/obj-rest-valid-object.js: SyntaxError: test/language/expressions/assignment/dstr/obj-rest-valid-object.js: Unexpected token (26:16)\n 24 | var vals = {x: 1, y: 2, a: 5, b: 3};\n 25 | \n> 26 | result = {a, b, ...rest} = vals;\n | ^\n 27 | \n 28 | assert.sameValue(rest.a, undefined);\n 29 | assert.sameValue(rest.b, undefined); ", "test/language/expressions/assignment/fn-name-lhs-cover.js-strict:true": "test/language/expressions/assignment/fn-name-lhs-cover.js: Test262Error: descriptor value should be ", - "test/language/expressions/assignment/fn-name-lhs-member.js-strict:true": "test/language/expressions/assignment/fn-name-lhs-member.js: Test262Error: obj should have an own property name ", "test/language/expressions/assignment/target-assignment-inside-function.js-strict:true": "test/language/expressions/assignment/target-assignment-inside-function.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignment/target-assignment.js-strict:true": "test/language/expressions/assignment/target-assignment.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js-strict:true": "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js: error is not an object (Test262: This statement should not be evaluated.)", @@ -736,29 +458,6 @@ "test/language/expressions/await/await-BindingIdentifier-in-global.js-strict:true": "test/language/expressions/await/await-BindingIdentifier-in-global.js: SyntaxError: test/language/expressions/await/await-BindingIdentifier-in-global.js: await is a reserved word (12:15)\n 10 | ---*/\n 11 | \n> 12 | async function await() { return 1 }\n | ^\n 13 | assert(await instanceof Function);\n 14 | \n 15 | ", "test/language/expressions/await/await-in-nested-function.js-strict:true": "test/language/expressions/await/await-in-nested-function.js: SyntaxError: test/language/expressions/await/await-in-nested-function.js: await is a reserved word (12:4)\n 10 | ---*/\n 11 | \n> 12 | var await;\n | ^\n 13 | async function foo() {\n 14 | function bar() {\n 15 | await = 1; ", "test/language/expressions/await/await-throws-rejections.js-strict:true": "test/language/expressions/await/await-throws-rejections.js: test/language/expressions/await/await-throws-rejections.js: Line 12:7 Unexpected token function (and 7 more errors)", - "test/language/expressions/call/eval-spread-empty-leading.js-strict:true": "test/language/expressions/call/eval-spread-empty-leading.js: Test262Error: Expected SameValue(«local», «0») to be true ", - "test/language/expressions/call/eval-spread-empty-trailing.js-strict:true": "test/language/expressions/call/eval-spread-empty-trailing.js: Test262Error: Expected SameValue(«local», «0») to be true ", - "test/language/expressions/call/eval-spread.js-strict:true": "test/language/expressions/call/eval-spread.js: Test262Error: Expected SameValue(«local», «1») to be true ", - "test/language/expressions/call/spread-err-mult-err-iter-get-value.js-strict:true": "test/language/expressions/call/spread-err-mult-err-iter-get-value.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js-strict:true": "test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js: SyntaxError: test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js: Unexpected token (36:24)\n 34 | \n 35 | assert.throws(ReferenceError, function() {\n> 36 | (function() {}({a: 0, ...unresolvableReference}));\n | ^\n 37 | });\n 38 | ", - "test/language/expressions/call/spread-err-sngl-err-obj-unresolvable.js-strict:true": "test/language/expressions/call/spread-err-sngl-err-obj-unresolvable.js: SyntaxError: test/language/expressions/call/spread-err-sngl-err-obj-unresolvable.js: Unexpected token (36:18)\n 34 | \n 35 | assert.throws(ReferenceError, function() {\n> 36 | (function() {}({...unresolvableReference}));\n | ^\n 37 | });\n 38 | ", - "test/language/expressions/call/spread-mult-obj-ident.js-strict:true": "test/language/expressions/call/spread-mult-obj-ident.js: SyntaxError: test/language/expressions/call/spread-mult-obj-ident.js: Unexpected token (71:15)\n 69 | });\n 70 | callCount += 1;\n> 71 | }({a: 1, b: 2, ...o}));\n | ^\n 72 | \n 73 | assert.sameValue(callCount, 1);\n 74 | ", - "test/language/expressions/call/spread-mult-obj-null.js-strict:true": "test/language/expressions/call/spread-mult-obj-null.js: SyntaxError: test/language/expressions/call/spread-mult-obj-null.js: Unexpected token (42:15)\n 40 | assert.sameValue(Object.keys(obj).length, 2);\n 41 | callCount += 1;\n> 42 | }({a: 1, b: 2, ...null}));\n | ^\n 43 | \n 44 | assert.sameValue(callCount, 1);\n 45 | ", - "test/language/expressions/call/spread-mult-obj-undefined.js-strict:true": "test/language/expressions/call/spread-mult-obj-undefined.js: SyntaxError: test/language/expressions/call/spread-mult-obj-undefined.js: Unexpected token (42:15)\n 40 | assert.sameValue(Object.keys(obj).length, 2);\n 41 | callCount += 1;\n> 42 | }({a: 1, b: 2, ...undefined}));\n | ^\n 43 | \n 44 | assert.sameValue(callCount, 1);\n 45 | ", - "test/language/expressions/call/spread-obj-getter-descriptor.js-strict:true": "test/language/expressions/call/spread-obj-getter-descriptor.js: SyntaxError: test/language/expressions/call/spread-obj-getter-descriptor.js: Unexpected token (56:3)\n 54 | });\n 55 | callCount += 1;\n> 56 | }({...o, c: 4, d: 5}));\n | ^\n 57 | \n 58 | assert.sameValue(callCount, 1);\n 59 | ", - "test/language/expressions/call/spread-obj-getter-init.js-strict:true": "test/language/expressions/call/spread-obj-getter-init.js: SyntaxError: test/language/expressions/call/spread-obj-getter-init.js: Unexpected token (36:3)\n 34 | assert.sameValue(Object.keys(obj).length, 3);\n 35 | callCount += 1;\n> 36 | }({...o, get c() { executedGetter = true; }}));\n | ^\n 37 | \n 38 | assert.sameValue(callCount, 1);\n 39 | ", - "test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js-strict:true": "test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js: SyntaxError: test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js: Unexpected token (50:3)\n 48 | assert.sameValue(Object.keys(obj).length, 3);\n 49 | callCount += 1;\n> 50 | }({...cthulhu, ...o}));\n | ^\n 51 | \n 52 | assert.sameValue(callCount, 1);\n 53 | ", - "test/language/expressions/call/spread-obj-mult-spread-getter.js-strict:true": "test/language/expressions/call/spread-obj-mult-spread-getter.js: SyntaxError: test/language/expressions/call/spread-obj-mult-spread-getter.js: Unexpected token (50:3)\n 48 | assert.sameValue(Object.keys(obj).length, 3);\n 49 | callCount += 1;\n> 50 | }({...o, c: 4, d: 5, a: 42, ...o}));\n | ^\n 51 | \n 52 | assert.sameValue(callCount, 1);\n 53 | ", - "test/language/expressions/call/spread-obj-mult-spread.js-strict:true": "test/language/expressions/call/spread-obj-mult-spread.js: SyntaxError: test/language/expressions/call/spread-obj-mult-spread.js: Unexpected token (48:3)\n 46 | assert.sameValue(Object.keys(obj).length, 4);\n 47 | callCount += 1;\n> 48 | }({...o, ...o2}));\n | ^\n 49 | \n 50 | assert.sameValue(callCount, 1);\n 51 | ", - "test/language/expressions/call/spread-obj-null.js-strict:true": "test/language/expressions/call/spread-obj-null.js: SyntaxError: test/language/expressions/call/spread-obj-null.js: Unexpected token (40:3)\n 38 | assert.sameValue(Object.keys(obj).length, 0);\n 39 | callCount += 1;\n> 40 | }({...null}));\n | ^\n 41 | \n 42 | assert.sameValue(callCount, 1);\n 43 | ", - "test/language/expressions/call/spread-obj-override-immutable.js-strict:true": "test/language/expressions/call/spread-obj-override-immutable.js: SyntaxError: test/language/expressions/call/spread-obj-override-immutable.js: Unexpected token (49:3)\n 47 | });\n 48 | callCount += 1;\n> 49 | }({...o, a: 3}));\n | ^\n 50 | \n 51 | assert.sameValue(callCount, 1);\n 52 | ", - "test/language/expressions/call/spread-obj-overrides-prev-properties.js-strict:true": "test/language/expressions/call/spread-obj-overrides-prev-properties.js: SyntaxError: test/language/expressions/call/spread-obj-overrides-prev-properties.js: Unexpected token (46:15)\n 44 | assert.sameValue(o.b, 3);\n 45 | callCount += 1;\n> 46 | }({a: 1, b: 7, ...o}));\n | ^\n 47 | \n 48 | assert.sameValue(callCount, 1);\n 49 | ", - "test/language/expressions/call/spread-obj-skip-non-enumerable.js-strict:true": "test/language/expressions/call/spread-obj-skip-non-enumerable.js: SyntaxError: test/language/expressions/call/spread-obj-skip-non-enumerable.js: Unexpected token (34:3)\n 32 | assert.sameValue(Object.keys(obj).length, 0);\n 33 | callCount += 1;\n> 34 | }({...o}));\n | ^\n 35 | \n 36 | assert.sameValue(callCount, 1);\n 37 | ", - "test/language/expressions/call/spread-obj-spread-order.js-strict:true": "test/language/expressions/call/spread-obj-spread-order.js: SyntaxError: test/language/expressions/call/spread-obj-spread-order.js: Unexpected token (47:3)\n 45 | assert.sameValue(Object.keys(obj).length, 3);\n 46 | callCount += 1;\n> 47 | }({...o}));\n | ^\n 48 | \n 49 | assert.sameValue(callCount, 1);\n 50 | ", - "test/language/expressions/call/spread-obj-symbol-property.js-strict:true": "test/language/expressions/call/spread-obj-symbol-property.js: SyntaxError: test/language/expressions/call/spread-obj-symbol-property.js: Unexpected token (48:3)\n 46 | assert.sameValue(Object.keys(obj).length, 2);\n 47 | callCount += 1;\n> 48 | }({...o, c: 4, d: 5}));\n | ^\n 49 | \n 50 | assert.sameValue(callCount, 1);\n 51 | ", - "test/language/expressions/call/spread-obj-undefined.js-strict:true": "test/language/expressions/call/spread-obj-undefined.js: SyntaxError: test/language/expressions/call/spread-obj-undefined.js: Unexpected token (40:3)\n 38 | assert.sameValue(Object.keys(obj).length, 0);\n 39 | callCount += 1;\n> 40 | }({...undefined}));\n | ^\n 41 | \n 42 | assert.sameValue(callCount, 1);\n 43 | ", - "test/language/expressions/call/spread-obj-with-overrides.js-strict:true": "test/language/expressions/call/spread-obj-with-overrides.js: SyntaxError: test/language/expressions/call/spread-obj-with-overrides.js: Unexpected token (52:3)\n 50 | assert.sameValue(Object.keys(obj).length, 10);\n 51 | callCount += 1;\n> 52 | }({...o, a: 1, b: 7, d: 5, h: -0, i: Symbol(\"foo\"), j: o}));\n | ^\n 53 | \n 54 | assert.sameValue(callCount, 1);\n 55 | ", - "test/language/expressions/call/spread-sngl-obj-ident.js-strict:true": "test/language/expressions/call/spread-sngl-obj-ident.js: SyntaxError: test/language/expressions/call/spread-sngl-obj-ident.js: Unexpected token (57:3)\n 55 | });\n 56 | callCount += 1;\n> 57 | }({...o}));\n | ^\n 58 | \n 59 | assert.sameValue(callCount, 1);\n 60 | ", "test/language/expressions/class/class-name-ident-await-escaped.js-strict:true": "test/language/expressions/class/class-name-ident-await-escaped.js: SyntaxError: test/language/expressions/class/class-name-ident-await-escaped.js: await is a reserved word (18:14)\n 16 | ---*/\n 17 | \n> 18 | var C = class aw\\u0061it {};\n | ^\n 19 | ", "test/language/expressions/class/class-name-ident-await.js-strict:true": "test/language/expressions/class/class-name-ident-await.js: SyntaxError: test/language/expressions/class/class-name-ident-await.js: await is a reserved word (17:14)\n 15 | ---*/\n 16 | \n> 17 | var C = class await {};\n | ^\n 18 | ", "test/language/expressions/class/constructor-this-tdz-during-initializers.js-strict:true": "test/language/expressions/class/constructor-this-tdz-during-initializers.js: SyntaxError: test/language/expressions/class/constructor-this-tdz-during-initializers.js: Unexpected token (31:8)\n 29 | \n 30 | var C = class extends Base {\n> 31 | field = (thisDuringField = this, thisFromProbe = probeCtorThis());\n | ^\n 32 | constructor() {\n 33 | probeCtorThis = () => this;\n 34 | assert.throws(ReferenceError, probeCtorThis); ", @@ -830,7 +529,7 @@ "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js: Unexpected token (40:9)\n 38 | \n 39 | let C = class {\n> 40 | [null] = () => {\n | ^\n 41 | return null;\n 42 | };\n 43 | ", "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js: Unexpected token (40:6)\n 38 | \n 39 | let C = class {\n> 40 | [1] = () => {\n | ^\n 41 | return 2;\n 42 | };\n 43 | ", "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js: Unexpected token (40:8)\n 38 | \n 39 | let C = class {\n> 40 | ['1'] = () => {\n | ^\n 41 | return '2';\n 42 | };\n 43 | ", - "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -839,7 +538,7 @@ "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...[...x]]) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | method([...{ length }]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -862,7 +561,7 @@ "test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | var C = class {\n> 66 | method({...x}) {\n | ^\n 67 | assert.sameValue(count, 1);\n 68 | \n 69 | verifyProperty(x, \"v\", { ", "test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (67:10)\n 65 | var callCount = 0;\n 66 | var C = class {\n> 67 | method({...rest}) {\n | ^\n 68 | assert.sameValue(rest.x, undefined);\n 69 | \n 70 | verifyProperty(rest, \"a\", { ", "test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js: Unexpected token (65:16)\n 63 | var callCount = 0;\n 64 | var C = class {\n> 65 | method({a, b, ...rest}) {\n | ^\n 66 | assert.sameValue(rest.a, undefined);\n 67 | assert.sameValue(rest.b, undefined);\n 68 | ", - "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -871,7 +570,7 @@ "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...[...x]]) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | static method([...{ length }]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -1652,12 +1351,11 @@ "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-direct-eval.js-strict:false": "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-direct-eval.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 7 more errors) ", "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-eval-indirect.js-strict:false": "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-eval-indirect.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 7 more errors) ", "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-factory.js-strict:true": "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-factory.js: SyntaxError: test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-factory.js: Unexpected character '#' (28:11)\n 26 | let createClass = function () {\n 27 | return class {\n> 28 | static #m() { return 'test262'; }\n | ^\n 29 | \n 30 | static access() {\n 31 | return this.#m(); ", - "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-function-ctor.js-strict:true": "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-function-ctor.js: SyntaxError: SyntaxError: : Line 2:8 Unexpected reserved word (and 9 more errors) ", + "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-function-ctor.js-strict:true": "test/language/expressions/class/private-static-method-brand-check-multiple-evaluations-of-class-function-ctor.js: SyntaxError: SyntaxError: : Line 2:8 Unexpected reserved word (and 8 more errors) ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-direct-eval.js-strict:false": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-direct-eval.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 3 more errors) ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-eval-indirect.js-strict:false": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-eval-indirect.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 3 more errors) ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js-strict:true": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js: SyntaxError: test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js: Unexpected character '#' (28:15)\n 26 | let createClass = function () {\n 27 | return class {\n> 28 | static set #m(v) {\n | ^\n 29 | this._v = v;\n 30 | };\n 31 | ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-function-ctor.js-strict:true": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-function-ctor.js: SyntaxError: SyntaxError: : Line 2:8 Unexpected reserved word (and 4 more errors) ", - "test/language/expressions/class/restricted-properties.js-strict:true": "test/language/expressions/class/restricted-properties.js: Test262Error: No \"caller\" own property Expected SameValue(«true», «false») to be true ", "test/language/expressions/class/scope-meth-paramsbody-var-open.js-strict:true": "test/language/expressions/class/scope-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/expressions/class/scope-name-lex-open-heritage.js-strict:true": "test/language/expressions/class/scope-name-lex-open-heritage.js: Test262Error: from class heritage Expected SameValue(«outside», «function C() {_classCallCheck(this, C);return _possibleConstructorReturn(this, (C.__proto__ || Object.getPrototypeOf(C)).apply(this, arguments));}») to be true ", "test/language/expressions/class/scope-name-lex-open-no-heritage.js-strict:true": "test/language/expressions/class/scope-name-lex-open-no-heritage.js: Test262Error: inner binding rejects modification Expected a TypeError to be thrown but no exception was thrown at all ", @@ -1746,77 +1444,38 @@ "test/language/expressions/compound-assignment/S11.13.2_A7.9_T1.js-strict:true": "test/language/expressions/compound-assignment/S11.13.2_A7.9_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/compound-assignment/S11.13.2_A7.9_T2.js-strict:true": "test/language/expressions/compound-assignment/S11.13.2_A7.9_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/compound-assignment/S11.13.2_A7.9_T4.js-strict:true": "test/language/expressions/compound-assignment/S11.13.2_A7.9_T4.js: Test262Error: Expected true but got false ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js: 'with' in strict mode (28:0)\n 26 | };\n 27 | \n> 28 | with (scope) {\n | ^\n 29 | (function() {\n 30 | \"use strict\";\n 31 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js: SyntaxError: test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js-strict:false": "test/language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/conditional/coalesce-expr-ternary.js-strict:true": "test/language/expressions/conditional/coalesce-expr-ternary.js: SyntaxError: test/language/expressions/conditional/coalesce-expr-ternary.js: Unexpected token (29:15)\n 27 | var x;\n 28 | \n> 29 | x = undefined ?? true ? 0 : 42;\n | ^\n 30 | assert.sameValue(x, 0, 'undefined ?? true ? 0 : 42');\n 31 | \n 32 | x = undefined; ", "test/language/expressions/delete/non-reference-return-true.js-strict:true": "test/language/expressions/delete/non-reference-return-true.js: TypeError: Value is not an object: Test262 ", "test/language/expressions/delete/super-property-method.js-strict:true": "test/language/expressions/delete/super-property-method.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/delete/super-property.js-strict:true": "test/language/expressions/delete/super-property.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/exponentiation/applying-the-exp-operator_A7.js-strict:true": "test/language/expressions/exponentiation/applying-the-exp-operator_A7.js: Test262Error: -1 ** Infinity Expected SameValue(«1», «NaN») to be true ", "test/language/expressions/exponentiation/applying-the-exp-operator_A8.js-strict:true": "test/language/expressions/exponentiation/applying-the-exp-operator_A8.js: Test262Error: -1 ** -Infinity Expected SameValue(«1», «NaN») to be true ", - "test/language/expressions/function/arguments-with-arguments-fn.js-strict:false": "test/language/expressions/function/arguments-with-arguments-fn.js: SyntaxError: test/language/expressions/function/arguments-with-arguments-fn.js: arguments is a reserved word in strict mode (24:11)\n 22 | \n 23 | var f = function(x = args = arguments) {\n> 24 | function arguments() {}\n | ^\n 25 | };\n 26 | \n 27 | f(); ", - "test/language/expressions/function/arguments-with-arguments-lex.js-strict:false": "test/language/expressions/function/arguments-with-arguments-lex.js: SyntaxError: test/language/expressions/function/arguments-with-arguments-lex.js: arguments is a reserved word in strict mode (24:6)\n 22 | \n 23 | var f = function (x = args = arguments) {\n> 24 | let arguments;\n | ^\n 25 | };\n 26 | \n 27 | f(); ", - "test/language/expressions/function/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/function/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/function/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/function/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (77:17)\n 75 | var callCount = 0;\n 76 | var f;\n> 77 | f = function([...[x, y, z]]) {\n | ^\n 78 | assert.sameValue(x, 3);\n 79 | assert.sameValue(y, 4);\n 80 | assert.sameValue(z, 5); ", - "test/language/expressions/function/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/function/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (58:17)\n 56 | var callCount = 0;\n 57 | var f;\n> 58 | f = function([...[...x]]) {\n | ^\n 59 | assert(Array.isArray(x));\n 60 | assert.sameValue(x.length, 3);\n 61 | assert.sameValue(x[0], 1); ", - "test/language/expressions/function/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/function/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (57:17)\n 55 | var callCount = 0;\n 56 | var f;\n> 57 | f = function([...{ length }]) {\n | ^\n 58 | assert.sameValue(length, 3);\n 59 | callCount = callCount + 1;\n 60 | }; ", - "test/language/expressions/function/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/function/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/function/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (58:17)\n 56 | var callCount = 0;\n 57 | var f;\n> 58 | f = function([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 59 | assert.sameValue(v, 7);\n 60 | assert.sameValue(w, 8);\n 61 | assert.sameValue(x, 9); ", - "test/language/expressions/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (77:17)\n 75 | var callCount = 0;\n 76 | var f;\n> 77 | f = function([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 78 | assert.sameValue(x, 3);\n 79 | assert.sameValue(y, 4);\n 80 | assert.sameValue(z, 5); ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/function/dstr/dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (58:17)\n 56 | var callCount = 0;\n 57 | var f;\n> 58 | f = function([...[...x]] = values) {\n | ^\n 59 | assert(Array.isArray(x));\n 60 | assert.sameValue(x.length, 3);\n 61 | assert.sameValue(x[0], 1); ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-id.js: Unexpected token (57:17)\n 55 | var callCount = 0;\n 56 | var f;\n> 57 | f = function([...{ length }] = [1, 2, 3]) {\n | ^\n 58 | assert.sameValue(length, 3);\n 59 | callCount = callCount + 1;\n 60 | }; ", - "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (58:17)\n 56 | var callCount = 0;\n 57 | var f;\n> 58 | f = function([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 59 | assert.sameValue(v, 7);\n 60 | assert.sameValue(w, 8);\n 61 | assert.sameValue(x, 9); ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js: Unexpected token (46:14)\n 44 | var callCount = 0;\n 45 | var f;\n> 46 | f = function({...x} = { get v() { count++; return 2; } }) {\n | ^\n 47 | assert.sameValue(count, 1);\n 48 | \n 49 | verifyProperty(x, \"v\", { ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (47:14)\n 45 | var callCount = 0;\n 46 | var f;\n> 47 | f = function({...rest} = o) {\n | ^\n 48 | assert.sameValue(rest.x, undefined);\n 49 | \n 50 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js: Unexpected token (45:20)\n 43 | var callCount = 0;\n 44 | var f;\n> 45 | f = function({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 46 | assert.sameValue(rest.a, undefined);\n 47 | assert.sameValue(rest.b, undefined);\n 48 | ", - "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/function/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/function/dstr/obj-ptrn-rest-getter.js: Unexpected token (46:14)\n 44 | var callCount = 0;\n 45 | var f;\n> 46 | f = function({...x}) {\n | ^\n 47 | assert.sameValue(count, 1);\n 48 | \n 49 | verifyProperty(x, \"v\", { ", - "test/language/expressions/function/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/function/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (47:14)\n 45 | var callCount = 0;\n 46 | var f;\n> 47 | f = function({...rest}) {\n | ^\n 48 | assert.sameValue(rest.x, undefined);\n 49 | \n 50 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/function/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/function/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/function/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (45:20)\n 43 | var callCount = 0;\n 44 | var f;\n> 45 | f = function({a, b, ...rest}) {\n | ^\n 46 | assert.sameValue(rest.a, undefined);\n 47 | assert.sameValue(rest.b, undefined);\n 48 | ", - "test/language/expressions/function/eval-var-scope-syntax-err.js-strict:false": "test/language/expressions/function/eval-var-scope-syntax-err.js: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all ", - "test/language/expressions/function/name.js-strict:true": "test/language/expressions/function/name.js: Test262Error: obj should have an own property name ", - "test/language/expressions/function/scope-name-var-open-non-strict.js-strict:false": "test/language/expressions/function/scope-name-var-open-non-strict.js: Test262Error: inner binding is immutable (from parameters) Expected SameValue(«null», «function f()\n\n\n\n\n{let _ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (probeParams = function probeParams() {return f;}, setParams = function setParams() {f = null;});\n probeBody = function probeBody() {return f;};\n setBody = function setBody() {f = null;};\n}») to be true ", - "test/language/expressions/function/scope-name-var-open-strict.js-strict:true": "test/language/expressions/function/scope-name-var-open-strict.js: Test262Error: inner binding rejects modification (from parameters) Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/function/scope-param-elem-var-close.js-strict:false": "test/language/expressions/function/scope-param-elem-var-close.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/function/scope-param-elem-var-open.js-strict:false": "test/language/expressions/function/scope-param-elem-var-open.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/function/scope-param-rest-elem-var-close.js-strict:false": "test/language/expressions/function/scope-param-rest-elem-var-close.js: SyntaxError: test/language/expressions/function/scope-param-rest-elem-var-close.js: Unexpected token (22:7)\n 20 | \n 21 | (function(\n> 22 | ...[_ = (eval('var x = \"inside\";'), probeParam = function() { return x; })]\n | ^\n 23 | ) {\n 24 | probeBody = function() { return x; }\n 25 | }()); ", - "test/language/expressions/function/scope-param-rest-elem-var-open.js-strict:false": "test/language/expressions/function/scope-param-rest-elem-var-open.js: SyntaxError: test/language/expressions/function/scope-param-rest-elem-var-open.js: Unexpected token (23:7)\n 21 | (function(\n 22 | _ = probe1 = function() { return x; },\n> 23 | ...[__ = (eval('var x = \"inside\";'), probe2 = function() { return x; })]\n | ^\n 24 | ) {\n 25 | }());\n 26 | ", - "test/language/expressions/function/scope-paramsbody-var-open.js-strict:true": "test/language/expressions/function/scope-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/expressions/import.meta/distinct-for-each-module.js-strict:true": "test/language/expressions/import.meta/distinct-for-each-module.js: SyntaxError: test/language/expressions/import.meta/distinct-for-each-module.js: Unexpected token (29:20)\n 27 | \n 28 | // The imported module has a distinct import.meta object.\n> 29 | assert.notSameValue(import.meta, fixture_meta,\n | ^\n 30 | \"foreign import.meta accessed via import binding\");\n 31 | assert.notSameValue(import.meta, getMeta(),\n 32 | \"foreign import.meta accessed via function call\"); ", "test/language/expressions/import.meta/import-meta-is-an-ordinary-object.js-strict:true": "test/language/expressions/import.meta/import-meta-is-an-ordinary-object.js: SyntaxError: test/language/expressions/import.meta/import-meta-is-an-ordinary-object.js: Unexpected token (28:24)\n 26 | \n 27 | // import.meta is an object.\n> 28 | assert.sameValue(typeof import.meta, \"object\",\n | ^\n 29 | \"typeof import.meta is 'object'\");\n 30 | assert.notSameValue(import.meta, null,\n 31 | \"typeof import.meta is 'object' and import.meta isn't |null|.\"); ", "test/language/expressions/import.meta/same-object-returned.js-strict:true": "test/language/expressions/import.meta/same-object-returned.js: SyntaxError: test/language/expressions/import.meta/same-object-returned.js: Unexpected token (28:8)\n 26 | ---*/\n 27 | \n> 28 | var a = import.meta;\n | ^\n 29 | var b = function() { return import.meta; }();\n 30 | \n 31 | assert.sameValue(import.meta, a, ", @@ -1868,30 +1527,9 @@ "test/language/expressions/new.target/escaped-new.js-strict:true": "test/language/expressions/new.target/escaped-new.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/new.target/escaped-target.js-strict:true": "test/language/expressions/new.target/escaped-target.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/new.target/value-via-super-call.js-strict:true": "test/language/expressions/new.target/value-via-super-call.js: Test262Error: within \"parent\" constructor Expected SameValue(«undefined», «function Child() {_classCallCheck(this, Child);return _possibleConstructorReturn(this, (Child.__proto__ || Object.getPrototypeOf(Child)).call(this));\n\n }») to be true ", - "test/language/expressions/new/spread-err-mult-err-iter-get-value.js-strict:true": "test/language/expressions/new/spread-err-mult-err-iter-get-value.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js-strict:true": "test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js: SyntaxError: test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js: Unexpected token (35:27)\n 33 | \n 34 | assert.throws(ReferenceError, function() {\n> 35 | new function() {}({a: 0, ...unresolvableReference});\n | ^\n 36 | });\n 37 | ", - "test/language/expressions/new/spread-err-sngl-err-obj-unresolvable.js-strict:true": "test/language/expressions/new/spread-err-sngl-err-obj-unresolvable.js: SyntaxError: test/language/expressions/new/spread-err-sngl-err-obj-unresolvable.js: Unexpected token (35:21)\n 33 | \n 34 | assert.throws(ReferenceError, function() {\n> 35 | new function() {}({...unresolvableReference});\n | ^\n 36 | });\n 37 | ", - "test/language/expressions/new/spread-mult-obj-ident.js-strict:true": "test/language/expressions/new/spread-mult-obj-ident.js: SyntaxError: test/language/expressions/new/spread-mult-obj-ident.js: Unexpected token (70:15)\n 68 | });\n 69 | callCount += 1;\n> 70 | }({a: 1, b: 2, ...o});\n | ^\n 71 | \n 72 | assert.sameValue(callCount, 1);\n 73 | ", - "test/language/expressions/new/spread-mult-obj-null.js-strict:true": "test/language/expressions/new/spread-mult-obj-null.js: SyntaxError: test/language/expressions/new/spread-mult-obj-null.js: Unexpected token (41:15)\n 39 | assert.sameValue(Object.keys(obj).length, 2);\n 40 | callCount += 1;\n> 41 | }({a: 1, b: 2, ...null});\n | ^\n 42 | \n 43 | assert.sameValue(callCount, 1);\n 44 | ", - "test/language/expressions/new/spread-mult-obj-undefined.js-strict:true": "test/language/expressions/new/spread-mult-obj-undefined.js: SyntaxError: test/language/expressions/new/spread-mult-obj-undefined.js: Unexpected token (41:15)\n 39 | assert.sameValue(Object.keys(obj).length, 2);\n 40 | callCount += 1;\n> 41 | }({a: 1, b: 2, ...undefined});\n | ^\n 42 | \n 43 | assert.sameValue(callCount, 1);\n 44 | ", - "test/language/expressions/new/spread-obj-getter-descriptor.js-strict:true": "test/language/expressions/new/spread-obj-getter-descriptor.js: SyntaxError: test/language/expressions/new/spread-obj-getter-descriptor.js: Unexpected token (55:3)\n 53 | });\n 54 | callCount += 1;\n> 55 | }({...o, c: 4, d: 5});\n | ^\n 56 | \n 57 | assert.sameValue(callCount, 1);\n 58 | ", - "test/language/expressions/new/spread-obj-getter-init.js-strict:true": "test/language/expressions/new/spread-obj-getter-init.js: SyntaxError: test/language/expressions/new/spread-obj-getter-init.js: Unexpected token (35:3)\n 33 | assert.sameValue(Object.keys(obj).length, 3);\n 34 | callCount += 1;\n> 35 | }({...o, get c() { executedGetter = true; }});\n | ^\n 36 | \n 37 | assert.sameValue(callCount, 1);\n 38 | ", - "test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js-strict:true": "test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js: SyntaxError: test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js: Unexpected token (49:3)\n 47 | assert.sameValue(Object.keys(obj).length, 3);\n 48 | callCount += 1;\n> 49 | }({...cthulhu, ...o});\n | ^\n 50 | \n 51 | assert.sameValue(callCount, 1);\n 52 | ", - "test/language/expressions/new/spread-obj-mult-spread-getter.js-strict:true": "test/language/expressions/new/spread-obj-mult-spread-getter.js: SyntaxError: test/language/expressions/new/spread-obj-mult-spread-getter.js: Unexpected token (49:3)\n 47 | assert.sameValue(Object.keys(obj).length, 3);\n 48 | callCount += 1;\n> 49 | }({...o, c: 4, d: 5, a: 42, ...o});\n | ^\n 50 | \n 51 | assert.sameValue(callCount, 1);\n 52 | ", - "test/language/expressions/new/spread-obj-mult-spread.js-strict:true": "test/language/expressions/new/spread-obj-mult-spread.js: SyntaxError: test/language/expressions/new/spread-obj-mult-spread.js: Unexpected token (47:3)\n 45 | assert.sameValue(Object.keys(obj).length, 4);\n 46 | callCount += 1;\n> 47 | }({...o, ...o2});\n | ^\n 48 | \n 49 | assert.sameValue(callCount, 1);\n 50 | ", - "test/language/expressions/new/spread-obj-null.js-strict:true": "test/language/expressions/new/spread-obj-null.js: SyntaxError: test/language/expressions/new/spread-obj-null.js: Unexpected token (39:3)\n 37 | assert.sameValue(Object.keys(obj).length, 0);\n 38 | callCount += 1;\n> 39 | }({...null});\n | ^\n 40 | \n 41 | assert.sameValue(callCount, 1);\n 42 | ", - "test/language/expressions/new/spread-obj-override-immutable.js-strict:true": "test/language/expressions/new/spread-obj-override-immutable.js: SyntaxError: test/language/expressions/new/spread-obj-override-immutable.js: Unexpected token (48:3)\n 46 | });\n 47 | callCount += 1;\n> 48 | }({...o, a: 3});\n | ^\n 49 | \n 50 | assert.sameValue(callCount, 1);\n 51 | ", - "test/language/expressions/new/spread-obj-overrides-prev-properties.js-strict:true": "test/language/expressions/new/spread-obj-overrides-prev-properties.js: SyntaxError: test/language/expressions/new/spread-obj-overrides-prev-properties.js: Unexpected token (45:15)\n 43 | assert.sameValue(o.b, 3);\n 44 | callCount += 1;\n> 45 | }({a: 1, b: 7, ...o});\n | ^\n 46 | \n 47 | assert.sameValue(callCount, 1);\n 48 | ", - "test/language/expressions/new/spread-obj-skip-non-enumerable.js-strict:true": "test/language/expressions/new/spread-obj-skip-non-enumerable.js: SyntaxError: test/language/expressions/new/spread-obj-skip-non-enumerable.js: Unexpected token (33:3)\n 31 | assert.sameValue(Object.keys(obj).length, 0);\n 32 | callCount += 1;\n> 33 | }({...o});\n | ^\n 34 | \n 35 | assert.sameValue(callCount, 1);\n 36 | ", - "test/language/expressions/new/spread-obj-spread-order.js-strict:true": "test/language/expressions/new/spread-obj-spread-order.js: SyntaxError: test/language/expressions/new/spread-obj-spread-order.js: Unexpected token (46:3)\n 44 | assert.sameValue(Object.keys(obj).length, 3);\n 45 | callCount += 1;\n> 46 | }({...o});\n | ^\n 47 | \n 48 | assert.sameValue(callCount, 1);\n 49 | ", - "test/language/expressions/new/spread-obj-symbol-property.js-strict:true": "test/language/expressions/new/spread-obj-symbol-property.js: SyntaxError: test/language/expressions/new/spread-obj-symbol-property.js: Unexpected token (47:3)\n 45 | assert.sameValue(Object.keys(obj).length, 2);\n 46 | callCount += 1;\n> 47 | }({...o, c: 4, d: 5});\n | ^\n 48 | \n 49 | assert.sameValue(callCount, 1);\n 50 | ", - "test/language/expressions/new/spread-obj-undefined.js-strict:true": "test/language/expressions/new/spread-obj-undefined.js: SyntaxError: test/language/expressions/new/spread-obj-undefined.js: Unexpected token (39:3)\n 37 | assert.sameValue(Object.keys(obj).length, 0);\n 38 | callCount += 1;\n> 39 | }({...undefined});\n | ^\n 40 | \n 41 | assert.sameValue(callCount, 1);\n 42 | ", - "test/language/expressions/new/spread-obj-with-overrides.js-strict:true": "test/language/expressions/new/spread-obj-with-overrides.js: SyntaxError: test/language/expressions/new/spread-obj-with-overrides.js: Unexpected token (51:3)\n 49 | assert.sameValue(Object.keys(obj).length, 10);\n 50 | callCount += 1;\n> 51 | }({...o, a: 1, b: 7, d: 5, h: -0, i: Symbol(\"foo\"), j: o});\n | ^\n 52 | \n 53 | assert.sameValue(callCount, 1);\n 54 | ", - "test/language/expressions/new/spread-sngl-obj-ident.js-strict:true": "test/language/expressions/new/spread-sngl-obj-ident.js: SyntaxError: test/language/expressions/new/spread-sngl-obj-ident.js: Unexpected token (56:3)\n 54 | });\n 55 | callCount += 1;\n> 56 | }({...o});\n | ^\n 57 | \n 58 | assert.sameValue(callCount, 1);\n 59 | ", "test/language/expressions/object/__proto__-duplicate-computed.js-strict:true": "test/language/expressions/object/__proto__-duplicate-computed.js: Test262Error: prototype is defined Expected SameValue(«[object Object]», «[object Object]») to be true ", "test/language/expressions/object/__proto__-duplicate.js-strict:true": "test/language/expressions/object/__proto__-duplicate.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/object/__proto__-fn-name.js-strict:true": "test/language/expressions/object/__proto__-fn-name.js: Test262Error: Expected true but got false ", - "test/language/expressions/object/__proto__-permitted-dup-shorthand.js-strict:true": "test/language/expressions/object/__proto__-permitted-dup-shorthand.js: TypeError: Object prototype may only be an Object or null: 2 ", "test/language/expressions/object/__proto__-value-non-object.js-strict:true": "test/language/expressions/object/__proto__-value-non-object.js: TypeError: Object prototype may only be an Object or null: undefined ", "test/language/expressions/object/computed-__proto__.js-strict:true": "test/language/expressions/object/computed-__proto__.js: Test262Error: does not change the object prototype (ordinary object) Expected SameValue(«[object Object]», «[object Object]») to be true ", "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-coalesce.js-strict:true": "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-coalesce.js: SyntaxError: test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-coalesce.js: Unexpected token (30:6)\n 28 | \n 29 | let o = {\n> 30 | [x ??= 1]: 2\n | ^\n 31 | };\n 32 | \n 33 | assert.sameValue( ", @@ -1899,45 +1537,11 @@ "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-logical-or.js-strict:true": "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-logical-or.js: SyntaxError: test/language/expressions/object/cpn-obj-lit-computed-property-name-from-assignment-expression-logical-or.js: Unexpected token (30:7)\n 28 | \n 29 | let o = {\n> 30 | [x ||= 1]: 2\n | ^\n 31 | };\n 32 | \n 33 | assert.sameValue( ", "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-expression-coalesce.js-strict:true": "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-expression-coalesce.js: SyntaxError: test/language/expressions/object/cpn-obj-lit-computed-property-name-from-expression-coalesce.js: Unexpected token (30:6)\n 28 | \n 29 | let o = {\n> 30 | [x ?? 1]: 2\n | ^\n 31 | };\n 32 | \n 33 | assert.sameValue( ", "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-integer-separators.js-strict:true": "test/language/expressions/object/cpn-obj-lit-computed-property-name-from-integer-separators.js: SyntaxError: test/language/expressions/object/cpn-obj-lit-computed-property-name-from-integer-separators.js: Identifier directly after number (29:4)\n 27 | \n 28 | let o = {\n> 29 | [1_2_3_4_5_6_7_8]: 1_2_3_4_5_6_7_8\n | ^\n 30 | };\n 31 | \n 32 | assert.sameValue( ", - "test/language/expressions/object/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/object/dstr/meth-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-elem.js: Unexpected token (79:13)\n 77 | var callCount = 0;\n 78 | var obj = {\n> 79 | method([...[x, y, z]]) {\n | ^\n 80 | assert.sameValue(x, 3);\n 81 | assert.sameValue(y, 4);\n 82 | assert.sameValue(z, 5); ", - "test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/object/dstr/meth-ary-ptrn-rest-ary-rest.js: Unexpected token (60:13)\n 58 | var callCount = 0;\n 59 | var obj = {\n> 60 | method([...[...x]]) {\n | ^\n 61 | assert(Array.isArray(x));\n 62 | assert.sameValue(x.length, 3);\n 63 | assert.sameValue(x[0], 1); ", - "test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-id.js: Unexpected token (59:13)\n 57 | var callCount = 0;\n 58 | var obj = {\n> 59 | method([...{ length }]) {\n | ^\n 60 | assert.sameValue(length, 3);\n 61 | callCount = callCount + 1;\n 62 | } ", - "test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/object/dstr/meth-ary-ptrn-rest-obj-prop-id.js: Unexpected token (60:13)\n 58 | var callCount = 0;\n 59 | var obj = {\n> 60 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 61 | assert.sameValue(v, 7);\n 62 | assert.sameValue(w, 8);\n 63 | assert.sameValue(x, 9); ", - "test/language/expressions/object/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (79:13)\n 77 | var callCount = 0;\n 78 | var obj = {\n> 79 | method([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 80 | assert.sameValue(x, 3);\n 81 | assert.sameValue(y, 4);\n 82 | assert.sameValue(z, 5); ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (60:13)\n 58 | var callCount = 0;\n 59 | var obj = {\n> 60 | method([...[...x]] = values) {\n | ^\n 61 | assert(Array.isArray(x));\n 62 | assert.sameValue(x.length, 3);\n 63 | assert.sameValue(x[0], 1); ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: Unexpected token (59:13)\n 57 | var callCount = 0;\n 58 | var obj = {\n> 59 | method([...{ length }] = [1, 2, 3]) {\n | ^\n 60 | assert.sameValue(length, 3);\n 61 | callCount = callCount + 1;\n 62 | } ", - "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (60:13)\n 58 | var callCount = 0;\n 59 | var obj = {\n> 60 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 61 | assert.sameValue(v, 7);\n 62 | assert.sameValue(w, 8);\n 63 | assert.sameValue(x, 9); ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-getter.js: Unexpected token (48:10)\n 46 | var callCount = 0;\n 47 | var obj = {\n> 48 | method({...x} = { get v() { count++; return 2; } }) {\n | ^\n 49 | assert.sameValue(count, 1);\n 50 | \n 51 | verifyProperty(x, \"v\", { ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (49:10)\n 47 | var callCount = 0;\n 48 | var obj = {\n> 49 | method({...rest} = o) {\n | ^\n 50 | assert.sameValue(rest.x, undefined);\n 51 | \n 52 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: Unexpected token (47:16)\n 45 | var callCount = 0;\n 46 | var obj = {\n> 47 | method({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 48 | assert.sameValue(rest.a, undefined);\n 49 | assert.sameValue(rest.b, undefined);\n 50 | ", - "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/expressions/object/dstr/meth-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/object/dstr/meth-obj-ptrn-rest-getter.js: Unexpected token (48:10)\n 46 | var callCount = 0;\n 47 | var obj = {\n> 48 | method({...x}) {\n | ^\n 49 | assert.sameValue(count, 1);\n 50 | \n 51 | verifyProperty(x, \"v\", { ", - "test/language/expressions/object/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/object/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (49:10)\n 47 | var callCount = 0;\n 48 | var obj = {\n> 49 | method({...rest}) {\n | ^\n 50 | assert.sameValue(rest.x, undefined);\n 51 | \n 52 | verifyProperty(rest, \"a\", { ", - "test/language/expressions/object/dstr/meth-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/object/dstr/meth-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/object/dstr/meth-obj-ptrn-rest-val-obj.js: Unexpected token (47:16)\n 45 | var callCount = 0;\n 46 | var obj = {\n> 47 | method({a, b, ...rest}) {\n | ^\n 48 | assert.sameValue(rest.a, undefined);\n 49 | assert.sameValue(rest.b, undefined);\n 50 | ", - "test/language/expressions/object/dstr/object-rest-proxy-ownkeys-returned-keys-order.js-strict:true": "test/language/expressions/object/dstr/object-rest-proxy-ownkeys-returned-keys-order.js: SyntaxError: test/language/expressions/object/dstr/object-rest-proxy-ownkeys-returned-keys-order.js: Unexpected token (45:5)\n 43 | });\n 44 | \n> 45 | let {...$} = proxy;\n | ^\n 46 | assert.compareArray(getOwnKeys, ownKeysResult);\n 47 | ", - "test/language/expressions/object/fn-name-accessor-get.js-strict:true": "test/language/expressions/object/fn-name-accessor-get.js: Test262Error: Expected SameValue(«id», «get id») to be true ", - "test/language/expressions/object/fn-name-accessor-set.js-strict:true": "test/language/expressions/object/fn-name-accessor-set.js: Test262Error: Expected SameValue(«id», «set id») to be true ", - "test/language/expressions/object/fn-name-arrow.js-strict:true": "test/language/expressions/object/fn-name-arrow.js: TypeError: Cannot read property 'enumerable' of undefined ", "test/language/expressions/object/fn-name-class.js-strict:true": "test/language/expressions/object/fn-name-class.js: Test262Error: via anonymous Symbol Expected SameValue(«_class», «») to be true ", - "test/language/expressions/object/fn-name-cover.js-strict:true": "test/language/expressions/object/fn-name-cover.js: TypeError: Cannot read property 'enumerable' of undefined ", - "test/language/expressions/object/fn-name-fn.js-strict:true": "test/language/expressions/object/fn-name-fn.js: TypeError: Cannot read property 'enumerable' of undefined ", "test/language/expressions/object/method-definition/escaped-get-e.js-strict:true": "test/language/expressions/object/method-definition/escaped-get-e.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/object/method-definition/escaped-get-g.js-strict:true": "test/language/expressions/object/method-definition/escaped-get-g.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/object/method-definition/escaped-get-t.js-strict:true": "test/language/expressions/object/method-definition/escaped-get-t.js: error is not an object (Test262: This statement should not be evaluated.)", @@ -1946,22 +1550,11 @@ "test/language/expressions/object/method-definition/escaped-set-s.js-strict:true": "test/language/expressions/object/method-definition/escaped-set-s.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/object/method-definition/escaped-set-t.js-strict:true": "test/language/expressions/object/method-definition/escaped-set-t.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/object/method-definition/escaped-set.js-strict:true": "test/language/expressions/object/method-definition/escaped-set.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/object/method-definition/fn-name-fn.js-strict:true": "test/language/expressions/object/method-definition/fn-name-fn.js: TypeError: Cannot read property 'enumerable' of undefined ", "test/language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-arguments.js-strict:false": "test/language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-arguments.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-caller.js-strict:false": "test/language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-caller.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js-strict:false": "test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all ", "test/language/expressions/object/method-definition/name-invoke-ctor.js-strict:true": "test/language/expressions/object/method-definition/name-invoke-ctor.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/object/method-definition/name-name-prop-symbol.js-strict:true": "test/language/expressions/object/method-definition/name-name-prop-symbol.js: Test262Error: Expected SameValue(«», «[method]») to be true ", "test/language/expressions/object/method-definition/name-prototype-prop.js-strict:true": "test/language/expressions/object/method-definition/name-prototype-prop.js: Test262Error: Expected SameValue(«true», «false») to be true ", - "test/language/expressions/object/method-definition/object-method-returns-promise.js-strict:true": "test/language/expressions/object/method-definition/object-method-returns-promise.js: test/language/expressions/object/method-definition/object-method-returns-promise.js: Line 12:9 Unexpected identifier (and 8 more errors)", - "test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js-strict:true": "test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js: SyntaxError: test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js: Unexpected token (45:2)\n 43 | });\n 44 | \n> 45 | ({...proxy});\n | ^\n 46 | assert.compareArray(getOwnKeys, ownKeysResult);\n 47 | ", - "test/language/expressions/object/prop-def-id-eval-error.js-strict:false": "test/language/expressions/object/prop-def-id-eval-error.js: SyntaxError: test/language/expressions/object/prop-def-id-eval-error.js: 'with' in strict mode (18:2)\n 16 | \n 17 | assert.throws(Test262Error, function() {\n> 18 | with (obj) {\n | ^\n 19 | ({ attr });\n 20 | }\n 21 | }); ", - "test/language/expressions/object/scope-meth-param-elem-var-close.js-strict:false": "test/language/expressions/object/scope-meth-param-elem-var-close.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/object/scope-meth-param-elem-var-open.js-strict:false": "test/language/expressions/object/scope-meth-param-elem-var-open.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/expressions/object/scope-meth-param-rest-elem-var-close.js-strict:false": "test/language/expressions/object/scope-meth-param-rest-elem-var-close.js: SyntaxError: test/language/expressions/object/scope-meth-param-rest-elem-var-close.js: Unexpected token (23:7)\n 21 | ({\n 22 | m(\n> 23 | ...[_ = (eval('var x = \"inside\";'), probeParam = function() { return x; })]\n | ^\n 24 | ) {\n 25 | probeBody = function() { return x; }\n 26 | } ", - "test/language/expressions/object/scope-meth-param-rest-elem-var-open.js-strict:false": "test/language/expressions/object/scope-meth-param-rest-elem-var-open.js: SyntaxError: test/language/expressions/object/scope-meth-param-rest-elem-var-open.js: Unexpected token (24:7)\n 22 | m(\n 23 | _ = probe1 = function() { return x; },\n> 24 | ...[__ = (eval('var x = \"inside\";'), probe2 = function() { return x; })]\n | ^\n 25 | ) {}\n 26 | }.m());\n 27 | ", - "test/language/expressions/object/scope-meth-paramsbody-var-open.js-strict:true": "test/language/expressions/object/scope-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/expressions/object/scope-setter-paramsbody-var-open.js-strict:true": "test/language/expressions/object/scope-setter-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", + "test/language/expressions/object/method-definition/object-method-returns-promise.js-strict:true": "test/language/expressions/object/method-definition/object-method-returns-promise.js: test/language/expressions/object/method-definition/object-method-returns-promise.js: Line 12:9 Unexpected identifier (and 4 more errors)", "test/language/expressions/optional-chaining/call-expression.js-strict:true": "test/language/expressions/optional-chaining/call-expression.js: SyntaxError: test/language/expressions/optional-chaining/call-expression.js: Unexpected token (24:26)\n 22 | }\n 23 | }\n> 24 | assert.sameValue(33, fn()?.a);\n | ^\n 25 | assert.sameValue(undefined, fn()?.b);\n 26 | assert.sameValue(44, obj?.fn());\n 27 | ", "test/language/expressions/optional-chaining/eval-optional-call.js-strict:true": "test/language/expressions/optional-chaining/eval-optional-call.js: SyntaxError: test/language/expressions/optional-chaining/eval-optional-call.js: Unexpected token (33:14)\n 31 | function fn() {\n 32 | const a = 'local';\n> 33 | return eval?.('a');\n | ^\n 34 | }\n 35 | \n 36 | assert.sameValue(fn(), 'global', 'fn() returns \"global\" value from indirect eval'); ", "test/language/expressions/optional-chaining/iteration-statement-do.js-strict:true": "test/language/expressions/optional-chaining/iteration-statement-do.js: SyntaxError: test/language/expressions/optional-chaining/iteration-statement-do.js: Unexpected token (18:13)\n 16 | count++;\n 17 | break;\n> 18 | } while (obj?.a);\n | ^\n 19 | assert.sameValue(1, count);\n 20 | ", @@ -1984,23 +1577,23 @@ "test/language/expressions/postfix-decrement/S11.3.2_A6_T1.js-strict:true": "test/language/expressions/postfix-decrement/S11.3.2_A6_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/postfix-decrement/S11.3.2_A6_T2.js-strict:true": "test/language/expressions/postfix-decrement/S11.3.2_A6_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js-strict:true": "test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js: Test262Error: Expected true but got false ", - "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js: SyntaxError: test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", + "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/postfix-increment/S11.3.1_A6_T1.js-strict:true": "test/language/expressions/postfix-increment/S11.3.1_A6_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/postfix-increment/S11.3.1_A6_T2.js-strict:true": "test/language/expressions/postfix-increment/S11.3.1_A6_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/postfix-increment/S11.3.1_A6_T3.js-strict:true": "test/language/expressions/postfix-increment/S11.3.1_A6_T3.js: Test262Error: Expected true but got false ", - "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js: SyntaxError: test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", + "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/prefix-decrement/S11.4.5_A6_T1.js-strict:true": "test/language/expressions/prefix-decrement/S11.4.5_A6_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/prefix-decrement/S11.4.5_A6_T2.js-strict:true": "test/language/expressions/prefix-decrement/S11.4.5_A6_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js-strict:true": "test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js: Test262Error: Expected true but got false ", - "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js: SyntaxError: test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", + "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/prefix-increment/S11.4.4_A6_T1.js-strict:true": "test/language/expressions/prefix-increment/S11.4.4_A6_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/prefix-increment/S11.4.4_A6_T2.js-strict:true": "test/language/expressions/prefix-increment/S11.4.4_A6_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/prefix-increment/S11.4.4_A6_T3.js-strict:true": "test/language/expressions/prefix-increment/S11.4.4_A6_T3.js: Test262Error: Expected true but got false ", - "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js: TypeError: Object.defineProperty called on non-object ", - "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js: SyntaxError: test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js: 'with' in strict mode (27:0)\n 25 | };\n 26 | \n> 27 | with (scope) {\n | ^\n 28 | (function() {\n 29 | \"use strict\";\n 30 | assert.throws(ReferenceError, () => { ", + "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js-strict:false": "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js-strict:false": "test/language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", "test/language/expressions/super/call-bind-this-value-twice.js-strict:true": "test/language/expressions/super/call-bind-this-value-twice.js: Test262Error: Expected SameValue(«undefined», «object») to be true ", "test/language/expressions/super/call-construct-invocation.js-strict:true": "test/language/expressions/super/call-construct-invocation.js: TypeError: Cannot call a class as a function ", "test/language/expressions/super/call-poisoned-underscore-proto.js-strict:true": "test/language/expressions/super/call-poisoned-underscore-proto.js: Test262Error: should not be called ", @@ -2058,8 +1651,6 @@ "test/language/expressions/template-literal/mongolian-vowel-separator-eval.js-strict:true": "test/language/expressions/template-literal/mongolian-vowel-separator-eval.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected token ILLEGAL (and 3 more errors) ", "test/language/expressions/template-literal/tv-line-continuation.js-strict:true": "test/language/expressions/template-literal/tv-line-continuation.js: Test262Error: Line Separator Expected SameValue(«\u2028», «») to be true ", "test/language/expressions/typeof/proxy.js-strict:true": "test/language/expressions/typeof/proxy.js: Test262Error: Expected SameValue(«object», «function») to be true ", - "test/language/function-code/eval-param-env-with-computed-key.js-strict:false": "test/language/function-code/eval-param-env-with-computed-key.js: Test262Error: Expected SameValue(«outer», «inner») to be true ", - "test/language/function-code/eval-param-env-with-prop-initializer.js-strict:false": "test/language/function-code/eval-param-env-with-prop-initializer.js: Test262Error: Expected SameValue(«outer», «inner») to be true ", "test/language/global-code/decl-lex-deletion.js-strict:false": "test/language/global-code/decl-lex-deletion.js: SyntaxError: test/language/global-code/decl-lex-deletion.js: Deleting local variable in strict mode (23:0)\n 21 | let test262let;\n 22 | \n> 23 | delete test262let;\n | ^\n 24 | \n 25 | // Binding values are asserted by a dedicated test. IdentifierReferences serve\n 26 | // to ensure that the entries in the environment record persist. ", "test/language/global-code/decl-lex.js-strict:true": "test/language/global-code/decl-lex.js: TypeError: Cannot read property 'hasOwnProperty' of undefined or null ", "test/language/global-code/new.target-arrow.js-strict:true": "test/language/global-code/new.target-arrow.js: error is not an object (Test262: This statement should not be evaluated.)", @@ -2101,7 +1692,6 @@ "test/language/identifiers/vertical-tilde-continue.js-strict:true": "test/language/identifiers/vertical-tilde-continue.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/identifiers/vertical-tilde-start-escaped.js-strict:true": "test/language/identifiers/vertical-tilde-start-escaped.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/identifiers/vertical-tilde-start.js-strict:true": "test/language/identifiers/vertical-tilde-start.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/keywords/ident-ref-this.js-strict:true": "test/language/keywords/ident-ref-this.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js-strict:true": "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js: SyntaxError: test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd.js: Identifier directly after number (28:20)\n 26 | ---*/\n 27 | \n> 28 | assert.sameValue(0b0_1, 0b01);\n | ^\n 29 | assert.sameValue(0B0_1, 0B01);\n 30 | ", "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js-strict:true": "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js: SyntaxError: test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bd-nsl-bds.js: Identifier directly after number (28:20)\n 26 | ---*/\n 27 | \n> 28 | assert.sameValue(0b0_10, 0b010);\n | ^\n 29 | assert.sameValue(0B0_10, 0B010);\n 30 | ", "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js-strict:true": "test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js: SyntaxError: test/language/literals/numeric/numeric-separators/numeric-separator-literal-bil-bds-nsl-bd.js: Identifier directly after number (28:21)\n 26 | ---*/\n 27 | \n> 28 | assert.sameValue(0b01_0, 0b010);\n | ^\n 29 | assert.sameValue(0B01_0, 0B010);\n 30 | ", @@ -2228,12 +1818,12 @@ "test/language/module-code/instn-local-bndng-export-cls.js-strict:true": "test/language/module-code/instn-local-bndng-export-cls.js: ReferenceError: exports is not defined ", "test/language/module-code/instn-local-bndng-export-const.js-strict:true": "test/language/module-code/instn-local-bndng-export-const.js: ReferenceError: exports is not defined ", "test/language/module-code/instn-local-bndng-export-fun.js-strict:true": "test/language/module-code/instn-local-bndng-export-fun.js: ReferenceError: exports is not defined ", - "test/language/module-code/instn-local-bndng-export-gen.js-strict:true": "test/language/module-code/instn-local-bndng-export-gen.js: test/language/module-code/instn-local-bndng-export-gen.js: Line 33:290 Unexpected token * (and 2 more errors)", + "test/language/module-code/instn-local-bndng-export-gen.js-strict:true": "test/language/module-code/instn-local-bndng-export-gen.js: test/language/module-code/instn-local-bndng-export-gen.js: Line 33:290 Unexpected token * (and 8 more errors)", "test/language/module-code/instn-local-bndng-export-let.js-strict:true": "test/language/module-code/instn-local-bndng-export-let.js: ReferenceError: exports is not defined ", "test/language/module-code/instn-local-bndng-export-var.js-strict:true": "test/language/module-code/instn-local-bndng-export-var.js: ReferenceError: exports is not defined ", "test/language/module-code/instn-local-bndng-for.js-strict:true": "test/language/module-code/instn-local-bndng-for.js: Test262Error: Expected SameValue(«[object Object]», «undefined») to be true ", "test/language/module-code/instn-local-bndng-fun.js-strict:true": "test/language/module-code/instn-local-bndng-fun.js: Test262Error: Expected SameValue(«[object Object]», «undefined») to be true ", - "test/language/module-code/instn-local-bndng-gen.js-strict:true": "test/language/module-code/instn-local-bndng-gen.js: test/language/module-code/instn-local-bndng-gen.js: Line 42:9 Unexpected token * (and 2 more errors)", + "test/language/module-code/instn-local-bndng-gen.js-strict:true": "test/language/module-code/instn-local-bndng-gen.js: test/language/module-code/instn-local-bndng-gen.js: Line 42:9 Unexpected token * (and 8 more errors)", "test/language/module-code/instn-local-bndng-var.js-strict:true": "test/language/module-code/instn-local-bndng-var.js: Test262Error: Expected SameValue(«[object Object]», «undefined») to be true ", "test/language/module-code/instn-named-bndng-cls.js-strict:true": "test/language/module-code/instn-named-bndng-cls.js: ReferenceError: exports is not defined ", "test/language/module-code/instn-named-bndng-const.js-strict:true": "test/language/module-code/instn-named-bndng-const.js: ReferenceError: exports is not defined ", @@ -2304,17 +1894,6 @@ "test/language/module-code/parse-export-empty.js-strict:true": "test/language/module-code/parse-export-empty.js: ReferenceError: exports is not defined ", "test/language/module-code/privatename-valid-no-earlyerr.js-strict:true": "test/language/module-code/privatename-valid-no-earlyerr.js: SyntaxError: test/language/module-code/privatename-valid-no-earlyerr.js: Unexpected character '#' (33:2)\n 31 | \n 32 | class outer {\n> 33 | #x = 42;\n | ^\n 34 | \n 35 | f() {\n 36 | var self = this; ", "test/language/reserved-words/await-module.js-strict:true": "test/language/reserved-words/await-module.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/reserved-words/ident-reference-false.js-strict:true": "test/language/reserved-words/ident-reference-false.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/reserved-words/ident-reference-null.js-strict:true": "test/language/reserved-words/ident-reference-null.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/reserved-words/ident-reference-true.js-strict:true": "test/language/reserved-words/ident-reference-true.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/rest-parameters/array-pattern.js-strict:true": "test/language/rest-parameters/array-pattern.js: SyntaxError: test/language/rest-parameters/array-pattern.js: Unexpected token (16:18)\n 14 | ---*/\n 15 | \n> 16 | function empty(...[]) {}\n | ^\n 17 | \n 18 | function emptyWithArray(...[[]]) {}\n 19 | ", - "test/language/rest-parameters/object-pattern.js-strict:true": "test/language/rest-parameters/object-pattern.js: SyntaxError: test/language/rest-parameters/object-pattern.js: Unexpected token (16:18)\n 14 | ---*/\n 15 | \n> 16 | function empty(...{}) {}\n | ^\n 17 | \n 18 | function emptyWithArray(...{p: []}) {}\n 19 | ", - "test/language/statementList/eval-block-arrow-function-assignment-expr.js-strict:true": "test/language/statementList/eval-block-arrow-function-assignment-expr.js: SyntaxError: SyntaxError: : Line 1:4 Unexpected token ) (and 1 more errors) ", - "test/language/statementList/eval-block-arrow-function-functionbody.js-strict:true": "test/language/statementList/eval-block-arrow-function-functionbody.js: SyntaxError: SyntaxError: : Line 1:4 Unexpected token ) (and 3 more errors) ", - "test/language/statementList/eval-block-expr-arrow-function-boolean-literal.js-strict:true": "test/language/statementList/eval-block-expr-arrow-function-boolean-literal.js: SyntaxError: SyntaxError: : Line 1:4 Unexpected token ) (and 1 more errors) ", - "test/language/statementList/eval-block-with-statment-arrow-function-assignment-expr.js-strict:true": "test/language/statementList/eval-block-with-statment-arrow-function-assignment-expr.js: SyntaxError: SyntaxError: : Line 1:16 Unexpected token ) (and 1 more errors) ", - "test/language/statementList/eval-block-with-statment-arrow-function-functionbody.js-strict:true": "test/language/statementList/eval-block-with-statment-arrow-function-functionbody.js: SyntaxError: SyntaxError: : Line 1:16 Unexpected token ) (and 3 more errors) ", - "test/language/statementList/eval-block-with-statment-expr-arrow-function-boolean-literal.js-strict:true": "test/language/statementList/eval-block-with-statment-expr-arrow-function-boolean-literal.js: SyntaxError: SyntaxError: : Line 1:16 Unexpected token ) (and 1 more errors) ", "test/language/statementList/eval-class-array-literal-with-item.js-strict:true": "test/language/statementList/eval-class-array-literal-with-item.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/statementList/eval-class-array-literal.js-strict:true": "test/language/statementList/eval-class-array-literal.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/statementList/eval-class-arrow-function-assignment-expr.js-strict:true": "test/language/statementList/eval-class-arrow-function-assignment-expr.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", @@ -2325,9 +1904,6 @@ "test/language/statementList/eval-class-let-declaration.js-strict:true": "test/language/statementList/eval-class-let-declaration.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/statementList/eval-class-regexp-literal-flags.js-strict:true": "test/language/statementList/eval-class-regexp-literal-flags.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/statementList/eval-class-regexp-literal.js-strict:true": "test/language/statementList/eval-class-regexp-literal.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", - "test/language/statementList/eval-fn-arrow-function-assignment-expr.js-strict:true": "test/language/statementList/eval-fn-arrow-function-assignment-expr.js: SyntaxError: SyntaxError: : Line 1:18 Unexpected token ) (and 1 more errors) ", - "test/language/statementList/eval-fn-arrow-function-functionbody.js-strict:true": "test/language/statementList/eval-fn-arrow-function-functionbody.js: SyntaxError: SyntaxError: : Line 1:18 Unexpected token ) (and 3 more errors) ", - "test/language/statementList/eval-fn-expr-arrow-function-boolean-literal.js-strict:true": "test/language/statementList/eval-fn-expr-arrow-function-boolean-literal.js: SyntaxError: SyntaxError: : Line 1:18 Unexpected token ) (and 1 more errors) ", "test/language/statements/class/class-name-ident-await-escaped.js-strict:true": "test/language/statements/class/class-name-ident-await-escaped.js: SyntaxError: test/language/statements/class/class-name-ident-await-escaped.js: await is a reserved word (18:6)\n 16 | ---*/\n 17 | \n> 18 | class aw\\u0061it {}\n | ^\n 19 | ", "test/language/statements/class/class-name-ident-await.js-strict:true": "test/language/statements/class/class-name-ident-await.js: SyntaxError: test/language/statements/class/class-name-ident-await.js: await is a reserved word (17:6)\n 15 | ---*/\n 16 | \n> 17 | class await {}\n | ^\n 18 | ", "test/language/statements/class/classelementname-abrupt-completion.js-strict:true": "test/language/statements/class/classelementname-abrupt-completion.js: SyntaxError: test/language/statements/class/classelementname-abrupt-completion.js: Missing class properties transform.\n 39 | assert.throws(Test262Error, function() {\n 40 | class C {\n> 41 | [f()]\n | ^\n 42 | }\n 43 | });\n 44 | ", @@ -2407,18 +1983,14 @@ "test/language/statements/class/definition/fn-name-accessor-set.js-strict:true": "test/language/statements/class/definition/fn-name-accessor-set.js: Test262Error: Expected SameValue(«set», «set id») to be true ", "test/language/statements/class/definition/fn-name-method.js-strict:true": "test/language/statements/class/definition/fn-name-method.js: Test262Error: via anonymous Symbol Expected SameValue(«value», «») to be true ", "test/language/statements/class/definition/getters-prop-desc.js-strict:true": "test/language/statements/class/definition/getters-prop-desc.js: Test262Error: The result of `'prototype' in desc.get` is `false` Expected SameValue(«true», «false») to be true ", - "test/language/statements/class/definition/getters-restricted-ids.js-strict:true": "test/language/statements/class/definition/getters-restricted-ids.js: TypeError: Cannot redefine property: arguments ", - "test/language/statements/class/definition/methods-named-eval-arguments.js-strict:true": "test/language/statements/class/definition/methods-named-eval-arguments.js: TypeError: Cannot redefine property: arguments ", - "test/language/statements/class/definition/methods-restricted-properties.js-strict:true": "test/language/statements/class/definition/methods-restricted-properties.js: Test262Error: No \"caller\" own property (method) Expected SameValue(«true», «false») to be true ", "test/language/statements/class/definition/methods.js-strict:true": "test/language/statements/class/definition/methods.js: Test262Error: The result of `'prototype' in desc.value` is `false` Expected SameValue(«true», «false») to be true ", "test/language/statements/class/definition/numeric-property-names.js-strict:true": "test/language/statements/class/definition/numeric-property-names.js: Test262Error: The result of `'prototype' in desc.value` is `false` Expected SameValue(«true», «false») to be true ", "test/language/statements/class/definition/prototype-property.js-strict:true": "test/language/statements/class/definition/prototype-property.js: Test262Error: The value of `descr.writable` is `false` Expected SameValue(«true», «false») to be true ", "test/language/statements/class/definition/setters-prop-desc.js-strict:true": "test/language/statements/class/definition/setters-prop-desc.js: Test262Error: The result of `'prototype' in descr.set` is `false` Expected SameValue(«true», «false») to be true ", - "test/language/statements/class/definition/setters-restricted-ids.js-strict:true": "test/language/statements/class/definition/setters-restricted-ids.js: TypeError: Cannot redefine property: arguments ", "test/language/statements/class/definition/this-access-restriction-2.js-strict:true": "test/language/statements/class/definition/this-access-restriction-2.js: SyntaxError: test/language/statements/class/definition/this-access-restriction-2.js: 'this' is not allowed before super()\n 19 | var exn;\n 20 | try {\n> 21 | this.prp1 = 3;\n | ^\n 22 | } catch (e) {\n 23 | exn = e;\n 24 | } ", "test/language/statements/class/definition/this-access-restriction.js-strict:true": "test/language/statements/class/definition/this-access-restriction.js: SyntaxError: test/language/statements/class/definition/this-access-restriction.js: 'this' is not allowed before super()\n 19 | class C extends Base {\n 20 | constructor() {\n> 21 | super(this.x);\n | ^\n 22 | }\n 23 | }; new C();\n 24 | }); ", "test/language/statements/class/definition/this-check-ordering.js-strict:true": "test/language/statements/class/definition/this-check-ordering.js: test/language/statements/class/definition/this-check-ordering.js: Line 43:7 Unexpected reserved word (and 15 more errors)", - "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -2427,7 +1999,7 @@ "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...[...x]]) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js: Unexpected token (76:13)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | method([...{ length }]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -2450,7 +2022,7 @@ "test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js: Unexpected token (65:10)\n 63 | var callCount = 0;\n 64 | class C {\n> 65 | method({...x}) {\n | ^\n 66 | assert.sameValue(count, 1);\n 67 | \n 68 | verifyProperty(x, \"v\", { ", "test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | class C {\n> 66 | method({...rest}) {\n | ^\n 67 | assert.sameValue(rest.x, undefined);\n 68 | \n 69 | verifyProperty(rest, \"a\", { ", "test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js: Unexpected token (64:16)\n 62 | var callCount = 0;\n 63 | class C {\n> 64 | method({a, b, ...rest}) {\n | ^\n 65 | assert.sameValue(rest.a, undefined);\n 66 | assert.sameValue(rest.b, undefined);\n 67 | ", - "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -2459,7 +2031,7 @@ "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...[...x]]) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: Unexpected token (76:20)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | static method([...{ length }]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", + "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", @@ -3289,7 +2861,6 @@ "test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js-strict:true": "test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js: SyntaxError: test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js: Unexpected token (27:22)\n 25 | class C {\n 26 | ;;;;\n> 27 | ;;;;;;'a'; \"b\"; 'c' = 39;\n | ^\n 28 | \"d\" = 42;;;;;;;\n 29 | ;;;;\n 30 | ", "test/language/statements/class/name-binding/const.js-strict:true": "test/language/statements/class/name-binding/const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/name-binding/in-extends-expression-assigned.js-strict:true": "test/language/statements/class/name-binding/in-extends-expression-assigned.js: Test262Error: Expected a ReferenceError but got a TypeError ", - "test/language/statements/class/restricted-properties.js-strict:true": "test/language/statements/class/restricted-properties.js: Test262Error: No \"caller\" own property Expected SameValue(«true», «false») to be true ", "test/language/statements/class/scope-meth-paramsbody-var-open.js-strict:true": "test/language/statements/class/scope-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/statements/class/scope-name-lex-open-heritage.js-strict:true": "test/language/statements/class/scope-name-lex-open-heritage.js: Test262Error: inner binding is independent Expected SameValue(«null», «function C() {_classCallCheck(this, C);return _possibleConstructorReturn(this, (C.__proto__ || Object.getPrototypeOf(C)).apply(this, arguments));}») to be true ", "test/language/statements/class/scope-name-lex-open-no-heritage.js-strict:true": "test/language/statements/class/scope-name-lex-open-no-heritage.js: Test262Error: inner binding rejects modification Expected a TypeError to be thrown but no exception was thrown at all ", @@ -3379,7 +2950,7 @@ "test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js-strict:true": "test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js: SyntaxError: test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js: missing super() call in constructor\n 32 | \n 33 | class Foo extends null {\n> 34 | constructor() {\n | ^\n 35 | }\n 36 | }\n 37 | ", "test/language/statements/class/subclass/class-definition-null-proto-super.js-strict:true": "test/language/statements/class/subclass/class-definition-null-proto-super.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/subclass/class-definition-null-proto-this.js-strict:true": "test/language/statements/class/subclass/class-definition-null-proto-this.js: SyntaxError: test/language/statements/class/subclass/class-definition-null-proto-this.js: missing super() call in constructor\n 28 | \n 29 | class C extends null {\n> 30 | constructor() {\n | ^\n 31 | // Use an arrow function to access the `this` binding of the class constructor.\n 32 | assert.throws(ReferenceError, () => {\n 33 | this; ", - "test/language/statements/class/subclass/default-constructor-spread-override.js-strict:true": "test/language/statements/class/subclass/default-constructor-spread-override.js: Test262Error: Expected SameValue(«undefined», «spread-value») to be true ", + "test/language/statements/class/subclass/default-constructor-spread-override.js-strict:true": "test/language/statements/class/subclass/default-constructor-spread-override.js: Test262Error: spread-value ", "test/language/statements/class/subclass/derived-class-return-override-with-boolean.js-strict:true": "test/language/statements/class/subclass/derived-class-return-override-with-boolean.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/subclass/derived-class-return-override-with-null.js-strict:true": "test/language/statements/class/subclass/derived-class-return-override-with-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/subclass/derived-class-return-override-with-number.js-strict:true": "test/language/statements/class/subclass/derived-class-return-override-with-number.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", @@ -3389,362 +2960,49 @@ "test/language/statements/class/super/in-constructor-superproperty-evaluation.js-strict:true": "test/language/statements/class/super/in-constructor-superproperty-evaluation.js: SyntaxError: test/language/statements/class/super/in-constructor-superproperty-evaluation.js: 'super.*' is not allowed before super()\n 9 | class Derived extends Object {\n 10 | constructor() {\n> 11 | super[super()];\n | ^\n 12 | throw new Test262Error();\n 13 | }\n 14 | } ", "test/language/statements/class/syntax/class-body-method-definition-super-property.js-strict:true": "test/language/statements/class/syntax/class-body-method-definition-super-property.js: Test262Error: Expected SameValue(«undefined», «1») to be true ", "test/language/statements/class/syntax/escaped-static.js-strict:true": "test/language/statements/class/syntax/escaped-static.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/statements/const/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/const/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/const/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/const/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (54:10)\n 52 | ---*/\n 53 | \n> 54 | const [...[x, y, z]] = [3, 4, 5];\n | ^\n 55 | \n 56 | assert.sameValue(x, 3);\n 57 | assert.sameValue(y, 4); ", - "test/language/statements/const/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/const/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (35:10)\n 33 | var values = [1, 2, 3];\n 34 | \n> 35 | const [...[...x]] = values;\n | ^\n 36 | \n 37 | assert(Array.isArray(x));\n 38 | assert.sameValue(x.length, 3); ", - "test/language/statements/const/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/const/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (34:10)\n 32 | ---*/\n 33 | \n> 34 | const [...{ length }] = [1, 2, 3];\n | ^\n 35 | \n 36 | assert.sameValue(length, 3);\n 37 | ", - "test/language/statements/const/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/const/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/const/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (35:10)\n 33 | let length = \"outer\";\n 34 | \n> 35 | const [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9];\n | ^\n 36 | \n 37 | assert.sameValue(v, 7);\n 38 | assert.sameValue(w, 8); ", - "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/const/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/const/dstr/obj-ptrn-rest-getter.js: Unexpected token (23:7)\n 21 | var count = 0;\n 22 | \n> 23 | const {...x} = { get v() { count++; return 2; } };\n | ^\n 24 | \n 25 | assert.sameValue(count, 1);\n 26 | ", - "test/language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (24:7)\n 22 | Object.defineProperty(o, \"x\", { value: 4, enumerable: false });\n 23 | \n> 24 | const {...rest} = o;\n | ^\n 25 | \n 26 | assert.sameValue(rest.x, undefined);\n 27 | ", - "test/language/statements/const/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/const/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/const/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (22:13)\n 20 | ---*/\n 21 | \n> 22 | const {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3};\n | ^\n 23 | \n 24 | assert.sameValue(rest.a, undefined);\n 25 | assert.sameValue(rest.b, undefined); ", "test/language/statements/for-await-of/let-block-with-newline.js-strict:false": "test/language/statements/for-await-of/let-block-with-newline.js: SyntaxError: test/language/statements/for-await-of/let-block-with-newline.js: Unexpected token (16:14)\n 14 | ---*/\n 15 | \n> 16 | async function* f() {\n | ^\n 17 | for await (var x of []) let // ASI\n 18 | {}\n 19 | } ", "test/language/statements/for-await-of/let-identifier-with-newline.js-strict:false": "test/language/statements/for-await-of/let-identifier-with-newline.js: SyntaxError: test/language/statements/for-await-of/let-identifier-with-newline.js: Unexpected token (16:14)\n 14 | ---*/\n 15 | \n> 16 | async function* f() {\n | ^\n 17 | for await (var x of []) let // ASI\n 18 | x = 1;\n 19 | } ", "test/language/statements/for-in/dstr/array-rest-before-elision.js-strict:true": "test/language/statements/for-in/dstr/array-rest-before-elision.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-in/dstr/array-rest-elision-invalid.js-strict:true": "test/language/statements/for-in/dstr/array-rest-elision-invalid.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/statements/for-in/scope-body-lex-open.js-strict:true": "test/language/statements/for-in/scope-body-lex-open.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-in/scope-head-lex-close.js-strict:true": "test/language/statements/for-in/scope-head-lex-close.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-in/scope-head-var-none.js-strict:false": "test/language/statements/for-in/scope-head-var-none.js: Test262Error: reference preceding statement Expected SameValue(«1», «2») to be true ", - "test/language/statements/for-of/dstr/array-elem-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/array-elem-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", "test/language/statements/for-of/dstr/array-elem-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/array-elem-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/statements/for-of/dstr/array-elem-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/array-elem-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/array-elem-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/array-elem-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/array-elem-init-simple-no-strict.js-strict:false": "test/language/statements/for-of/dstr/array-elem-init-simple-no-strict.js: SyntaxError: test/language/statements/for-of/dstr/array-elem-init-simple-no-strict.js: eval is a reserved word in strict mode (27:14)\n 25 | [...]\n 26 | ---*/\n> 27 | var argument, eval;\n | ^\n 28 | \n 29 | var counter = 0;\n 30 | ", - "test/language/statements/for-of/dstr/array-elem-iter-nrml-close-null.js-strict:true": "test/language/statements/for-of/dstr/array-elem-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-iter-thrw-close-err.js-strict:true": "test/language/statements/for-of/dstr/array-elem-iter-thrw-close-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-elem-iter-thrw-close.js-strict:true": "test/language/statements/for-of/dstr/array-elem-iter-thrw-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-elem-put-const.js-strict:true": "test/language/statements/for-of/dstr/array-elem-put-const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-put-let.js-strict:true": "test/language/statements/for-of/dstr/array-elem-put-let.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-put-unresolvable-strict.js-strict:true": "test/language/statements/for-of/dstr/array-elem-put-unresolvable-strict.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-target-simple-no-strict.js-strict:false": "test/language/statements/for-of/dstr/array-elem-target-simple-no-strict.js: SyntaxError: test/language/statements/for-of/dstr/array-elem-target-simple-no-strict.js: eval is a reserved word in strict mode (27:14)\n 25 | [...]\n 26 | ---*/\n> 27 | var argument, eval;\n | ^\n 28 | \n 29 | var counter = 0;\n 30 | ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-nrml-close-null.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-nrml-close-null.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-err.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close-err.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close-err.js: Test262Error: Expected SameValue(«11», «1») to be true ", - "test/language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close.js-strict:true": "test/language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close.js: Test262Error: Expected SameValue(«11», «1») to be true ", - "test/language/statements/for-of/dstr/array-elision-iter-nrml-close-null.js-strict:true": "test/language/statements/for-of/dstr/array-elision-iter-nrml-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-empty-iter-close-err.js-strict:true": "test/language/statements/for-of/dstr/array-empty-iter-close-err.js: Test262Error: Expected a Test262Error to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-empty-iter-close-null.js-strict:true": "test/language/statements/for-of/dstr/array-empty-iter-close-null.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-empty-iter-close.js-strict:true": "test/language/statements/for-of/dstr/array-empty-iter-close.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-empty-val-bool.js-strict:true": "test/language/statements/for-of/dstr/array-empty-val-bool.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-empty-val-num.js-strict:true": "test/language/statements/for-of/dstr/array-empty-val-num.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-empty-val-symbol.js-strict:true": "test/language/statements/for-of/dstr/array-empty-val-symbol.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/for-of/dstr/array-rest-before-elision.js-strict:true": "test/language/statements/for-of/dstr/array-rest-before-elision.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/dstr/array-rest-elision-invalid.js-strict:true": "test/language/statements/for-of/dstr/array-rest-elision-invalid.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/statements/for-of/dstr/array-rest-iter-thrw-close-err.js-strict:true": "test/language/statements/for-of/dstr/array-rest-iter-thrw-close-err.js: Test262Error: Expected SameValue(«11», «0») to be true ", - "test/language/statements/for-of/dstr/array-rest-iter-thrw-close.js-strict:true": "test/language/statements/for-of/dstr/array-rest-iter-thrw-close.js: Test262Error: Expected SameValue(«11», «0») to be true ", - "test/language/statements/for-of/dstr/array-rest-lref-err.js-strict:true": "test/language/statements/for-of/dstr/array-rest-lref-err.js: Test262Error: Expected SameValue(«1», «0») to be true ", - "test/language/statements/for-of/dstr/array-rest-nested-obj-null.js-strict:true": "test/language/statements/for-of/dstr/array-rest-nested-obj-null.js: SyntaxError: test/language/statements/for-of/dstr/array-rest-nested-obj-null.js: Unexpected token (32:9)\n 30 | var counter = 0;\n 31 | \n> 32 | for ([...{ 0: x, length }] of [[null]]) {\n | ^\n 33 | assert.sameValue(x, null);\n 34 | assert.sameValue(length, 1);\n 35 | counter += 1; ", - "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-hole.js-strict:true": "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-hole.js: SyntaxError: test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-hole.js: Unexpected token (35:9)\n 33 | var counter = 0;\n 34 | \n> 35 | for ([...{ 0: x, length }] of [[ , ]]) {\n | ^\n 36 | assert.sameValue(x, undefined);\n 37 | assert.sameValue(length, 1);\n 38 | counter += 1; ", - "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-own.js-strict:true": "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-own.js: SyntaxError: test/language/statements/for-of/dstr/array-rest-nested-obj-undefined-own.js: Unexpected token (35:9)\n 33 | var counter = 0;\n 34 | \n> 35 | for ([...{ 0: x, length }] of [[undefined]]) {\n | ^\n 36 | assert.sameValue(x, undefined);\n 37 | assert.sameValue(length, 1);\n 38 | counter += 1; ", - "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined.js-strict:true": "test/language/statements/for-of/dstr/array-rest-nested-obj-undefined.js: SyntaxError: test/language/statements/for-of/dstr/array-rest-nested-obj-undefined.js: Unexpected token (35:9)\n 33 | var counter = 0;\n 34 | \n> 35 | for ([...{ 0: x, length }] of [[]]) {\n | ^\n 36 | assert.sameValue(x, undefined);\n 37 | assert.sameValue(length, 0);\n 38 | counter += 1; ", - "test/language/statements/for-of/dstr/array-rest-nested-obj.js-strict:true": "test/language/statements/for-of/dstr/array-rest-nested-obj.js: SyntaxError: test/language/statements/for-of/dstr/array-rest-nested-obj.js: Unexpected token (32:9)\n 30 | var counter = 0;\n 31 | \n> 32 | for ([...{ 1: x }] of [[1, 2, 3]]) {\n | ^\n 33 | assert.sameValue(x, 2);\n 34 | counter += 1;\n 35 | } ", - "test/language/statements/for-of/dstr/array-rest-put-const.js-strict:true": "test/language/statements/for-of/dstr/array-rest-put-const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-rest-put-let.js-strict:true": "test/language/statements/for-of/dstr/array-rest-put-let.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/array-rest-put-unresolvable-strict.js-strict:true": "test/language/statements/for-of/dstr/array-rest-put-unresolvable-strict.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-elem.js: Unexpected token (75:15)\n 73 | var iterCount = 0;\n 74 | \n> 75 | for (const [...[x, y, z]] of [[3, 4, 5]]) {\n | ^\n 76 | assert.sameValue(x, 3);\n 77 | assert.sameValue(y, 4);\n 78 | assert.sameValue(z, 5); ", - "test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for-of/dstr/const-ary-ptrn-rest-ary-rest.js: Unexpected token (56:15)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (const [...[...x]] of [values]) {\n | ^\n 57 | assert(Array.isArray(x));\n 58 | assert.sameValue(x.length, 3);\n 59 | assert.sameValue(x[0], 1); ", - "test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-id.js: Unexpected token (55:15)\n 53 | var iterCount = 0;\n 54 | \n> 55 | for (const [...{ length }] of [[1, 2, 3]]) {\n | ^\n 56 | assert.sameValue(length, 3);\n 57 | \n 58 | iterCount += 1; ", - "test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for-of/dstr/const-ary-ptrn-rest-obj-prop-id.js: Unexpected token (56:15)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (const [...{ 0: v, 1: w, 2: x, 3: y, length: z }] of [[7, 8, 9]]) {\n | ^\n 57 | assert.sameValue(v, 7);\n 58 | assert.sameValue(w, 8);\n 59 | assert.sameValue(x, 9); ", - "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/const-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for-of/dstr/const-obj-ptrn-rest-getter.js: Unexpected token (44:12)\n 42 | var iterCount = 0;\n 43 | \n> 44 | for (const {...x} of [{ get v() { count++; return 2; } }]) {\n | ^\n 45 | assert.sameValue(count, 1);\n 46 | \n 47 | verifyProperty(x, \"v\", { ", - "test/language/statements/for-of/dstr/const-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for-of/dstr/const-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (45:12)\n 43 | var iterCount = 0;\n 44 | \n> 45 | for (const {...rest} of [o]) {\n | ^\n 46 | assert.sameValue(rest.x, undefined);\n 47 | \n 48 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for-of/dstr/const-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for-of/dstr/const-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for-of/dstr/const-obj-ptrn-rest-val-obj.js: Unexpected token (43:18)\n 41 | var iterCount = 0;\n 42 | \n> 43 | for (const {a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {\n | ^\n 44 | assert.sameValue(rest.a, undefined);\n 45 | assert.sameValue(rest.b, undefined);\n 46 | ", - "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-elem.js: Unexpected token (75:13)\n 73 | var iterCount = 0;\n 74 | \n> 75 | for (let [...[x, y, z]] of [[3, 4, 5]]) {\n | ^\n 76 | assert.sameValue(x, 3);\n 77 | assert.sameValue(y, 4);\n 78 | assert.sameValue(z, 5); ", - "test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for-of/dstr/let-ary-ptrn-rest-ary-rest.js: Unexpected token (56:13)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (let [...[...x]] of [values]) {\n | ^\n 57 | assert(Array.isArray(x));\n 58 | assert.sameValue(x.length, 3);\n 59 | assert.sameValue(x[0], 1); ", - "test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-id.js: Unexpected token (55:13)\n 53 | var iterCount = 0;\n 54 | \n> 55 | for (let [...{ length }] of [[1, 2, 3]]) {\n | ^\n 56 | assert.sameValue(length, 3);\n 57 | \n 58 | iterCount += 1; ", - "test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for-of/dstr/let-ary-ptrn-rest-obj-prop-id.js: Unexpected token (56:13)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (let [...{ 0: v, 1: w, 2: x, 3: y, length: z }] of [[7, 8, 9]]) {\n | ^\n 57 | assert.sameValue(v, 7);\n 58 | assert.sameValue(w, 8);\n 59 | assert.sameValue(x, 9); ", - "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/let-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for-of/dstr/let-obj-ptrn-rest-getter.js: Unexpected token (44:10)\n 42 | var iterCount = 0;\n 43 | \n> 44 | for (let {...x} of [{ get v() { count++; return 2; } }]) {\n | ^\n 45 | assert.sameValue(count, 1);\n 46 | \n 47 | verifyProperty(x, \"v\", { ", - "test/language/statements/for-of/dstr/let-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for-of/dstr/let-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (45:10)\n 43 | var iterCount = 0;\n 44 | \n> 45 | for (let {...rest} of [o]) {\n | ^\n 46 | assert.sameValue(rest.x, undefined);\n 47 | \n 48 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for-of/dstr/let-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for-of/dstr/let-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for-of/dstr/let-obj-ptrn-rest-val-obj.js: Unexpected token (43:16)\n 41 | var iterCount = 0;\n 42 | \n> 43 | for (let {a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {\n | ^\n 44 | assert.sameValue(rest.a, undefined);\n 45 | assert.sameValue(rest.b, undefined);\n 46 | ", - "test/language/statements/for-of/dstr/obj-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/obj-id-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", "test/language/statements/for-of/dstr/obj-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/obj-id-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/statements/for-of/dstr/obj-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/obj-id-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/obj-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/obj-id-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/obj-id-init-simple-no-strict.js-strict:false": "test/language/statements/for-of/dstr/obj-id-init-simple-no-strict.js: SyntaxError: test/language/statements/for-of/dstr/obj-id-init-simple-no-strict.js: eval is a reserved word in strict mode (27:4)\n 25 | [...]\n 26 | ---*/\n> 27 | var eval, arguments;\n | ^\n 28 | \n 29 | var counter = 0;\n 30 | ", - "test/language/statements/for-of/dstr/obj-id-put-const.js-strict:true": "test/language/statements/for-of/dstr/obj-id-put-const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-id-put-let.js-strict:true": "test/language/statements/for-of/dstr/obj-id-put-let.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-id-put-unresolvable-strict.js-strict:true": "test/language/statements/for-of/dstr/obj-id-put-unresolvable-strict.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-id-simple-no-strict.js-strict:false": "test/language/statements/for-of/dstr/obj-id-simple-no-strict.js: SyntaxError: test/language/statements/for-of/dstr/obj-id-simple-no-strict.js: eval is a reserved word in strict mode (27:4)\n 25 | [...]\n 26 | ---*/\n> 27 | var eval, arguments;\n | ^\n 28 | \n 29 | var counter = 0;\n 30 | ", - "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-arrow.js: Test262Error: obj should have an own property name ", "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-class.js: Test262Error: descriptor value should be cls ", - "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-cover.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-elem-init-fn-name-fn.js: Test262Error: obj should have an own property name ", - "test/language/statements/for-of/dstr/obj-prop-put-const.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-put-const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-prop-put-let.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-put-let.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-prop-put-unresolvable-strict.js-strict:true": "test/language/statements/for-of/dstr/obj-prop-put-unresolvable-strict.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/dstr/obj-rest-computed-property-no-strict.js-strict:false": "test/language/statements/for-of/dstr/obj-rest-computed-property-no-strict.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-computed-property-no-strict.js: Unexpected token (32:13)\n 30 | var counter = 0;\n 31 | \n> 32 | for ({[a]:b, ...rest} of [{ foo: 1, bar: 2, baz: 3 }]) {\n | ^\n 33 | assert.sameValue(b, 1);\n 34 | assert.sameValue(rest.bar, 2);\n 35 | assert.sameValue(rest.baz, 3); ", - "test/language/statements/for-of/dstr/obj-rest-computed-property.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-computed-property.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-computed-property.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{ foo: 1, bar: 2, baz: 3 }]) {\n | ^\n 35 | assert.sameValue(b, 1);\n 36 | assert.sameValue(rest.bar, 2);\n 37 | assert.sameValue(rest.baz, 3); ", - "test/language/statements/for-of/dstr/obj-rest-descriptors.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-descriptors.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-descriptors.js: Unexpected token (36:6)\n 34 | var counter = 0;\n 35 | \n> 36 | for ({...rest} of [obj]) {\n | ^\n 37 | verifyProperty(rest, \"a\", {\n 38 | enumerable: true,\n 39 | writable: true, ", - "test/language/statements/for-of/dstr/obj-rest-empty-obj.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-empty-obj.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-empty-obj.js: Unexpected token (33:6)\n 31 | var counter = 0;\n 32 | \n> 33 | for ({...rest} of [{}]) {\n | ^\n 34 | assert.notSameValue(rest, undefined);\n 35 | assert.notSameValue(rest, null);\n 36 | assert.sameValue(typeof rest, \"object\"); ", - "test/language/statements/for-of/dstr/obj-rest-getter-abrupt-get-error.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-getter-abrupt-get-error.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-getter-abrupt-get-error.js: Unexpected token (34:8)\n 32 | \n 33 | assert.throws(Test262Error, function() {\n> 34 | for ({...x} of [{ get v() { count++; throw new Test262Error(); } }]) {\n | ^\n 35 | counter += 1;\n 36 | }\n 37 | counter += 1; ", - "test/language/statements/for-of/dstr/obj-rest-getter.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-getter.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-getter.js: Unexpected token (34:6)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({...x} of [{ get v() { count++; return 2; } }]) {\n | ^\n 35 | assert.sameValue(count, 1);\n 36 | \n 37 | verifyProperty(x, \"v\", { ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: 1, bar: 2 }]) {\n | ^\n 35 | assert.sameValue(b, 1);\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: [1], bar: 2 }]) {\n | ^\n 35 | assert.compareArray(b, [1]);\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1dot0.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: 1.0, bar: 2 }]) {\n | ^\n 35 | assert.sameValue(b, 1);\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-1e0.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: 1e0, bar: 2 }]) {\n | ^\n 35 | assert.sameValue(b, 1);\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: [1], bar: 2 }]) {\n | ^\n 35 | assert.compareArray(b, [1]);\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-array-1e0.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: [1e0], bar: 2 }]) {\n | ^\n 35 | assert.compareArray(b, [1]);\n 36 | \n 37 | ", - "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-non-string-computed-property-string-1.js: Unexpected token (34:13)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({[a]:b, ...rest} of [{[a]: \"1\", bar: 2 }]) {\n | ^\n 35 | assert.sameValue(b, \"1\");\n 36 | \n 37 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"1\"), undefined); ", - "test/language/statements/for-of/dstr/obj-rest-number.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-number.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-number.js: Unexpected token (33:6)\n 31 | var counter = 0;\n 32 | \n> 33 | for ({...rest} of [51]) {\n | ^\n 34 | assert.notSameValue(rest, undefined);\n 35 | assert.notSameValue(rest, null);\n 36 | assert(rest instanceof Object); ", - "test/language/statements/for-of/dstr/obj-rest-order.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-order.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-order.js: Unexpected token (37:6)\n 35 | var counter = 0;\n 36 | \n> 37 | for ({...rest} of [o]) {\n | ^\n 38 | assert(compareArray(calls, [1, 'z', 'a', \"Symbol(foo)\"]));\n 39 | assert.sameValue(Object.keys(rest).length, 3);\n 40 | counter += 1; ", - "test/language/statements/for-of/dstr/obj-rest-put-const.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-put-const.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-put-const.js: Unexpected token (33:8)\n 31 | \n 32 | assert.throws(TypeError, function() {\n> 33 | for ({...rest} of [{}\n | ^\n 34 | ]) {\n 35 | counter += 1;\n 36 | } ", - "test/language/statements/for-of/dstr/obj-rest-same-name.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-same-name.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-same-name.js: Unexpected token (38:10)\n 36 | var counter = 0;\n 37 | \n> 38 | for ({ x, ...z } of [o]) {\n | ^\n 39 | assert.sameValue(x, 42);\n 40 | assert.sameValue(y, undefined);\n 41 | assert.sameValue(z.y, 39); ", - "test/language/statements/for-of/dstr/obj-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-skip-non-enumerable.js: Unexpected token (35:6)\n 33 | var counter = 0;\n 34 | \n> 35 | for ({...rest} of [obj]) {\n | ^\n 36 | assert.sameValue(Object.getOwnPropertyDescriptor(rest, \"x\"), undefined);\n 37 | \n 38 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for-of/dstr/obj-rest-str-val.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-str-val.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-str-val.js: Unexpected token (33:6)\n 31 | var counter = 0;\n 32 | \n> 33 | for ({...rest} of [\"foo\"]) {\n | ^\n 34 | assert.sameValue(rest[\"0\"], \"f\");\n 35 | assert.sameValue(rest[\"1\"], \"o\");\n 36 | assert.sameValue(rest[\"2\"], \"o\"); ", - "test/language/statements/for-of/dstr/obj-rest-symbol-val.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-symbol-val.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-symbol-val.js: Unexpected token (33:6)\n 31 | var counter = 0;\n 32 | \n> 33 | for ({...rest} of [Symbol(\"foo\")]) {\n | ^\n 34 | assert.notSameValue(rest, undefined);\n 35 | assert.notSameValue(rest, null);\n 36 | assert(rest instanceof Object); ", - "test/language/statements/for-of/dstr/obj-rest-to-property-with-setter.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-to-property-with-setter.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-to-property-with-setter.js: Unexpected token (40:6)\n 38 | var counter = 0;\n 39 | \n> 40 | for ({...src.y} of [{ x: 1, y: 2}]) {\n | ^\n 41 | assert.sameValue(settedValue.x, 1);\n 42 | assert.sameValue(settedValue.y, 2);\n 43 | assert(!executedGetter, \"The property should not be accessed\"); ", - "test/language/statements/for-of/dstr/obj-rest-to-property.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-to-property.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-to-property.js: Unexpected token (33:6)\n 31 | var counter = 0;\n 32 | \n> 33 | for ({...src.y} of [{ x: 1, y: 2}]) {\n | ^\n 34 | assert.sameValue(src.y.x, 1);\n 35 | assert.sameValue(src.y.y, 2);\n 36 | ", - "test/language/statements/for-of/dstr/obj-rest-val-null.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-val-null.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-val-null.js: Unexpected token (33:8)\n 31 | \n 32 | assert.throws(TypeError, function() {\n> 33 | for ({...rest} of [null\n | ^\n 34 | ]) {\n 35 | counter += 1;\n 36 | } ", - "test/language/statements/for-of/dstr/obj-rest-val-undefined.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-val-undefined.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-val-undefined.js: Unexpected token (33:8)\n 31 | \n 32 | assert.throws(TypeError, function() {\n> 33 | for ({...rest} of [undefined\n | ^\n 34 | ]) {\n 35 | counter += 1;\n 36 | } ", - "test/language/statements/for-of/dstr/obj-rest-valid-object.js-strict:true": "test/language/statements/for-of/dstr/obj-rest-valid-object.js: SyntaxError: test/language/statements/for-of/dstr/obj-rest-valid-object.js: Unexpected token (34:12)\n 32 | var counter = 0;\n 33 | \n> 34 | for ({a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {\n | ^\n 35 | assert.sameValue(rest.a, undefined);\n 36 | assert.sameValue(rest.b, undefined);\n 37 | ", - "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-elem.js: Unexpected token (72:13)\n 70 | var iterCount = 0;\n 71 | \n> 72 | for (var [...[x, y, z]] of [[3, 4, 5]]) {\n | ^\n 73 | assert.sameValue(x, 3);\n 74 | assert.sameValue(y, 4);\n 75 | assert.sameValue(z, 5); ", - "test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for-of/dstr/var-ary-ptrn-rest-ary-rest.js: Unexpected token (53:13)\n 51 | var iterCount = 0;\n 52 | \n> 53 | for (var [...[...x]] of [values]) {\n | ^\n 54 | assert(Array.isArray(x));\n 55 | assert.sameValue(x.length, 3);\n 56 | assert.sameValue(x[0], 1); ", - "test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-id.js: Unexpected token (52:13)\n 50 | var iterCount = 0;\n 51 | \n> 52 | for (var [...{ length }] of [[1, 2, 3]]) {\n | ^\n 53 | assert.sameValue(length, 3);\n 54 | \n 55 | iterCount += 1; ", - "test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for-of/dstr/var-ary-ptrn-rest-obj-prop-id.js: Unexpected token (53:13)\n 51 | var iterCount = 0;\n 52 | \n> 53 | for (var [...{ 0: v, 1: w, 2: x, 3: y, length: z }] of [[7, 8, 9]]) {\n | ^\n 54 | assert.sameValue(v, 7);\n 55 | assert.sameValue(w, 8);\n 56 | assert.sameValue(x, 9); ", - "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for-of/dstr/var-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for-of/dstr/var-obj-ptrn-rest-getter.js: Unexpected token (41:10)\n 39 | var iterCount = 0;\n 40 | \n> 41 | for (var {...x} of [{ get v() { count++; return 2; } }]) {\n | ^\n 42 | assert.sameValue(count, 1);\n 43 | \n 44 | verifyProperty(x, \"v\", { ", - "test/language/statements/for-of/dstr/var-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for-of/dstr/var-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (42:10)\n 40 | var iterCount = 0;\n 41 | \n> 42 | for (var {...rest} of [o]) {\n | ^\n 43 | assert.sameValue(rest.x, undefined);\n 44 | \n 45 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for-of/dstr/var-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for-of/dstr/var-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for-of/dstr/var-obj-ptrn-rest-val-obj.js: Unexpected token (40:16)\n 38 | var iterCount = 0;\n 39 | \n> 40 | for (var {a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {\n | ^\n 41 | assert.sameValue(rest.a, undefined);\n 42 | assert.sameValue(rest.b, undefined);\n 43 | ", "test/language/statements/for-of/escaped-of.js-strict:true": "test/language/statements/for-of/escaped-of.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/head-decl-no-expr.js-strict:true": "test/language/statements/for-of/head-decl-no-expr.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/head-expr-no-expr.js-strict:true": "test/language/statements/for-of/head-expr-no-expr.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/head-var-no-expr.js-strict:true": "test/language/statements/for-of/head-var-no-expr.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/iterator-next-reference.js-strict:true": "test/language/statements/for-of/iterator-next-reference.js: Test262Error: Should not access the `next` method after the iteration prologue. ", - "test/language/statements/for-of/scope-body-lex-open.js-strict:true": "test/language/statements/for-of/scope-body-lex-open.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/scope-head-lex-close.js-strict:true": "test/language/statements/for-of/scope-head-lex-close.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", - "test/language/statements/for-of/scope-head-var-none.js-strict:false": "test/language/statements/for-of/scope-head-var-none.js: Test262Error: reference preceding statement Expected SameValue(«1», «2») to be true ", - "test/language/statements/for/dstr/const-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/for/dstr/const-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-elem-init.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-elem-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-elem-iter.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-elem-iter.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-rest-init.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-rest-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-rest-iter.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-ary-rest-iter.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-exhausted.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-exhausted.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-arrow.js: ReferenceError: arrow is not defined ", "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-cover.js: ReferenceError: cover is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-fn.js: ReferenceError: fn is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-hole.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-hole.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-skipped.js: ReferenceError: w is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-undef.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-undef.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-iter-complete.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-iter-complete.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-iter-done.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-iter-done.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-id-init.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-id-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-id.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-id.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-prop-id-init.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-prop-id-init.js: ReferenceError: v is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-prop-id.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-obj-prop-id.js: ReferenceError: v is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for/dstr/const-ary-ptrn-rest-ary-elem.js: Unexpected token (75:15)\n 73 | var iterCount = 0;\n 74 | \n> 75 | for (const [...[x, y, z]] = [3, 4, 5]; iterCount < 1; ) {\n | ^\n 76 | assert.sameValue(x, 3);\n 77 | assert.sameValue(y, 4);\n 78 | assert.sameValue(z, 5); ", - "test/language/statements/for/dstr/const-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for/dstr/const-ary-ptrn-rest-ary-rest.js: Unexpected token (56:15)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (const [...[...x]] = values; iterCount < 1; ) {\n | ^\n 57 | assert(Array.isArray(x));\n 58 | assert.sameValue(x.length, 3);\n 59 | assert.sameValue(x[0], 1); ", - "test/language/statements/for/dstr/const-ary-ptrn-rest-id-exhausted.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-rest-id-exhausted.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for/dstr/const-ary-ptrn-rest-obj-id.js: Unexpected token (55:15)\n 53 | var iterCount = 0;\n 54 | \n> 55 | for (const [...{ length }] = [1, 2, 3]; iterCount < 1; ) {\n | ^\n 56 | assert.sameValue(length, 3);\n 57 | \n 58 | iterCount += 1; ", - "test/language/statements/for/dstr/const-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for/dstr/const-ary-ptrn-rest-obj-prop-id.js: Unexpected token (56:15)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (const [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]; iterCount < 1; ) {\n | ^\n 57 | assert.sameValue(v, 7);\n 58 | assert.sameValue(w, 8);\n 59 | assert.sameValue(x, 9); ", - "test/language/statements/for/dstr/const-obj-init-undefined.js-strict:true": "test/language/statements/for/dstr/const-obj-init-undefined.js: TypeError: test/language/statements/for/dstr/const-obj-init-undefined.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/const-obj-ptrn-empty.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-empty.js: TypeError: test/language/statements/for/dstr/const-obj-ptrn-empty.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-arrow.js: ReferenceError: arrow is not defined ", "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-cover.js: ReferenceError: cover is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-fn.js: ReferenceError: fn is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-skipped.js: ReferenceError: w is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-id-trailing-comma.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-trailing-comma.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-ary-init.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-ary-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-ary-trailing-comma.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-ary-trailing-comma.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-ary.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-ary.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-id-init-skipped.js: ReferenceError: t is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-id-init.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-id-init.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-id-trailing-comma.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-id-trailing-comma.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-id.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-id.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-obj-init.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-obj-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-prop-obj.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-prop-obj.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for/dstr/const-obj-ptrn-rest-getter.js: Unexpected token (44:12)\n 42 | var iterCount = 0;\n 43 | \n> 44 | for (const {...x} = { get v() { count++; return 2; } }; iterCount < 1; ) {\n | ^\n 45 | assert.sameValue(count, 1);\n 46 | \n 47 | verifyProperty(x, \"v\", { ", - "test/language/statements/for/dstr/const-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for/dstr/const-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (45:12)\n 43 | var iterCount = 0;\n 44 | \n> 45 | for (const {...rest} = o; iterCount < 1; ) {\n | ^\n 46 | assert.sameValue(rest.x, undefined);\n 47 | \n 48 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for/dstr/const-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for/dstr/const-obj-ptrn-rest-val-obj.js: Unexpected token (43:18)\n 41 | var iterCount = 0;\n 42 | \n> 43 | for (const {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}; iterCount < 1; ) {\n | ^\n 44 | assert.sameValue(rest.a, undefined);\n 45 | assert.sameValue(rest.b, undefined);\n 46 | ", - "test/language/statements/for/dstr/let-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/for/dstr/let-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-elem-init.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-elem-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-elem-iter.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-elem-iter.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-rest-init.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-rest-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-rest-iter.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-ary-rest-iter.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-exhausted.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-exhausted.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-arrow.js: ReferenceError: arrow is not defined ", "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-cover.js: ReferenceError: cover is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-fn.js: ReferenceError: fn is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-hole.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-hole.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-skipped.js: ReferenceError: w is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-undef.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-undef.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-iter-complete.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-iter-complete.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-iter-done.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-iter-done.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-id-init.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-id-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-id.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-id.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-prop-id-init.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-prop-id-init.js: ReferenceError: v is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-prop-id.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-obj-prop-id.js: ReferenceError: v is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for/dstr/let-ary-ptrn-rest-ary-elem.js: Unexpected token (75:13)\n 73 | var iterCount = 0;\n 74 | \n> 75 | for (let [...[x, y, z]] = [3, 4, 5]; iterCount < 1; ) {\n | ^\n 76 | assert.sameValue(x, 3);\n 77 | assert.sameValue(y, 4);\n 78 | assert.sameValue(z, 5); ", - "test/language/statements/for/dstr/let-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for/dstr/let-ary-ptrn-rest-ary-rest.js: Unexpected token (56:13)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (let [...[...x]] = values; iterCount < 1; ) {\n | ^\n 57 | assert(Array.isArray(x));\n 58 | assert.sameValue(x.length, 3);\n 59 | assert.sameValue(x[0], 1); ", - "test/language/statements/for/dstr/let-ary-ptrn-rest-id-exhausted.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-rest-id-exhausted.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for/dstr/let-ary-ptrn-rest-obj-id.js: Unexpected token (55:13)\n 53 | var iterCount = 0;\n 54 | \n> 55 | for (let [...{ length }] = [1, 2, 3]; iterCount < 1; ) {\n | ^\n 56 | assert.sameValue(length, 3);\n 57 | \n 58 | iterCount += 1; ", - "test/language/statements/for/dstr/let-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for/dstr/let-ary-ptrn-rest-obj-prop-id.js: Unexpected token (56:13)\n 54 | var iterCount = 0;\n 55 | \n> 56 | for (let [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]; iterCount < 1; ) {\n | ^\n 57 | assert.sameValue(v, 7);\n 58 | assert.sameValue(w, 8);\n 59 | assert.sameValue(x, 9); ", - "test/language/statements/for/dstr/let-obj-init-undefined.js-strict:true": "test/language/statements/for/dstr/let-obj-init-undefined.js: TypeError: test/language/statements/for/dstr/let-obj-init-undefined.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/let-obj-ptrn-empty.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-empty.js: TypeError: test/language/statements/for/dstr/let-obj-ptrn-empty.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-arrow.js: ReferenceError: arrow is not defined ", "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-cover.js: ReferenceError: cover is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-fn.js: ReferenceError: fn is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-skipped.js: ReferenceError: w is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-id-trailing-comma.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-trailing-comma.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-ary-init.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-ary-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-ary-trailing-comma.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-ary-trailing-comma.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-ary.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-ary.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-id-init-skipped.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-id-init-skipped.js: ReferenceError: t is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-id-init.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-id-init.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-id-trailing-comma.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-id-trailing-comma.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-id.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-id.js: ReferenceError: y is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-obj-init.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-obj-init.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-prop-obj.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-prop-obj.js: ReferenceError: x is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for/dstr/let-obj-ptrn-rest-getter.js: Unexpected token (44:10)\n 42 | var iterCount = 0;\n 43 | \n> 44 | for (let {...x} = { get v() { count++; return 2; } }; iterCount < 1; ) {\n | ^\n 45 | assert.sameValue(count, 1);\n 46 | \n 47 | verifyProperty(x, \"v\", { ", - "test/language/statements/for/dstr/let-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for/dstr/let-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (45:10)\n 43 | var iterCount = 0;\n 44 | \n> 45 | for (let {...rest} = o; iterCount < 1; ) {\n | ^\n 46 | assert.sameValue(rest.x, undefined);\n 47 | \n 48 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for/dstr/let-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for/dstr/let-obj-ptrn-rest-val-obj.js: Unexpected token (43:16)\n 41 | var iterCount = 0;\n 42 | \n> 43 | for (let {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}; iterCount < 1; ) {\n | ^\n 44 | assert.sameValue(rest.a, undefined);\n 45 | assert.sameValue(rest.b, undefined);\n 46 | ", - "test/language/statements/for/dstr/var-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/for/dstr/var-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError but got a ReferenceError ", - "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for/dstr/var-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/for/dstr/var-ary-ptrn-rest-ary-elem.js: Unexpected token (69:13)\n 67 | var iterCount = 0;\n 68 | \n> 69 | for (var [...[x, y, z]] = [3, 4, 5]; iterCount < 1; ) {\n | ^\n 70 | assert.sameValue(x, 3);\n 71 | assert.sameValue(y, 4);\n 72 | assert.sameValue(z, 5); ", - "test/language/statements/for/dstr/var-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/for/dstr/var-ary-ptrn-rest-ary-rest.js: Unexpected token (50:13)\n 48 | var iterCount = 0;\n 49 | \n> 50 | for (var [...[...x]] = values; iterCount < 1; ) {\n | ^\n 51 | assert(Array.isArray(x));\n 52 | assert.sameValue(x.length, 3);\n 53 | assert.sameValue(x[0], 1); ", - "test/language/statements/for/dstr/var-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/for/dstr/var-ary-ptrn-rest-obj-id.js: Unexpected token (49:13)\n 47 | var iterCount = 0;\n 48 | \n> 49 | for (var [...{ length }] = [1, 2, 3]; iterCount < 1; ) {\n | ^\n 50 | assert.sameValue(length, 3);\n 51 | iterCount += 1;\n 52 | } ", - "test/language/statements/for/dstr/var-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/for/dstr/var-ary-ptrn-rest-obj-prop-id.js: Unexpected token (50:13)\n 48 | var iterCount = 0;\n 49 | \n> 50 | for (var [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]; iterCount < 1; ) {\n | ^\n 51 | assert.sameValue(v, 7);\n 52 | assert.sameValue(w, 8);\n 53 | assert.sameValue(x, 9); ", - "test/language/statements/for/dstr/var-obj-init-undefined.js-strict:true": "test/language/statements/for/dstr/var-obj-init-undefined.js: TypeError: test/language/statements/for/dstr/var-obj-init-undefined.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/var-obj-ptrn-empty.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-empty.js: TypeError: test/language/statements/for/dstr/var-obj-ptrn-empty.js: Property init of ForStatement expected node to be of a type [\"VariableDeclaration\",\"Expression\"] but instead got \"ExpressionStatement\" ", - "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/for/dstr/var-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/for/dstr/var-obj-ptrn-rest-getter.js: Unexpected token (38:10)\n 36 | var iterCount = 0;\n 37 | \n> 38 | for (var {...x} = { get v() { count++; return 2; } }; iterCount < 1; ) {\n | ^\n 39 | assert.sameValue(count, 1);\n 40 | \n 41 | verifyProperty(x, \"v\", { ", - "test/language/statements/for/dstr/var-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/for/dstr/var-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (39:10)\n 37 | var iterCount = 0;\n 38 | \n> 39 | for (var {...rest} = o; iterCount < 1; ) {\n | ^\n 40 | assert.sameValue(rest.x, undefined);\n 41 | \n 42 | verifyProperty(rest, \"a\", { ", - "test/language/statements/for/dstr/var-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/for/dstr/var-obj-ptrn-rest-val-obj.js: Unexpected token (37:16)\n 35 | var iterCount = 0;\n 36 | \n> 37 | for (var {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}; iterCount < 1; ) {\n | ^\n 38 | assert.sameValue(rest.a, undefined);\n 39 | assert.sameValue(rest.b, undefined);\n 40 | ", - "test/language/statements/function/arguments-with-arguments-fn.js-strict:false": "test/language/statements/function/arguments-with-arguments-fn.js: SyntaxError: test/language/statements/function/arguments-with-arguments-fn.js: arguments is a reserved word in strict mode (24:11)\n 22 | \n 23 | function f(x = args = arguments) {\n> 24 | function arguments() {}\n | ^\n 25 | }\n 26 | \n 27 | f(); ", - "test/language/statements/function/arguments-with-arguments-lex.js-strict:false": "test/language/statements/function/arguments-with-arguments-lex.js: SyntaxError: test/language/statements/function/arguments-with-arguments-lex.js: arguments is a reserved word in strict mode (24:6)\n 22 | \n 23 | function f(x = args = arguments) {\n> 24 | let arguments;\n | ^\n 25 | }\n 26 | \n 27 | f(); ", - "test/language/statements/function/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/function/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/function/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/function/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (77:15)\n 75 | \n 76 | var callCount = 0;\n> 77 | function f([...[x, y, z]]) {\n | ^\n 78 | assert.sameValue(x, 3);\n 79 | assert.sameValue(y, 4);\n 80 | assert.sameValue(z, 5); ", - "test/language/statements/function/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/function/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (58:15)\n 56 | \n 57 | var callCount = 0;\n> 58 | function f([...[...x]]) {\n | ^\n 59 | assert(Array.isArray(x));\n 60 | assert.sameValue(x.length, 3);\n 61 | assert.sameValue(x[0], 1); ", - "test/language/statements/function/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/function/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (57:15)\n 55 | \n 56 | var callCount = 0;\n> 57 | function f([...{ length }]) {\n | ^\n 58 | assert.sameValue(length, 3);\n 59 | callCount = callCount + 1;\n 60 | }; ", - "test/language/statements/function/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/function/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (58:15)\n 56 | \n 57 | var callCount = 0;\n> 58 | function f([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 59 | assert.sameValue(v, 7);\n 60 | assert.sameValue(w, 8);\n 61 | assert.sameValue(x, 9); ", - "test/language/statements/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (77:15)\n 75 | \n 76 | var callCount = 0;\n> 77 | function f([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 78 | assert.sameValue(x, 3);\n 79 | assert.sameValue(y, 4);\n 80 | assert.sameValue(z, 5); ", - "test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/function/dstr/dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (58:15)\n 56 | \n 57 | var callCount = 0;\n> 58 | function f([...[...x]] = values) {\n | ^\n 59 | assert(Array.isArray(x));\n 60 | assert.sameValue(x.length, 3);\n 61 | assert.sameValue(x[0], 1); ", - "test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-id.js: Unexpected token (57:15)\n 55 | \n 56 | var callCount = 0;\n> 57 | function f([...{ length }] = [1, 2, 3]) {\n | ^\n 58 | assert.sameValue(length, 3);\n 59 | callCount = callCount + 1;\n 60 | }; ", - "test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/function/dstr/dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (58:15)\n 56 | \n 57 | var callCount = 0;\n> 58 | function f([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 59 | assert.sameValue(v, 7);\n 60 | assert.sameValue(w, 8);\n 61 | assert.sameValue(x, 9); ", - "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js: Unexpected token (46:12)\n 44 | \n 45 | var callCount = 0;\n> 46 | function f({...x} = { get v() { count++; return 2; } }) {\n | ^\n 47 | assert.sameValue(count, 1);\n 48 | \n 49 | verifyProperty(x, \"v\", { ", - "test/language/statements/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (47:12)\n 45 | \n 46 | var callCount = 0;\n> 47 | function f({...rest} = o) {\n | ^\n 48 | assert.sameValue(rest.x, undefined);\n 49 | \n 50 | verifyProperty(rest, \"a\", { ", - "test/language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js: Unexpected token (45:18)\n 43 | \n 44 | var callCount = 0;\n> 45 | function f({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 46 | assert.sameValue(rest.a, undefined);\n 47 | assert.sameValue(rest.b, undefined);\n 48 | ", - "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/function/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/function/dstr/obj-ptrn-rest-getter.js: Unexpected token (46:12)\n 44 | \n 45 | var callCount = 0;\n> 46 | function f({...x}) {\n | ^\n 47 | assert.sameValue(count, 1);\n 48 | \n 49 | verifyProperty(x, \"v\", { ", - "test/language/statements/function/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/function/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (47:12)\n 45 | \n 46 | var callCount = 0;\n> 47 | function f({...rest}) {\n | ^\n 48 | assert.sameValue(rest.x, undefined);\n 49 | \n 50 | verifyProperty(rest, \"a\", { ", - "test/language/statements/function/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/function/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (45:18)\n 43 | \n 44 | var callCount = 0;\n> 45 | function f({a, b, ...rest}) {\n | ^\n 46 | assert.sameValue(rest.a, undefined);\n 47 | assert.sameValue(rest.b, undefined);\n 48 | ", - "test/language/statements/function/eval-var-scope-syntax-err.js-strict:false": "test/language/statements/function/eval-var-scope-syntax-err.js: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all ", - "test/language/statements/function/scope-param-elem-var-close.js-strict:false": "test/language/statements/function/scope-param-elem-var-close.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/statements/function/scope-param-elem-var-open.js-strict:false": "test/language/statements/function/scope-param-elem-var-open.js: Test262Error: Expected SameValue(«outside», «inside») to be true ", - "test/language/statements/function/scope-param-rest-elem-var-close.js-strict:false": "test/language/statements/function/scope-param-rest-elem-var-close.js: SyntaxError: test/language/statements/function/scope-param-rest-elem-var-close.js: Unexpected token (22:7)\n 20 | \n 21 | function f(\n> 22 | ...[_ = (eval('var x = \"inside\";'), probeParam = function() { return x; })]\n | ^\n 23 | ) {\n 24 | probeBody = function() { return x; }\n 25 | } ", - "test/language/statements/function/scope-param-rest-elem-var-open.js-strict:false": "test/language/statements/function/scope-param-rest-elem-var-open.js: SyntaxError: test/language/statements/function/scope-param-rest-elem-var-open.js: Unexpected token (23:7)\n 21 | function f(\n 22 | _ = probe1 = function() { return x; },\n> 23 | ...[__ = (eval('var x = \"inside\";'), probe2 = function() { return x; })]\n | ^\n 24 | ) {\n 25 | }\n 26 | f(); ", - "test/language/statements/function/scope-paramsbody-var-open.js-strict:true": "test/language/statements/function/scope-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/statements/labeled/let-array-with-newline.js-strict:false": "test/language/statements/labeled/let-array-with-newline.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/labeled/value-await-module-escaped.js-strict:true": "test/language/statements/labeled/value-await-module-escaped.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/labeled/value-await-module.js-strict:true": "test/language/statements/labeled/value-await-module.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/statements/let/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/let/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/let/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/let/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (54:8)\n 52 | ---*/\n 53 | \n> 54 | let [...[x, y, z]] = [3, 4, 5];\n | ^\n 55 | \n 56 | assert.sameValue(x, 3);\n 57 | assert.sameValue(y, 4); ", - "test/language/statements/let/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/let/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (35:8)\n 33 | var values = [1, 2, 3];\n 34 | \n> 35 | let [...[...x]] = values;\n | ^\n 36 | \n 37 | assert(Array.isArray(x));\n 38 | assert.sameValue(x.length, 3); ", - "test/language/statements/let/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/let/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (34:8)\n 32 | ---*/\n 33 | \n> 34 | let [...{ length }] = [1, 2, 3];\n | ^\n 35 | \n 36 | assert.sameValue(length, 3);\n 37 | ", - "test/language/statements/let/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/let/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (35:8)\n 33 | let length = \"outer\";\n 34 | \n> 35 | let [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9];\n | ^\n 36 | \n 37 | assert.sameValue(v, 7);\n 38 | assert.sameValue(w, 8); ", - "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/let/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/let/dstr/obj-ptrn-rest-getter.js: Unexpected token (23:5)\n 21 | var count = 0;\n 22 | \n> 23 | let {...x} = { get v() { count++; return 2; } };\n | ^\n 24 | \n 25 | assert.sameValue(count, 1);\n 26 | ", - "test/language/statements/let/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/let/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (24:5)\n 22 | Object.defineProperty(o, \"x\", { value: 4, enumerable: false });\n 23 | \n> 24 | let {...rest} = o;\n | ^\n 25 | \n 26 | assert.sameValue(rest.x, undefined);\n 27 | ", - "test/language/statements/let/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/let/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/let/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (22:11)\n 20 | ---*/\n 21 | \n> 22 | let {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3};\n | ^\n 23 | \n 24 | assert.sameValue(rest.a, undefined);\n 25 | assert.sameValue(rest.b, undefined); ", "test/language/statements/let/syntax/escaped-let.js-strict:false": "test/language/statements/let/syntax/escaped-let.js: SyntaxError: test/language/statements/let/syntax/escaped-let.js: let is a reserved word in strict mode (22:0)\n 20 | this.let = 0;\n 21 | \n> 22 | l\\u0065t // ASI\n | ^\n 23 | a;\n 24 | \n 25 | // If the parser treated the previous escaped \"let\" as a lexical declaration, ", "test/language/statements/try/completion-values.js-strict:true": "test/language/statements/try/completion-values.js: Test262Error: Expected SameValue(«39», «undefined») to be true ", - "test/language/statements/try/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/try/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/try/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/try/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (56:13)\n 54 | try {\n 55 | throw [3, 4, 5];\n> 56 | } catch ([...[x, y, z]]) {\n | ^\n 57 | assert.sameValue(x, 3);\n 58 | assert.sameValue(y, 4);\n 59 | assert.sameValue(z, 5); ", - "test/language/statements/try/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/try/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (37:13)\n 35 | try {\n 36 | throw values;\n> 37 | } catch ([...[...x]]) {\n | ^\n 38 | assert(Array.isArray(x));\n 39 | assert.sameValue(x.length, 3);\n 40 | assert.sameValue(x[0], 1); ", - "test/language/statements/try/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/try/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (36:13)\n 34 | try {\n 35 | throw [1, 2, 3];\n> 36 | } catch ([...{ length }]) {\n | ^\n 37 | assert.sameValue(length, 3);\n 38 | ranCatch = true;\n 39 | } ", - "test/language/statements/try/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/try/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/try/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (37:13)\n 35 | try {\n 36 | throw [7, 8, 9];\n> 37 | } catch ([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 38 | assert.sameValue(v, 7);\n 39 | assert.sameValue(w, 8);\n 40 | assert.sameValue(x, 9); ", - "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/try/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/try/dstr/obj-ptrn-rest-getter.js: Unexpected token (25:10)\n 23 | try {\n 24 | throw { get v() { count++; return 2; } };\n> 25 | } catch ({...x}) {\n | ^\n 26 | assert.sameValue(count, 1);\n 27 | \n 28 | verifyProperty(x, \"v\", { ", - "test/language/statements/try/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/try/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (26:10)\n 24 | try {\n 25 | throw o;\n> 26 | } catch ({...rest}) {\n | ^\n 27 | assert.sameValue(rest.x, undefined);\n 28 | \n 29 | verifyProperty(rest, \"a\", { ", - "test/language/statements/try/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/try/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/try/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (24:16)\n 22 | try {\n 23 | throw {x: 1, y: 2, a: 5, b: 3};\n> 24 | } catch ({a, b, ...rest}) {\n | ^\n 25 | assert.sameValue(rest.a, undefined);\n 26 | assert.sameValue(rest.b, undefined);\n 27 | ", - "test/language/statements/try/scope-catch-block-lex-open.js-strict:true": "test/language/statements/try/scope-catch-block-lex-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/statements/variable/dstr/ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/variable/dstr/ary-init-iter-get-err-array-prototype.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/variable/dstr/ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/variable/dstr/ary-ptrn-rest-ary-elem.js: Unexpected token (53:8)\n 51 | ---*/\n 52 | \n> 53 | var [...[x, y, z]] = [3, 4, 5];\n | ^\n 54 | \n 55 | assert.sameValue(x, 3);\n 56 | assert.sameValue(y, 4); ", - "test/language/statements/variable/dstr/ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/variable/dstr/ary-ptrn-rest-ary-rest.js: Unexpected token (34:8)\n 32 | var values = [1, 2, 3];\n 33 | \n> 34 | var [...[...x]] = values;\n | ^\n 35 | \n 36 | assert(Array.isArray(x));\n 37 | assert.sameValue(x.length, 3); ", - "test/language/statements/variable/dstr/ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/variable/dstr/ary-ptrn-rest-obj-id.js: Unexpected token (33:8)\n 31 | ---*/\n 32 | \n> 33 | var [...{ length }] = [1, 2, 3];\n | ^\n 34 | \n 35 | assert.sameValue(length, 3);\n 36 | ", - "test/language/statements/variable/dstr/ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/variable/dstr/ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/variable/dstr/ary-ptrn-rest-obj-prop-id.js: Unexpected token (34:8)\n 32 | let length = \"outer\";\n 33 | \n> 34 | var [...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9];\n | ^\n 35 | \n 36 | assert.sameValue(v, 7);\n 37 | assert.sameValue(w, 8); ", - "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", - "test/language/statements/variable/dstr/obj-ptrn-rest-getter.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/variable/dstr/obj-ptrn-rest-getter.js: Unexpected token (22:5)\n 20 | var count = 0;\n 21 | \n> 22 | var {...x} = { get v() { count++; return 2; } };\n | ^\n 23 | \n 24 | assert.sameValue(count, 1);\n 25 | ", - "test/language/statements/variable/dstr/obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/variable/dstr/obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (23:5)\n 21 | Object.defineProperty(o, \"x\", { value: 4, enumerable: false });\n 22 | \n> 23 | var {...rest} = o;\n | ^\n 24 | \n 25 | assert.sameValue(rest.x, undefined);\n 26 | ", - "test/language/statements/variable/dstr/obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/variable/dstr/obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/variable/dstr/obj-ptrn-rest-val-obj.js: Unexpected token (21:11)\n 19 | ---*/\n 20 | \n> 21 | var {a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3};\n | ^\n 22 | \n 23 | assert.sameValue(rest.a, undefined);\n 24 | assert.sameValue(rest.b, undefined); ", - "test/language/statements/with/unscopables-inc-dec.js-strict:false": "test/language/statements/with/unscopables-inc-dec.js: SyntaxError: test/language/statements/with/unscopables-inc-dec.js: 'with' in strict mode (25:0)\n 23 | var unscopablesGetterCalled = 0;\n 24 | var a, b, flag = true;\n> 25 | with (a = { x: 7 }) {\n | ^\n 26 | with (b = { x: 4, get [Symbol.unscopables]() {\n 27 | unscopablesGetterCalled++;\n 28 | return { x: flag=!flag }; ", "test/language/types/reference/put-value-prop-base-primitive.js-strict:true": "test/language/types/reference/put-value-prop-base-primitive.js: TypeError: Value is not an object: 0 ", "test/language/white-space/mongolian-vowel-separator.js-strict:true": "test/language/white-space/mongolian-vowel-separator.js: error is not an object (Test262: This statement should not be evaluated.)" } diff --git a/vendor/github.com/dop251/goja/README.md b/vendor/github.com/dop251/goja/README.md index 43edde91cd6..f1c59a910e4 100644 --- a/vendor/github.com/dop251/goja/README.md +++ b/vendor/github.com/dop251/goja/README.md @@ -92,18 +92,15 @@ and it includes an event loop. ### Can you implement (feature X from ES6 or higher)? -Some ES6 functionality has been implemented. So far this is mostly built-ins, not syntax enhancements. -See https://github.com/dop251/goja/milestone/1 for more details. - -The ongoing work is done in the es6 branch which is merged into master when appropriate. Every commit -in this branch represents a relatively stable state (i.e. it compiles and passes all enabled tc39 tests), -however because the version of tc39 tests I use is quite old, it may be not as well tested as the ES5.1 -functionality. Because ES6 is a superset of ES5.1 it should not break your existing code. - -I will be adding features in their dependency order and as quickly as my time allows. Please do not ask +I will be adding features in their dependency order and as quickly as time permits. Please do not ask for ETAs. Features that are open in the [milestone](https://github.com/dop251/goja/milestone/1) are either in progress or will be worked on next. +The ongoing work is done in separate feature branches which are merged into master when appropriate. +Every commit in these branches represents a relatively stable state (i.e. it compiles and passes all enabled tc39 tests), +however because the version of tc39 tests I use is quite old, it may be not as well tested as the ES5.1 functionality. Because there are (usually) no major breaking changes between ECMAScript revisions +it should not break your existing code. You are encouraged to give it a try and report any bugs found. Please do not submit fixes though without discussing it first, as the code could be changed in the meantime. + ### How do I contribute? Before submitting a pull request please make sure that: diff --git a/vendor/github.com/dop251/goja/array.go b/vendor/github.com/dop251/goja/array.go index b68fbcf9171..6723f3f5f80 100644 --- a/vendor/github.com/dop251/goja/array.go +++ b/vendor/github.com/dop251/goja/array.go @@ -31,7 +31,7 @@ func (ai *arrayIterObject) next() Value { if ai.kind == iterationKindKey { return ai.val.runtime.createIterResultObject(idxVal, false) } - elementValue := ai.obj.self.getIdx(idxVal, nil) + elementValue := nilSafe(ai.obj.self.getIdx(idxVal, nil)) var result Value if ai.kind == iterationKindValue { result = elementValue @@ -162,7 +162,7 @@ func (a *arrayObject) getIdx(idx valueInt, receiver Value) Value { func (a *arrayObject) getOwnPropStr(name unistring.String) Value { if len(a.values) > 0 { - if i := strToIdx(name); i != math.MaxUint32 { + if i := strToArrayIdx(name); i != math.MaxUint32 { if i < uint32(len(a.values)) { return a.values[i] } @@ -264,7 +264,7 @@ func (a *arrayObject) _setOwnIdx(idx uint32, val Value, throw bool) bool { } func (a *arrayObject) setOwnStr(name unistring.String, val Value, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._setOwnIdx(idx, val, throw) } else { if name == "length" { @@ -325,7 +325,7 @@ func (a *arrayObject) ownKeys(all bool, accum []Value) []Value { } func (a *arrayObject) hasOwnPropertyStr(name unistring.String) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return idx < uint32(len(a.values)) && a.values[idx] != nil } else { return a.baseObject.hasOwnPropertyStr(name) @@ -426,14 +426,14 @@ func (a *arrayObject) _defineIdxProperty(idx uint32, desc PropertyDescriptor, th a.propValueCount++ } } else { - a.val.self.(*sparseArrayObject).add(uint32(idx), prop) + a.val.self.(*sparseArrayObject).add(idx, prop) } } return ok } func (a *arrayObject) defineOwnPropertyStr(name unistring.String, descr PropertyDescriptor, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._defineIdxProperty(idx, descr, throw) } if name == "length" { @@ -467,7 +467,7 @@ func (a *arrayObject) _deleteIdxProp(idx uint32, throw bool) bool { } func (a *arrayObject) deleteStr(name unistring.String, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._deleteIdxProp(idx, throw) } return a.baseObject.deleteStr(name, throw) @@ -521,113 +521,3 @@ func toIdx(v valueInt) uint32 { } return math.MaxUint32 } - -func strToIdx64(s unistring.String) int64 { - if s == "" { - return -1 - } - l := len(s) - if s[0] == '0' { - if l == 1 { - return 0 - } - return -1 - } - var n int64 - if l < 19 { - // guaranteed not to overflow - for i := 0; i < len(s); i++ { - c := s[i] - if c < '0' || c > '9' { - return -1 - } - n = n*10 + int64(c-'0') - } - return n - } - if l > 19 { - // guaranteed to overflow - return -1 - } - c18 := s[18] - if c18 < '0' || c18 > '9' { - return -1 - } - for i := 0; i < 18; i++ { - c := s[i] - if c < '0' || c > '9' { - return -1 - } - n = n*10 + int64(c-'0') - } - if n >= math.MaxInt64/10+1 { - return -1 - } - n *= 10 - n1 := n + int64(c18-'0') - if n1 < n { - return -1 - } - return n1 -} - -func strToIdx(s unistring.String) uint32 { - if s == "" { - return math.MaxUint32 - } - l := len(s) - if s[0] == '0' { - if l == 1 { - return 0 - } - return math.MaxUint32 - } - var n uint32 - if l < 10 { - // guaranteed not to overflow - for i := 0; i < len(s); i++ { - c := s[i] - if c < '0' || c > '9' { - return math.MaxUint32 - } - n = n*10 + uint32(c-'0') - } - return n - } - if l > 10 { - // guaranteed to overflow - return math.MaxUint32 - } - c9 := s[9] - if c9 < '0' || c9 > '9' { - return math.MaxUint32 - } - for i := 0; i < 9; i++ { - c := s[i] - if c < '0' || c > '9' { - return math.MaxUint32 - } - n = n*10 + uint32(c-'0') - } - if n >= math.MaxUint32/10+1 { - return math.MaxUint32 - } - n *= 10 - n1 := n + uint32(c9-'0') - if n1 < n { - return math.MaxUint32 - } - - return n1 -} - -func strToGoIdx(s unistring.String) int { - if bits.UintSize == 64 { - return int(strToIdx64(s)) - } - i := strToIdx(s) - if i >= math.MaxInt32 { - return -1 - } - return int(i) -} diff --git a/vendor/github.com/dop251/goja/array_sparse.go b/vendor/github.com/dop251/goja/array_sparse.go index 904cf5313ce..dfb24d01df0 100644 --- a/vendor/github.com/dop251/goja/array_sparse.go +++ b/vendor/github.com/dop251/goja/array_sparse.go @@ -133,7 +133,7 @@ func (a *sparseArrayObject) getLengthProp() Value { } func (a *sparseArrayObject) getOwnPropStr(name unistring.String) Value { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._getIdx(idx) } if name == "length" { @@ -214,7 +214,7 @@ func (a *sparseArrayObject) _setOwnIdx(idx uint32, val Value, throw bool) bool { } func (a *sparseArrayObject) setOwnStr(name unistring.String, val Value, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._setOwnIdx(idx, val, throw) } else { if name == "length" { @@ -295,7 +295,7 @@ func (a *sparseArrayObject) setValues(values []Value, objCount int) { } func (a *sparseArrayObject) hasOwnPropertyStr(name unistring.String) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { i := a.findIdx(idx) return i < len(a.items) && a.items[i].idx == idx } else { @@ -372,7 +372,7 @@ func (a *sparseArrayObject) _defineIdxProperty(idx uint32, desc PropertyDescript } func (a *sparseArrayObject) defineOwnPropertyStr(name unistring.String, descr PropertyDescriptor, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._defineIdxProperty(idx, descr, throw) } if name == "length" { @@ -406,7 +406,7 @@ func (a *sparseArrayObject) _deleteIdxProp(idx uint32, throw bool) bool { } func (a *sparseArrayObject) deleteStr(name unistring.String, throw bool) bool { - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { return a._deleteIdxProp(idx, throw) } return a.baseObject.deleteStr(name, throw) diff --git a/vendor/github.com/dop251/goja/ast/node.go b/vendor/github.com/dop251/goja/ast/node.go index e033726a1c7..a64b61e6f87 100644 --- a/vendor/github.com/dop251/goja/ast/node.go +++ b/vendor/github.com/dop251/goja/ast/node.go @@ -15,6 +15,15 @@ import ( "github.com/dop251/goja/unistring" ) +type PropertyKind string + +const ( + PropertyKindValue PropertyKind = "value" + PropertyKindGet PropertyKind = "get" + PropertyKindSet PropertyKind = "set" + PropertyKindMethod PropertyKind = "method" +) + // All nodes implement the Node interface. type Node interface { Idx0() file.Idx // The index of the first character belonging to the node @@ -32,12 +41,34 @@ type ( _expressionNode() } + BindingTarget interface { + Expression + _bindingTarget() + } + + Binding struct { + Target BindingTarget + Initializer Expression + } + + Pattern interface { + BindingTarget + _pattern() + } + ArrayLiteral struct { LeftBracket file.Idx RightBracket file.Idx Value []Expression } + ArrayPattern struct { + LeftBracket file.Idx + RightBracket file.Idx + Elements []Expression + Rest Expression + } + AssignExpression struct { Operator token.Token Left Expression @@ -97,6 +128,23 @@ type ( DeclarationList []*VariableDeclaration } + ConciseBody interface { + Node + _conciseBody() + } + + ExpressionBody struct { + Expression Expression + } + + ArrowFunctionLiteral struct { + Start file.Idx + ParameterList *ParameterList + Body ConciseBody + Source string + DeclarationList []*VariableDeclaration + } + Identifier struct { Name unistring.String Idx file.Idx @@ -127,18 +175,40 @@ type ( Value []Property } + ObjectPattern struct { + LeftBrace file.Idx + RightBrace file.Idx + Properties []Property + Rest Expression + } + ParameterList struct { Opening file.Idx - List []*Identifier + List []*Binding + Rest Expression Closing file.Idx } - Property struct { + Property interface { + Expression + _property() + } + + PropertyShort struct { + Name Identifier + Initializer Expression + } + + PropertyKeyed struct { Key Expression - Kind string + Kind PropertyKind Value Expression } + SpreadElement struct { + Expression + } + RegExpLiteral struct { Idx file.Idx Literal string @@ -167,12 +237,6 @@ type ( Postfix bool } - VariableExpression struct { - Name unistring.String - Idx file.Idx - Initializer Expression - } - MetaProperty struct { Meta, Property *Identifier Idx file.Idx @@ -191,6 +255,7 @@ func (*CallExpression) _expressionNode() {} func (*ConditionalExpression) _expressionNode() {} func (*DotExpression) _expressionNode() {} func (*FunctionLiteral) _expressionNode() {} +func (*ArrowFunctionLiteral) _expressionNode() {} func (*Identifier) _expressionNode() {} func (*NewExpression) _expressionNode() {} func (*NullLiteral) _expressionNode() {} @@ -201,8 +266,13 @@ func (*SequenceExpression) _expressionNode() {} func (*StringLiteral) _expressionNode() {} func (*ThisExpression) _expressionNode() {} func (*UnaryExpression) _expressionNode() {} -func (*VariableExpression) _expressionNode() {} func (*MetaProperty) _expressionNode() {} +func (*ObjectPattern) _expressionNode() {} +func (*ArrayPattern) _expressionNode() {} +func (*Binding) _expressionNode() {} + +func (*PropertyShort) _expressionNode() {} +func (*PropertyKeyed) _expressionNode() {} // ========= // // Statement // @@ -240,7 +310,7 @@ type ( CatchStatement struct { Catch file.Idx - Parameter *Identifier + Parameter BindingTarget Body *BlockStatement } @@ -323,13 +393,13 @@ type ( VariableStatement struct { Var file.Idx - List []*VariableExpression + List []*Binding } LexicalDeclaration struct { Idx file.Idx Token token.Token - List []*VariableExpression + List []*Binding } WhileStatement struct { @@ -382,7 +452,7 @@ func (*FunctionDeclaration) _statementNode() {} type ( VariableDeclaration struct { Var file.Idx - List []*VariableExpression + List []*Binding } ) @@ -397,7 +467,7 @@ type ( ForLoopInitializerVarDeclList struct { Var file.Idx - List []*VariableExpression + List []*Binding } ForLoopInitializerLexicalDecl struct { @@ -409,22 +479,13 @@ type ( } ForIntoVar struct { - Binding *VariableExpression - } - - ForBinding interface { - _forBinding() - } - - BindingIdentifier struct { - Idx file.Idx - Name unistring.String + Binding *Binding } ForDeclaration struct { Idx file.Idx IsConst bool - Binding ForBinding + Target BindingTarget } ForIntoExpression struct { @@ -440,7 +501,22 @@ func (*ForIntoVar) _forInto() {} func (*ForDeclaration) _forInto() {} func (*ForIntoExpression) _forInto() {} -func (*BindingIdentifier) _forBinding() {} +func (*ArrayPattern) _pattern() {} +func (*ArrayPattern) _bindingTarget() {} + +func (*ObjectPattern) _pattern() {} +func (*ObjectPattern) _bindingTarget() {} + +func (*BadExpression) _bindingTarget() {} + +func (*PropertyShort) _property() {} +func (*PropertyKeyed) _property() {} +func (*SpreadElement) _property() {} + +func (*Identifier) _bindingTarget() {} + +func (*BlockStatement) _conciseBody() {} +func (*ExpressionBody) _conciseBody() {} // ==== // // Node // @@ -459,6 +535,8 @@ type Program struct { // ==== // func (self *ArrayLiteral) Idx0() file.Idx { return self.LeftBracket } +func (self *ArrayPattern) Idx0() file.Idx { return self.LeftBracket } +func (self *ObjectPattern) Idx0() file.Idx { return self.LeftBrace } func (self *AssignExpression) Idx0() file.Idx { return self.Left.Idx0() } func (self *BadExpression) Idx0() file.Idx { return self.From } func (self *BinaryExpression) Idx0() file.Idx { return self.Left.Idx0() } @@ -468,6 +546,7 @@ func (self *CallExpression) Idx0() file.Idx { return self.Callee.Idx0() } func (self *ConditionalExpression) Idx0() file.Idx { return self.Test.Idx0() } func (self *DotExpression) Idx0() file.Idx { return self.Left.Idx0() } func (self *FunctionLiteral) Idx0() file.Idx { return self.Function } +func (self *ArrowFunctionLiteral) Idx0() file.Idx { return self.Start } func (self *Identifier) Idx0() file.Idx { return self.Idx } func (self *NewExpression) Idx0() file.Idx { return self.New } func (self *NullLiteral) Idx0() file.Idx { return self.Idx } @@ -478,7 +557,6 @@ func (self *SequenceExpression) Idx0() file.Idx { return self.Sequence[0].Idx func (self *StringLiteral) Idx0() file.Idx { return self.Idx } func (self *ThisExpression) Idx0() file.Idx { return self.Idx } func (self *UnaryExpression) Idx0() file.Idx { return self.Idx } -func (self *VariableExpression) Idx0() file.Idx { return self.Idx } func (self *MetaProperty) Idx0() file.Idx { return self.Idx } func (self *BadStatement) Idx0() file.Idx { return self.From } @@ -505,14 +583,19 @@ func (self *WhileStatement) Idx0() file.Idx { return self.While } func (self *WithStatement) Idx0() file.Idx { return self.With } func (self *LexicalDeclaration) Idx0() file.Idx { return self.Idx } func (self *FunctionDeclaration) Idx0() file.Idx { return self.Function.Idx0() } +func (self *Binding) Idx0() file.Idx { return self.Target.Idx0() } func (self *ForLoopInitializerVarDeclList) Idx0() file.Idx { return self.List[0].Idx0() } +func (self *PropertyShort) Idx0() file.Idx { return self.Name.Idx } +func (self *PropertyKeyed) Idx0() file.Idx { return self.Key.Idx0() } +func (self *ExpressionBody) Idx0() file.Idx { return self.Expression.Idx0() } // ==== // // Idx1 // // ==== // -func (self *ArrayLiteral) Idx1() file.Idx { return self.RightBracket } +func (self *ArrayLiteral) Idx1() file.Idx { return self.RightBracket + 1 } +func (self *ArrayPattern) Idx1() file.Idx { return self.RightBracket + 1 } func (self *AssignExpression) Idx1() file.Idx { return self.Right.Idx1() } func (self *BadExpression) Idx1() file.Idx { return self.To } func (self *BinaryExpression) Idx1() file.Idx { return self.Right.Idx1() } @@ -522,27 +605,23 @@ func (self *CallExpression) Idx1() file.Idx { return self.RightParenthesi func (self *ConditionalExpression) Idx1() file.Idx { return self.Test.Idx1() } func (self *DotExpression) Idx1() file.Idx { return self.Identifier.Idx1() } func (self *FunctionLiteral) Idx1() file.Idx { return self.Body.Idx1() } +func (self *ArrowFunctionLiteral) Idx1() file.Idx { return self.Body.Idx1() } func (self *Identifier) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Name)) } func (self *NewExpression) Idx1() file.Idx { return self.RightParenthesis + 1 } func (self *NullLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + 4) } // "null" func (self *NumberLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) } -func (self *ObjectLiteral) Idx1() file.Idx { return self.RightBrace } +func (self *ObjectLiteral) Idx1() file.Idx { return self.RightBrace + 1 } +func (self *ObjectPattern) Idx1() file.Idx { return self.RightBrace + 1 } func (self *RegExpLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) } -func (self *SequenceExpression) Idx1() file.Idx { return self.Sequence[0].Idx1() } +func (self *SequenceExpression) Idx1() file.Idx { return self.Sequence[len(self.Sequence)-1].Idx1() } func (self *StringLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) } -func (self *ThisExpression) Idx1() file.Idx { return self.Idx } +func (self *ThisExpression) Idx1() file.Idx { return self.Idx + 4 } func (self *UnaryExpression) Idx1() file.Idx { if self.Postfix { return self.Operand.Idx1() + 2 // ++ -- } return self.Operand.Idx1() } -func (self *VariableExpression) Idx1() file.Idx { - if self.Initializer == nil { - return file.Idx(int(self.Idx) + len(self.Name) + 1) - } - return self.Initializer.Idx1() -} func (self *MetaProperty) Idx1() file.Idx { return self.Property.Idx1() } @@ -565,16 +644,41 @@ func (self *IfStatement) Idx1() file.Idx { } return self.Consequent.Idx1() } -func (self *LabelledStatement) Idx1() file.Idx { return self.Colon + 1 } -func (self *Program) Idx1() file.Idx { return self.Body[len(self.Body)-1].Idx1() } -func (self *ReturnStatement) Idx1() file.Idx { return self.Return } -func (self *SwitchStatement) Idx1() file.Idx { return self.Body[len(self.Body)-1].Idx1() } -func (self *ThrowStatement) Idx1() file.Idx { return self.Throw } -func (self *TryStatement) Idx1() file.Idx { return self.Try } +func (self *LabelledStatement) Idx1() file.Idx { return self.Colon + 1 } +func (self *Program) Idx1() file.Idx { return self.Body[len(self.Body)-1].Idx1() } +func (self *ReturnStatement) Idx1() file.Idx { return self.Return + 6 } +func (self *SwitchStatement) Idx1() file.Idx { return self.Body[len(self.Body)-1].Idx1() } +func (self *ThrowStatement) Idx1() file.Idx { return self.Argument.Idx1() } +func (self *TryStatement) Idx1() file.Idx { + if self.Finally != nil { + return self.Finally.Idx1() + } + if self.Catch != nil { + return self.Catch.Idx1() + } + return self.Body.Idx1() +} func (self *VariableStatement) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() } func (self *WhileStatement) Idx1() file.Idx { return self.Body.Idx1() } func (self *WithStatement) Idx1() file.Idx { return self.Body.Idx1() } func (self *LexicalDeclaration) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() } func (self *FunctionDeclaration) Idx1() file.Idx { return self.Function.Idx1() } +func (self *Binding) Idx1() file.Idx { + if self.Initializer != nil { + return self.Initializer.Idx1() + } + return self.Target.Idx1() +} func (self *ForLoopInitializerVarDeclList) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() } + +func (self *PropertyShort) Idx1() file.Idx { + if self.Initializer != nil { + return self.Initializer.Idx1() + } + return self.Name.Idx1() +} + +func (self *PropertyKeyed) Idx1() file.Idx { return self.Value.Idx1() } + +func (self *ExpressionBody) Idx1() file.Idx { return self.Expression.Idx1() } diff --git a/vendor/github.com/dop251/goja/builtin_array.go b/vendor/github.com/dop251/goja/builtin_array.go index fd4eb98df33..750119230a0 100644 --- a/vendor/github.com/dop251/goja/builtin_array.go +++ b/vendor/github.com/dop251/goja/builtin_array.go @@ -347,12 +347,36 @@ func (r *Runtime) arrayproto_sort(call FunctionCall) Value { } } - ctx := arraySortCtx{ - obj: o.self, - compare: compareFn, - } + if r.checkStdArrayObj(o) != nil { + ctx := arraySortCtx{ + obj: o.self, + compare: compareFn, + } - sort.Stable(&ctx) + sort.Stable(&ctx) + } else { + length := toLength(o.self.getStr("length", nil)) + a := make([]Value, 0, length) + for i := int64(0); i < length; i++ { + idx := valueInt(i) + if o.self.hasPropertyIdx(idx) { + a = append(a, nilSafe(o.self.getIdx(idx, nil))) + } + } + ar := r.newArrayValues(a) + ctx := arraySortCtx{ + obj: ar.self, + compare: compareFn, + } + + sort.Stable(&ctx) + for i := 0; i < len(a); i++ { + o.self.setOwnIdx(valueInt(i), a[i], true) + } + for i := int64(len(a)); i < length; i++ { + o.self.deleteIdx(valueInt(i), true) + } + } return o } @@ -380,6 +404,7 @@ func (r *Runtime) arrayproto_splice(call FunctionCall) Value { for k := int64(0); k < actualDeleteCount; k++ { createDataPropertyOrThrow(a, intToValue(k), src.values[k+actualStart]) } + a.self.setOwnStr("length", intToValue(actualDeleteCount), true) } var values []Value if itemCount < actualDeleteCount { @@ -411,7 +436,7 @@ func (r *Runtime) arrayproto_splice(call FunctionCall) Value { for k := int64(0); k < actualDeleteCount; k++ { from := valueInt(k + actualStart) if o.self.hasPropertyIdx(from) { - createDataPropertyOrThrow(a, valueInt(k), o.self.getIdx(from, nil)) + createDataPropertyOrThrow(a, valueInt(k), nilSafe(o.self.getIdx(from, nil))) } } @@ -420,7 +445,7 @@ func (r *Runtime) arrayproto_splice(call FunctionCall) Value { from := valueInt(k + actualDeleteCount) to := valueInt(k + itemCount) if o.self.hasPropertyIdx(from) { - o.self.setOwnIdx(to, o.self.getIdx(from, nil), true) + o.self.setOwnIdx(to, nilSafe(o.self.getIdx(from, nil)), true) } else { o.self.deleteIdx(to, true) } @@ -434,7 +459,7 @@ func (r *Runtime) arrayproto_splice(call FunctionCall) Value { from := valueInt(k + actualDeleteCount - 1) to := valueInt(k + itemCount - 1) if o.self.hasPropertyIdx(from) { - o.self.setOwnIdx(to, o.self.getIdx(from, nil), true) + o.self.setOwnIdx(to, nilSafe(o.self.getIdx(from, nil)), true) } else { o.self.deleteIdx(to, true) } @@ -475,7 +500,7 @@ func (r *Runtime) arrayproto_unshift(call FunctionCall) Value { from := valueInt(k) to := valueInt(k + argCount) if o.self.hasPropertyIdx(from) { - o.self.setOwnIdx(to, o.self.getIdx(from, nil), true) + o.self.setOwnIdx(to, nilSafe(o.self.getIdx(from, nil)), true) } else { o.self.deleteIdx(to, true) } @@ -962,7 +987,7 @@ func (r *Runtime) arrayproto_copyWithin(call FunctionCall) Value { } for count > 0 { if o.self.hasPropertyIdx(valueInt(from)) { - o.self.setOwnIdx(valueInt(to), o.self.getIdx(valueInt(from), nil), true) + o.self.setOwnIdx(valueInt(to), nilSafe(o.self.getIdx(valueInt(from), nil)), true) } else { o.self.deleteIdx(valueInt(to), true) } @@ -1059,7 +1084,7 @@ func (r *Runtime) flattenIntoArray(target, source *Object, sourceLen, start, dep for sourceIndex < sourceLen { p := intToValue(sourceIndex) if source.hasProperty(p.toString()) { - element := source.get(p, source) + element := nilSafe(source.get(p, source)) if mapperFunction != nil { element = mapperFunction(FunctionCall{ This: thisArg, diff --git a/vendor/github.com/dop251/goja/builtin_function.go b/vendor/github.com/dop251/goja/builtin_function.go index e595675fd52..7f0227c9f24 100644 --- a/vendor/github.com/dop251/goja/builtin_function.go +++ b/vendor/github.com/dop251/goja/builtin_function.go @@ -33,10 +33,12 @@ repeat: switch f := obj.self.(type) { case *funcObject: return newStringValue(f.src) + case *arrowFuncObject: + return newStringValue(f.src) case *nativeFuncObject: - return newStringValue(fmt.Sprintf("function %s() { [native code] }", f.nameProp.get(call.This).toString())) + return newStringValue(fmt.Sprintf("function %s() { [native code] }", nilSafe(f.getStr("name", nil)).toString())) case *boundFuncObject: - return newStringValue(fmt.Sprintf("function %s() { [native code] }", f.nameProp.get(call.This).toString())) + return newStringValue(fmt.Sprintf("function %s() { [native code] }", nilSafe(f.getStr("name", nil)).toString())) case *lazyObject: obj.self = f.create(obj) goto repeat @@ -46,10 +48,12 @@ repeat: switch c := f.target.self.(type) { case *funcObject: name = c.src + case *arrowFuncObject: + name = c.src case *nativeFuncObject: - name = nilSafe(c.nameProp.get(call.This)).toString().String() + name = nilSafe(f.getStr("name", nil)).toString().String() case *boundFuncObject: - name = nilSafe(c.nameProp.get(call.This)).toString().String() + name = nilSafe(f.getStr("name", nil)).toString().String() case *lazyObject: f.target.self = c.create(obj) goto repeat2 @@ -81,7 +85,7 @@ func (r *Runtime) createListFromArrayLike(a Value) []Value { l := toLength(o.self.getStr("length", nil)) res := make([]Value, 0, l) for k := int64(0); k < l; k++ { - res = append(res, o.self.getIdx(valueInt(k), nil)) + res = append(res, nilSafe(o.self.getIdx(valueInt(k), nil))) } return res } @@ -153,7 +157,7 @@ func (r *Runtime) functionproto_bind(call FunctionCall) Value { fcall := r.toCallable(call.This) construct := obj.self.assertConstructor() - l := int(toUint32(obj.self.getStr("length", nil))) + l := int(toUint32(nilSafe(obj.self.getStr("length", nil)))) l -= len(call.Arguments) - 1 if l < 0 { l = 0 @@ -183,8 +187,7 @@ func (r *Runtime) functionproto_bind(call FunctionCall) Value { func (r *Runtime) initFunction() { o := r.global.FunctionPrototype.self.(*nativeFuncObject) o.prototype = r.global.ObjectPrototype - o.nameProp.value = stringEmpty - + o._putProp("name", stringEmpty, false, false, true) o._putProp("apply", r.newNativeFunc(r.functionproto_apply, nil, "apply", nil, 2), true, false, true) o._putProp("bind", r.newNativeFunc(r.functionproto_bind, nil, "bind", nil, 1), true, false, true) o._putProp("call", r.newNativeFunc(r.functionproto_call, nil, "call", nil, 1), true, false, true) diff --git a/vendor/github.com/dop251/goja/builtin_json.go b/vendor/github.com/dop251/goja/builtin_json.go index dcdb6cc910d..ebc8dbdecbf 100644 --- a/vendor/github.com/dop251/goja/builtin_json.go +++ b/vendor/github.com/dop251/goja/builtin_json.go @@ -132,14 +132,11 @@ func (r *Runtime) builtinJSON_decodeArray(d *json.Decoder) (*Object, error) { } func (r *Runtime) builtinJSON_reviveWalk(reviver func(FunctionCall) Value, holder *Object, name Value) Value { - value := holder.get(name, nil) - if value == nil { - value = _undefined - } + value := nilSafe(holder.get(name, nil)) if object, ok := value.(*Object); ok { if isArray(object) { - length := object.self.getStr("length", nil).ToInteger() + length := toLength(object.self.getStr("length", nil)) for index := int64(0); index < length; index++ { name := intToValue(index) value := r.builtinJSON_reviveWalk(reviver, object, name) @@ -186,7 +183,7 @@ func (r *Runtime) builtinJSON_stringify(call FunctionCall) Value { replacer, _ := call.Argument(1).(*Object) if replacer != nil { if isArray(replacer) { - length := replacer.self.getStr("length", nil).ToInteger() + length := toLength(replacer.self.getStr("length", nil)) seen := map[string]bool{} propertyList := make([]Value, length) length = 0 @@ -264,10 +261,7 @@ func (ctx *_builtinJSON_stringifyContext) do(v Value) bool { } func (ctx *_builtinJSON_stringifyContext) str(key Value, holder *Object) bool { - value := holder.get(key, nil) - if value == nil { - value = _undefined - } + value := nilSafe(holder.get(key, nil)) if object, ok := value.(*Object); ok { if toJSON, ok := object.self.getStr("toJSON", nil).(*Object); ok { @@ -368,7 +362,7 @@ func (ctx *_builtinJSON_stringifyContext) ja(array *Object) { stepback = ctx.indent ctx.indent += ctx.gap } - length := array.self.getStr("length", nil).ToInteger() + length := toLength(array.self.getStr("length", nil)) if length == 0 { ctx.buf.WriteString("[]") return diff --git a/vendor/github.com/dop251/goja/builtin_object.go b/vendor/github.com/dop251/goja/builtin_object.go index b7070faac3d..1e828e0daf6 100644 --- a/vendor/github.com/dop251/goja/builtin_object.go +++ b/vendor/github.com/dop251/goja/builtin_object.go @@ -377,7 +377,7 @@ func (r *Runtime) object_entries(call FunctionCall) Value { } for item, next := iter.next(); next != nil; item, next = next() { - v := obj.self.getStr(item.name, nil) + v := nilSafe(obj.self.getStr(item.name, nil)) values = append(values, r.newArrayValues([]Value{stringValueFromRaw(item.name), v})) } @@ -393,7 +393,7 @@ func (r *Runtime) object_values(call FunctionCall) Value { } for item, next := iter.next(); next != nil; item, next = next() { - values = append(values, obj.self.getStr(item.name, nil)) + values = append(values, nilSafe(obj.self.getStr(item.name, nil))) } return r.newArrayValues(values) diff --git a/vendor/github.com/dop251/goja/builtin_proxy.go b/vendor/github.com/dop251/goja/builtin_proxy.go index 494547a933b..ee62f75e45e 100644 --- a/vendor/github.com/dop251/goja/builtin_proxy.go +++ b/vendor/github.com/dop251/goja/builtin_proxy.go @@ -38,7 +38,7 @@ func (h *nativeProxyHandler) preventExtensions(target *Object) (bool, bool) { func (h *nativeProxyHandler) getOwnPropertyDescriptorStr(target *Object, prop unistring.String) (Value, bool) { if trap := h.handler.GetOwnPropertyDescriptorIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { desc := trap(target, idx) return desc.toValue(target.runtime), true } @@ -72,7 +72,7 @@ func (h *nativeProxyHandler) getOwnPropertyDescriptorSym(target *Object, prop *S func (h *nativeProxyHandler) definePropertyStr(target *Object, prop unistring.String, desc PropertyDescriptor) (bool, bool) { if trap := h.handler.DefinePropertyIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { return trap(target, idx, desc), true } } @@ -101,7 +101,7 @@ func (h *nativeProxyHandler) definePropertySym(target *Object, prop *Symbol, des func (h *nativeProxyHandler) hasStr(target *Object, prop unistring.String) (bool, bool) { if trap := h.handler.HasIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { return trap(target, idx), true } } @@ -130,7 +130,7 @@ func (h *nativeProxyHandler) hasSym(target *Object, prop *Symbol) (bool, bool) { func (h *nativeProxyHandler) getStr(target *Object, prop unistring.String, receiver Value) (Value, bool) { if trap := h.handler.GetIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { return trap(target, idx, receiver), true } } @@ -159,7 +159,7 @@ func (h *nativeProxyHandler) getSym(target *Object, prop *Symbol, receiver Value func (h *nativeProxyHandler) setStr(target *Object, prop unistring.String, value Value, receiver Value) (bool, bool) { if trap := h.handler.SetIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { return trap(target, idx, value, receiver), true } } @@ -188,7 +188,7 @@ func (h *nativeProxyHandler) setSym(target *Object, prop *Symbol, value Value, r func (h *nativeProxyHandler) deleteStr(target *Object, prop unistring.String) (bool, bool) { if trap := h.handler.DeletePropertyIdx; trap != nil { - if idx, ok := strPropToInt(prop); ok { + if idx, ok := strToInt(prop); ok { return trap(target, idx), true } } @@ -246,8 +246,12 @@ func (r *Runtime) newNativeProxyHandler(nativeHandler *ProxyTrapConfig) proxyHan // ProxyTrapConfig provides a simplified Go-friendly API for implementing Proxy traps. // If an *Idx trap is defined it gets called for integer property keys, including negative ones. Note that -// this also includes string property keys that can be parsed into an integer. This allows more efficient -// array operations. +// this only includes string property keys that represent a canonical integer +// (i.e. "0", "123", but not "00", "01", " 1" or "-0"). +// For efficiency strings representing integers exceeding 2^53 are not checked to see if they are canonical, +// i.e. the *Idx traps will receive "9007199254740993" as well as "9007199254740994", even though the former is not +// a canonical representation in ECMAScript (Number("9007199254740993") === 9007199254740992). +// See https://262.ecma-international.org/#sec-canonicalnumericindexstring // If an *Idx trap is not set, the corresponding string one is used. type ProxyTrapConfig struct { // A trap for Object.getPrototypeOf, Reflect.getPrototypeOf, __proto__, Object.prototype.isPrototypeOf, instanceof diff --git a/vendor/github.com/dop251/goja/builtin_regexp.go b/vendor/github.com/dop251/goja/builtin_regexp.go index 451b87d24f3..ccccbd619f8 100644 --- a/vendor/github.com/dop251/goja/builtin_regexp.go +++ b/vendor/github.com/dop251/goja/builtin_regexp.go @@ -900,7 +900,7 @@ func (r *Runtime) regexpproto_stdSplitterGeneric(splitter *Object, s valueString } numberOfCaptures := max(toLength(z.self.getStr("length", nil))-1, 0) for i := int64(1); i <= numberOfCaptures; i++ { - a = append(a, z.self.getIdx(valueInt(i), nil)) + a = append(a, nilSafe(z.self.getIdx(valueInt(i), nil))) if int64(len(a)) == lim { return r.newArrayValues(a) } diff --git a/vendor/github.com/dop251/goja/builtin_string.go b/vendor/github.com/dop251/goja/builtin_string.go index 63554ff3611..3718a7ecee9 100644 --- a/vendor/github.com/dop251/goja/builtin_string.go +++ b/vendor/github.com/dop251/goja/builtin_string.go @@ -377,7 +377,7 @@ func (r *Runtime) stringproto_matchAll(call FunctionCall) Value { if regexp != _undefined && regexp != _null { if isRegexp(regexp) { if o, ok := regexp.(*Object); ok { - flags := o.self.getStr("flags", nil) + flags := nilSafe(o.self.getStr("flags", nil)) r.checkObjectCoercible(flags) if !strings.Contains(flags.toString().String(), "g") { panic(r.NewTypeError("RegExp doesn't have global flag set")) diff --git a/vendor/github.com/dop251/goja/builtin_symbol.go b/vendor/github.com/dop251/goja/builtin_symbol.go index 9aa5e771e09..00ba2888e00 100644 --- a/vendor/github.com/dop251/goja/builtin_symbol.go +++ b/vendor/github.com/dop251/goja/builtin_symbol.go @@ -21,8 +21,6 @@ func (r *Runtime) builtin_symbol(call FunctionCall) Value { var desc valueString if arg := call.Argument(0); !IsUndefined(arg) { desc = arg.toString() - } else { - desc = stringEmpty } return newSymbol(desc) } diff --git a/vendor/github.com/dop251/goja/builtin_typedarrays.go b/vendor/github.com/dop251/goja/builtin_typedarrays.go index 1783597758d..fe50a1f905f 100644 --- a/vendor/github.com/dop251/goja/builtin_typedarrays.go +++ b/vendor/github.com/dop251/goja/builtin_typedarrays.go @@ -21,7 +21,7 @@ func (ctx *typedArraySortCtx) Len() int { func (ctx *typedArraySortCtx) Less(i, j int) bool { if ctx.needValidate { - ctx.ta.viewedArrayBuf.ensureNotDetached() + ctx.ta.viewedArrayBuf.ensureNotDetached(true) ctx.needValidate = false } offset := ctx.ta.offset @@ -54,7 +54,7 @@ func (ctx *typedArraySortCtx) Less(i, j int) bool { func (ctx *typedArraySortCtx) Swap(i, j int) { if ctx.needValidate { - ctx.ta.viewedArrayBuf.ensureNotDetached() + ctx.ta.viewedArrayBuf.ensureNotDetached(true) ctx.needValidate = false } offset := ctx.ta.offset @@ -88,8 +88,10 @@ func (r *Runtime) builtin_newArrayBuffer(args []Value, newTarget *Object) *Objec func (r *Runtime) arrayBufferProto_getByteLength(call FunctionCall) Value { o := r.toObject(call.This) if b, ok := o.self.(*arrayBufferObject); ok { - b.ensureNotDetached() - return intToValue(int64(len(b.data))) + if b.ensureNotDetached(false) { + return intToValue(int64(len(b.data))) + } + return intToValue(0) } panic(r.NewTypeError("Object is not ArrayBuffer: %s", o)) } @@ -109,16 +111,15 @@ func (r *Runtime) arrayBufferProto_slice(call FunctionCall) Value { newLen := max(stop-start, 0) ret := r.speciesConstructor(o, r.global.ArrayBuffer)([]Value{intToValue(newLen)}, nil) if ab, ok := ret.self.(*arrayBufferObject); ok { - ab.ensureNotDetached() - if ret == o { - panic(r.NewTypeError("Species constructor returned the same ArrayBuffer")) - } - if int64(len(ab.data)) < newLen { - panic(r.NewTypeError("Species constructor returned an ArrayBuffer that is too small: %d", len(ab.data))) - } - b.ensureNotDetached() - - if stop > start { + if newLen > 0 { + b.ensureNotDetached(true) + if ret == o { + panic(r.NewTypeError("Species constructor returned the same ArrayBuffer")) + } + if int64(len(ab.data)) < newLen { + panic(r.NewTypeError("Species constructor returned an ArrayBuffer that is too small: %d", len(ab.data))) + } + ab.ensureNotDetached(true) copy(ab.data, b.data[start:stop]) } return ret @@ -162,7 +163,7 @@ func (r *Runtime) newDataView(args []Value, newTarget *Object) *Object { if len(args) > 1 { offsetArg := nilSafe(args[1]) byteOffset = r.toIndex(offsetArg) - buffer.ensureNotDetached() + buffer.ensureNotDetached(true) if byteOffset > len(buffer.data) { panic(r.newError(r.global.RangeError, "Start offset %s is outside the bounds of the buffer", offsetArg.String())) } @@ -201,7 +202,7 @@ func (r *Runtime) dataViewProto_getBuffer(call FunctionCall) Value { func (r *Runtime) dataViewProto_getByteLen(call FunctionCall) Value { if dv, ok := r.toObject(call.This).self.(*dataViewObject); ok { - dv.viewedArrayBuf.ensureNotDetached() + dv.viewedArrayBuf.ensureNotDetached(true) return intToValue(int64(dv.byteLen)) } panic(r.NewTypeError("Method get DataView.prototype.byteLength called on incompatible receiver %s", call.This.String())) @@ -209,7 +210,7 @@ func (r *Runtime) dataViewProto_getByteLen(call FunctionCall) Value { func (r *Runtime) dataViewProto_getByteOffset(call FunctionCall) Value { if dv, ok := r.toObject(call.This).self.(*dataViewObject); ok { - dv.viewedArrayBuf.ensureNotDetached() + dv.viewedArrayBuf.ensureNotDetached(true) return intToValue(int64(dv.byteOffset)) } panic(r.NewTypeError("Method get DataView.prototype.byteOffset called on incompatible receiver %s", call.This.String())) @@ -392,7 +393,7 @@ func (r *Runtime) typedArrayProto_getByteOffset(call FunctionCall) Value { func (r *Runtime) typedArrayProto_copyWithin(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) l := int64(ta.length) var relEnd int64 to := toIntStrict(relToIdx(call.Argument(0).ToInteger(), l)) @@ -407,7 +408,7 @@ func (r *Runtime) typedArrayProto_copyWithin(call FunctionCall) Value { offset := ta.offset elemSize := ta.elemSize if final > from { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) copy(data[(offset+to)*elemSize:], data[(offset+from)*elemSize:(offset+final)*elemSize]) } return call.This @@ -417,7 +418,7 @@ func (r *Runtime) typedArrayProto_copyWithin(call FunctionCall) Value { func (r *Runtime) typedArrayProto_entries(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) return r.createArrayIterator(ta.val, iterationKindKeyValue) } panic(r.NewTypeError("Method TypedArray.prototype.entries called on incompatible receiver %s", call.This.String())) @@ -425,14 +426,14 @@ func (r *Runtime) typedArrayProto_entries(call FunctionCall) Value { func (r *Runtime) typedArrayProto_every(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), Arguments: []Value{nil, nil, call.This}, } for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) fc.Arguments[0] = ta.typedArray.get(ta.offset + k) fc.Arguments[1] = intToValue(int64(k)) if !callbackFn(fc).ToBoolean() { @@ -447,7 +448,7 @@ func (r *Runtime) typedArrayProto_every(call FunctionCall) Value { func (r *Runtime) typedArrayProto_fill(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) l := int64(ta.length) k := toIntStrict(relToIdx(call.Argument(1).ToInteger(), l)) var relEnd int64 @@ -458,7 +459,7 @@ func (r *Runtime) typedArrayProto_fill(call FunctionCall) Value { } final := toIntStrict(relToIdx(relEnd, l)) value := ta.typedArray.toRaw(call.Argument(0)) - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) for ; k < final; k++ { ta.typedArray.setRaw(ta.offset+k, value) } @@ -470,7 +471,7 @@ func (r *Runtime) typedArrayProto_fill(call FunctionCall) Value { func (r *Runtime) typedArrayProto_filter(call FunctionCall) Value { o := r.toObject(call.This) if ta, ok := o.self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), @@ -479,7 +480,7 @@ func (r *Runtime) typedArrayProto_filter(call FunctionCall) Value { buf := make([]byte, 0, ta.length*ta.elemSize) captured := 0 for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) fc.Arguments[0] = ta.typedArray.get(k) fc.Arguments[1] = intToValue(int64(k)) if callbackFn(fc).ToBoolean() { @@ -508,14 +509,14 @@ func (r *Runtime) typedArrayProto_filter(call FunctionCall) Value { func (r *Runtime) typedArrayProto_find(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) predicate := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), Arguments: []Value{nil, nil, call.This}, } for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) val := ta.typedArray.get(ta.offset + k) fc.Arguments[0] = val fc.Arguments[1] = intToValue(int64(k)) @@ -530,14 +531,14 @@ func (r *Runtime) typedArrayProto_find(call FunctionCall) Value { func (r *Runtime) typedArrayProto_findIndex(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) predicate := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), Arguments: []Value{nil, nil, call.This}, } for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) fc.Arguments[0] = ta.typedArray.get(ta.offset + k) fc.Arguments[1] = intToValue(int64(k)) if predicate(fc).ToBoolean() { @@ -551,14 +552,14 @@ func (r *Runtime) typedArrayProto_findIndex(call FunctionCall) Value { func (r *Runtime) typedArrayProto_forEach(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), Arguments: []Value{nil, nil, call.This}, } for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) if val := ta.typedArray.get(k); val != nil { fc.Arguments[0] = val fc.Arguments[1] = intToValue(int64(k)) @@ -572,7 +573,7 @@ func (r *Runtime) typedArrayProto_forEach(call FunctionCall) Value { func (r *Runtime) typedArrayProto_includes(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) length := int64(ta.length) if length == 0 { return valueFalse @@ -587,7 +588,7 @@ func (r *Runtime) typedArrayProto_includes(call FunctionCall) Value { n = max(length+n, 0) } - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) searchElement := call.Argument(0) if searchElement == _negativeZero { searchElement = _positiveZero @@ -607,7 +608,7 @@ func (r *Runtime) typedArrayProto_includes(call FunctionCall) Value { func (r *Runtime) typedArrayProto_indexOf(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) length := int64(ta.length) if length == 0 { return intToValue(-1) @@ -622,7 +623,7 @@ func (r *Runtime) typedArrayProto_indexOf(call FunctionCall) Value { n = max(length+n, 0) } - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) searchElement := call.Argument(0) if searchElement == _negativeZero { searchElement = _positiveZero @@ -642,7 +643,7 @@ func (r *Runtime) typedArrayProto_indexOf(call FunctionCall) Value { func (r *Runtime) typedArrayProto_join(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) s := call.Argument(0) var sep valueString if s != _undefined { @@ -657,14 +658,14 @@ func (r *Runtime) typedArrayProto_join(call FunctionCall) Value { var buf valueStringBuilder - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) element0 := ta.typedArray.get(0) if element0 != nil && element0 != _undefined && element0 != _null { buf.WriteString(element0.toString()) } for i := 1; i < l; i++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) buf.WriteString(sep) element := ta.typedArray.get(i) if element != nil && element != _undefined && element != _null { @@ -679,7 +680,7 @@ func (r *Runtime) typedArrayProto_join(call FunctionCall) Value { func (r *Runtime) typedArrayProto_keys(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) return r.createArrayIterator(ta.val, iterationKindKey) } panic(r.NewTypeError("Method TypedArray.prototype.keys called on incompatible receiver %s", call.This.String())) @@ -687,7 +688,7 @@ func (r *Runtime) typedArrayProto_keys(call FunctionCall) Value { func (r *Runtime) typedArrayProto_lastIndexOf(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) length := int64(ta.length) if length == 0 { return intToValue(-1) @@ -709,7 +710,7 @@ func (r *Runtime) typedArrayProto_lastIndexOf(call FunctionCall) Value { } } - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) searchElement := call.Argument(0) if searchElement == _negativeZero { searchElement = _positiveZero @@ -730,7 +731,7 @@ func (r *Runtime) typedArrayProto_lastIndexOf(call FunctionCall) Value { func (r *Runtime) typedArrayProto_map(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), @@ -738,7 +739,7 @@ func (r *Runtime) typedArrayProto_map(call FunctionCall) Value { } dst := r.typedArraySpeciesCreate(ta, []Value{intToValue(int64(ta.length))}) for i := 0; i < ta.length; i++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) fc.Arguments[0] = ta.typedArray.get(ta.offset + i) fc.Arguments[1] = intToValue(int64(i)) dst.typedArray.set(i, callbackFn(fc)) @@ -750,7 +751,7 @@ func (r *Runtime) typedArrayProto_map(call FunctionCall) Value { func (r *Runtime) typedArrayProto_reduce(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: _undefined, @@ -769,7 +770,7 @@ func (r *Runtime) typedArrayProto_reduce(call FunctionCall) Value { panic(r.NewTypeError("Reduce of empty array with no initial value")) } for ; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) idx := valueInt(k) fc.Arguments[1] = ta.typedArray.get(ta.offset + k) fc.Arguments[2] = idx @@ -782,7 +783,7 @@ func (r *Runtime) typedArrayProto_reduce(call FunctionCall) Value { func (r *Runtime) typedArrayProto_reduceRight(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: _undefined, @@ -801,7 +802,7 @@ func (r *Runtime) typedArrayProto_reduceRight(call FunctionCall) Value { panic(r.NewTypeError("Reduce of empty array with no initial value")) } for ; k >= 0; k-- { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) idx := valueInt(k) fc.Arguments[1] = ta.typedArray.get(ta.offset + k) fc.Arguments[2] = idx @@ -814,7 +815,7 @@ func (r *Runtime) typedArrayProto_reduceRight(call FunctionCall) Value { func (r *Runtime) typedArrayProto_reverse(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) l := ta.length middle := l / 2 for lower := 0; lower != middle; lower++ { @@ -834,10 +835,10 @@ func (r *Runtime) typedArrayProto_set(call FunctionCall) Value { if targetOffset < 0 { panic(r.newError(r.global.RangeError, "offset should be >= 0")) } - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) targetLen := ta.length if src, ok := srcObj.self.(*typedArrayObject); ok { - src.viewedArrayBuf.ensureNotDetached() + src.viewedArrayBuf.ensureNotDetached(true) srcLen := src.length if x := srcLen + targetOffset; x < 0 || x > targetLen { panic(r.newError(r.global.RangeError, "Source is too large")) @@ -893,7 +894,7 @@ func (r *Runtime) typedArrayProto_set(call FunctionCall) Value { } for i := 0; i < srcLen; i++ { val := nilSafe(srcObj.self.getIdx(valueInt(i), nil)) - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) ta.typedArray.set(targetOffset+i, val) } } @@ -904,7 +905,7 @@ func (r *Runtime) typedArrayProto_set(call FunctionCall) Value { func (r *Runtime) typedArrayProto_slice(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) length := int64(ta.length) start := toIntStrict(relToIdx(call.Argument(0).ToInteger(), length)) var e int64 @@ -922,14 +923,14 @@ func (r *Runtime) typedArrayProto_slice(call FunctionCall) Value { dst := r.typedArraySpeciesCreate(ta, []Value{intToValue(int64(count))}) if dst.defaultCtor == ta.defaultCtor { if count > 0 { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) offset := ta.offset elemSize := ta.elemSize copy(dst.viewedArrayBuf.data, ta.viewedArrayBuf.data[(offset+start)*elemSize:(offset+start+count)*elemSize]) } } else { for i := 0; i < count; i++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) dst.typedArray.set(i, ta.typedArray.get(ta.offset+start+i)) } } @@ -940,14 +941,14 @@ func (r *Runtime) typedArrayProto_slice(call FunctionCall) Value { func (r *Runtime) typedArrayProto_some(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) callbackFn := r.toCallable(call.Argument(0)) fc := FunctionCall{ This: call.Argument(1), Arguments: []Value{nil, nil, call.This}, } for k := 0; k < ta.length; k++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) fc.Arguments[0] = ta.typedArray.get(ta.offset + k) fc.Arguments[1] = intToValue(int64(k)) if callbackFn(fc).ToBoolean() { @@ -961,7 +962,7 @@ func (r *Runtime) typedArrayProto_some(call FunctionCall) Value { func (r *Runtime) typedArrayProto_sort(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) var compareFn func(FunctionCall) Value if arg := call.Argument(0); arg != _undefined { @@ -1004,7 +1005,7 @@ func (r *Runtime) typedArrayProto_toLocaleString(call FunctionCall) Value { length := ta.length var buf valueStringBuilder for i := 0; i < length; i++ { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) if i > 0 { buf.WriteRune(',') } @@ -1018,7 +1019,7 @@ func (r *Runtime) typedArrayProto_toLocaleString(call FunctionCall) Value { func (r *Runtime) typedArrayProto_values(call FunctionCall) Value { if ta, ok := r.toObject(call.This).self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) return r.createArrayIterator(ta.val, iterationKindValue) } panic(r.NewTypeError("Method TypedArray.prototype.values called on incompatible receiver %s", call.This.String())) @@ -1027,7 +1028,7 @@ func (r *Runtime) typedArrayProto_values(call FunctionCall) Value { func (r *Runtime) typedArrayProto_toStringTag(call FunctionCall) Value { if obj, ok := call.This.(*Object); ok { if ta, ok := obj.self.(*typedArrayObject); ok { - return ta.defaultCtor.self.getStr("name", nil) + return nilSafe(ta.defaultCtor.self.getStr("name", nil)) } } @@ -1070,7 +1071,7 @@ func (r *Runtime) typedArraySpeciesCreate(ta *typedArrayObject, args []Value) *t func (r *Runtime) typedArrayCreate(ctor *Object, args []Value) *typedArrayObject { o := r.toConstructor(ctor)(args, ctor) if ta, ok := o.self.(*typedArrayObject); ok { - ta.viewedArrayBuf.ensureNotDetached() + ta.viewedArrayBuf.ensureNotDetached(true) if len(args) == 1 { if l, ok := args[0].(valueInt); ok { if ta.length < int(l) { @@ -1145,7 +1146,7 @@ func (r *Runtime) _newTypedArrayFromArrayBuffer(ab *arrayBufferObject, args []Va panic(r.newError(r.global.RangeError, "Start offset of %s should be a multiple of %d", newTarget.self.getStr("name", nil), ta.elemSize)) } } - ab.ensureNotDetached() + ab.ensureNotDetached(true) var length int if len(args) > 2 && args[2] != nil && args[2] != _undefined { length = r.toIndex(args[2]) @@ -1165,7 +1166,7 @@ func (r *Runtime) _newTypedArrayFromArrayBuffer(ab *arrayBufferObject, args []Va func (r *Runtime) _newTypedArrayFromTypedArray(src *typedArrayObject, newTarget *Object) *Object { dst := r.typedArrayCreate(newTarget, []Value{_positiveZero}) - src.viewedArrayBuf.ensureNotDetached() + src.viewedArrayBuf.ensureNotDetached(true) l := src.length dst.viewedArrayBuf.prototype = r.getPrototypeFromCtor(r.toObject(src.viewedArrayBuf.getStr("constructor", nil)), r.global.ArrayBuffer, r.global.ArrayBufferPrototype) dst.viewedArrayBuf.data = allocByteSlice(toIntStrict(int64(l) * int64(dst.elemSize))) diff --git a/vendor/github.com/dop251/goja/compiler.go b/vendor/github.com/dop251/goja/compiler.go index a362610dbf3..04a4763a2e5 100644 --- a/vendor/github.com/dop251/goja/compiler.go +++ b/vendor/github.com/dop251/goja/compiler.go @@ -2,6 +2,7 @@ package goja import ( "fmt" + "github.com/dop251/goja/token" "sort" "github.com/dop251/goja/ast" @@ -25,9 +26,10 @@ const ( const ( maskConst = 1 << 31 maskVar = 1 << 30 - maskDeletable = maskConst + maskDeletable = 1 << 29 + maskStrict = maskDeletable - maskTyp = maskConst | maskVar + maskTyp = maskConst | maskVar | maskDeletable ) type varType byte @@ -35,6 +37,7 @@ type varType byte const ( varTypeVar varType = iota varTypeLet + varTypeStrictConst varTypeConst ) @@ -81,6 +84,7 @@ type binding struct { name unistring.String accessPoints map[*scope]*[]int isConst bool + isStrict bool isArg bool isVar bool inStash bool @@ -99,6 +103,17 @@ func (b *binding) getAccessPointsForScope(s *scope) *[]int { return m } +func (b *binding) markAccessPointAt(pos int) { + scope := b.scope.c.scope + m := b.getAccessPointsForScope(scope) + *m = append(*m, pos-scope.base) +} + +func (b *binding) markAccessPointAtScope(scope *scope, pos int) { + m := b.getAccessPointsForScope(scope) + *m = append(*m, pos-scope.base) +} + func (b *binding) markAccessPoint() { scope := b.scope.c.scope m := b.getAccessPointsForScope(scope) @@ -114,6 +129,15 @@ func (b *binding) emitGet() { } } +func (b *binding) emitGetAt(pos int) { + b.markAccessPointAt(pos) + if b.isVar && !b.isArg { + b.scope.c.p.code[pos] = loadStash(0) + } else { + b.scope.c.p.code[pos] = loadStashLex(0) + } +} + func (b *binding) emitGetP() { if b.isVar && !b.isArg { // no-op @@ -126,7 +150,9 @@ func (b *binding) emitGetP() { func (b *binding) emitSet() { if b.isConst { - b.scope.c.emit(throwAssignToConst) + if b.isStrict || b.scope.c.scope.strict { + b.scope.c.emit(throwAssignToConst) + } return } b.markAccessPoint() @@ -139,7 +165,9 @@ func (b *binding) emitSet() { func (b *binding) emitSetP() { if b.isConst { - b.scope.c.emit(throwAssignToConst) + if b.isStrict || b.scope.c.scope.strict { + b.scope.c.emit(throwAssignToConst) + } return } b.markAccessPoint() @@ -171,7 +199,11 @@ func (b *binding) emitResolveVar(strict bool) { } else { var typ varType if b.isConst { - typ = varTypeConst + if b.isStrict { + typ = varTypeStrictConst + } else { + typ = varTypeConst + } } else { typ = varTypeLet } @@ -216,6 +248,10 @@ type scope struct { // is a function or a top-level lexical environment function bool + // is an arrow function's top-level lexical environment (functions only) + arrow bool + // is a variable environment, i.e. the target for dynamically created var bindings + variable bool // a function scope that has at least one direct eval() and non-strict, so the variables can be added dynamically dynamic bool // arguments have been marked for placement in stash (functions only) @@ -331,6 +367,8 @@ func (p *Program) _dumpCode(indent string, logger func(format string, args ...in logger("%s %d: %T(%v)", indent, pc, ins, ins) if f, ok := ins.(*newFunc); ok { f.prg._dumpCode(indent+">", logger) + } else if f, ok := ins.(*newArrowFunc); ok { + f.prg._dumpCode(indent+">", logger) } } } @@ -361,7 +399,7 @@ func (s *scope) lookupName(name unistring.String) (binding *binding, noDynamics return } } - if name == "arguments" && curScope.function { + if name == "arguments" && curScope.function && !curScope.arrow { curScope.argsNeeded = true binding, _ = curScope.bindName(name) return @@ -379,28 +417,33 @@ func (s *scope) ensureBoundNamesCreated() { } } -func (s *scope) bindNameLexical(name unistring.String, unique bool, offset int) (*binding, bool) { - if b := s.boundNames[name]; b != nil { - if unique { - s.c.throwSyntaxError(offset, "Identifier '%s' has already been declared", name) - } - return b, false - } +func (s *scope) addBinding(offset int) *binding { if len(s.bindings) >= (1<<24)-1 { s.c.throwSyntaxError(offset, "Too many variables") } b := &binding{ scope: s, - name: name, } s.bindings = append(s.bindings, b) + return b +} + +func (s *scope) bindNameLexical(name unistring.String, unique bool, offset int) (*binding, bool) { + if b := s.boundNames[name]; b != nil { + if unique { + s.c.throwSyntaxError(offset, "Identifier '%s' has already been declared", name) + } + return b, false + } + b := s.addBinding(offset) + b.name = name s.ensureBoundNamesCreated() s.boundNames[name] = b return b, true } func (s *scope) bindName(name unistring.String) (*binding, bool) { - if !s.function && s.outer != nil { + if !s.function && !s.variable && s.outer != nil { return s.outer.bindName(name) } b, created := s.bindNameLexical(name, false, 0) @@ -594,6 +637,9 @@ func (s *scope) makeNamesMap() map[unistring.String]uint32 { idx := uint32(i) if b.isConst { idx |= maskConst + if b.isStrict { + idx |= maskStrict + } } if b.isVar { idx |= maskVar @@ -631,7 +677,7 @@ func (c *compiler) compile(in *ast.Program, strict, eval, inGlobal bool) { scope.dynamic = true scope.eval = eval if !strict && len(in.Body) > 0 { - strict = c.isStrict(in.Body) + strict = c.isStrict(in.Body) != nil } scope.strict = strict ownVarScope := eval && strict @@ -712,7 +758,7 @@ func (c *compiler) compile(in *ast.Program, strict, eval, inGlobal bool) { func (c *compiler) compileDeclList(v []*ast.VariableDeclaration, inFunc bool) { for _, value := range v { - c.compileVarDecl(value, inFunc) + c.createVarBindings(value, inFunc) } } @@ -746,7 +792,7 @@ func (c *compiler) extractFunctions(list []ast.Statement) (funcs []*ast.Function func (c *compiler) createFunctionBindings(funcs []*ast.FunctionDeclaration) { s := c.scope if s.outer != nil { - unique := !s.function && s.strict + unique := !s.function && !s.variable && s.strict for _, decl := range funcs { s.bindNameLexical(decl.Function.Name.Name, unique, int(decl.Function.Name.Idx1())-1) } @@ -788,14 +834,133 @@ func (c *compiler) compileFunctionsGlobal(list []*ast.FunctionDeclaration) { } } -func (c *compiler) compileVarDecl(v *ast.VariableDeclaration, inFunc bool) { +func (c *compiler) createVarIdBinding(name unistring.String, offset int, inFunc bool) { + if c.scope.strict { + c.checkIdentifierLName(name, offset) + c.checkIdentifierName(name, offset) + } + if !inFunc || name != "arguments" { + c.scope.bindName(name) + } +} + +func (c *compiler) createBindings(target ast.Expression, createIdBinding func(name unistring.String, offset int)) { + switch target := target.(type) { + case *ast.Identifier: + createIdBinding(target.Name, int(target.Idx)-1) + case *ast.ObjectPattern: + for _, prop := range target.Properties { + switch prop := prop.(type) { + case *ast.PropertyShort: + createIdBinding(prop.Name.Name, int(prop.Name.Idx)-1) + case *ast.PropertyKeyed: + c.createBindings(prop.Value, createIdBinding) + default: + c.throwSyntaxError(int(target.Idx0()-1), "unsupported property type in ObjectPattern: %T", prop) + } + } + if target.Rest != nil { + c.createBindings(target.Rest, createIdBinding) + } + case *ast.ArrayPattern: + for _, elt := range target.Elements { + if elt != nil { + c.createBindings(elt, createIdBinding) + } + } + if target.Rest != nil { + c.createBindings(target.Rest, createIdBinding) + } + case *ast.AssignExpression: + c.createBindings(target.Left, createIdBinding) + default: + c.throwSyntaxError(int(target.Idx0()-1), "unsupported binding target: %T", target) + } +} + +func (c *compiler) createVarBinding(target ast.Expression, inFunc bool) { + c.createBindings(target, func(name unistring.String, offset int) { + c.createVarIdBinding(name, offset, inFunc) + }) +} + +func (c *compiler) createVarBindings(v *ast.VariableDeclaration, inFunc bool) { for _, item := range v.List { - if c.scope.strict { - c.checkIdentifierLName(item.Name, int(item.Idx)-1) - c.checkIdentifierName(item.Name, int(item.Idx)-1) + c.createVarBinding(item.Target, inFunc) + } +} + +func (c *compiler) createLexicalIdBinding(name unistring.String, isConst bool, offset int) *binding { + if name == "let" { + c.throwSyntaxError(offset, "let is disallowed as a lexically bound name") + } + if c.scope.strict { + c.checkIdentifierLName(name, offset) + c.checkIdentifierName(name, offset) + } + b, _ := c.scope.bindNameLexical(name, true, offset) + if isConst { + b.isConst, b.isStrict = true, true + } + return b +} + +func (c *compiler) createLexicalIdBindingFuncBody(name unistring.String, isConst bool, offset int, calleeBinding *binding) *binding { + if name == "let" { + c.throwSyntaxError(offset, "let is disallowed as a lexically bound name") + } + if c.scope.strict { + c.checkIdentifierLName(name, offset) + c.checkIdentifierName(name, offset) + } + paramScope := c.scope.outer + parentBinding := paramScope.boundNames[name] + if parentBinding != nil { + if parentBinding != calleeBinding && (name != "arguments" || !paramScope.argsNeeded) { + c.throwSyntaxError(offset, "Identifier '%s' has already been declared", name) } - if !inFunc || item.Name != "arguments" { - c.scope.bindName(item.Name) + } + b, _ := c.scope.bindNameLexical(name, true, offset) + if isConst { + b.isConst, b.isStrict = true, true + } + return b +} + +func (c *compiler) createLexicalBinding(target ast.Expression, isConst bool) { + c.createBindings(target, func(name unistring.String, offset int) { + c.createLexicalIdBinding(name, isConst, offset) + }) +} + +func (c *compiler) createLexicalBindings(lex *ast.LexicalDeclaration) { + for _, d := range lex.List { + c.createLexicalBinding(d.Target, lex.Token == token.CONST) + } +} + +func (c *compiler) compileLexicalDeclarations(list []ast.Statement, scopeDeclared bool) bool { + for _, st := range list { + if lex, ok := st.(*ast.LexicalDeclaration); ok { + if !scopeDeclared { + c.newBlockScope() + scopeDeclared = true + } + c.createLexicalBindings(lex) + } + } + return scopeDeclared +} + +func (c *compiler) compileLexicalDeclarationsFuncBody(list []ast.Statement, calleeBinding *binding) { + for _, st := range list { + if lex, ok := st.(*ast.LexicalDeclaration); ok { + isConst := lex.Token == token.CONST + for _, d := range lex.List { + c.createBindings(d.Target, func(name unistring.String, offset int) { + c.createLexicalIdBindingFuncBody(name, isConst, offset, calleeBinding) + }) + } } } } @@ -836,12 +1001,12 @@ func (c *compiler) throwSyntaxError(offset int, format string, args ...interface }) } -func (c *compiler) isStrict(list []ast.Statement) bool { +func (c *compiler) isStrict(list []ast.Statement) *ast.StringLiteral { for _, st := range list { if st, ok := st.(*ast.ExpressionStatement); ok { if e, ok := st.Expression.(*ast.StringLiteral); ok { if e.Literal == `"use strict"` || e.Literal == `'use strict'` { - return true + return e } } else { break @@ -850,14 +1015,14 @@ func (c *compiler) isStrict(list []ast.Statement) bool { break } } - return false + return nil } -func (c *compiler) isStrictStatement(s ast.Statement) bool { +func (c *compiler) isStrictStatement(s ast.Statement) *ast.StringLiteral { if s, ok := s.(*ast.BlockStatement); ok { return c.isStrict(s.List) } - return false + return nil } func (c *compiler) checkIdentifierName(name unistring.String, offset int) { diff --git a/vendor/github.com/dop251/goja/compiler_expr.go b/vendor/github.com/dop251/goja/compiler_expr.go index 1ef4246eecd..58408b3fca9 100644 --- a/vendor/github.com/dop251/goja/compiler_expr.go +++ b/vendor/github.com/dop251/goja/compiler_expr.go @@ -17,6 +17,7 @@ var ( type compiledExpr interface { emitGetter(putOnStack bool) emitSetter(valueExpr compiledExpr, putOnStack bool) + emitRef() emitUnary(prepare, body func(), postfix, putOnStack bool) deleteExpr() compiledExpr constant() bool @@ -32,6 +33,12 @@ type compiledCallExpr struct { baseCompiledExpr args []compiledExpr callee compiledExpr + + isVariadic bool +} + +type compiledNewExpr struct { + compiledCallExpr } type compiledObjectLiteral struct { @@ -60,6 +67,16 @@ type compiledAssignExpr struct { operator token.Token } +type compiledObjectAssignmentPattern struct { + baseCompiledExpr + expr *ast.ObjectPattern +} + +type compiledArrayAssignmentPattern struct { + baseCompiledExpr + expr *ast.ArrayPattern +} + type deleteGlobalExpr struct { baseCompiledExpr name unistring.String @@ -98,10 +115,15 @@ type compiledIdentifierExpr struct { type compiledFunctionLiteral struct { baseCompiledExpr - expr *ast.FunctionLiteral - lhsName unistring.String - isExpr bool - strict bool + name *ast.Identifier + parameterList *ast.ParameterList + body []ast.Statement + source string + declarationList []*ast.VariableDeclaration + lhsName unistring.String + strict *ast.StringLiteral + isExpr bool + isArrow bool } type compiledBracketExpr struct { @@ -113,12 +135,6 @@ type compiledThisExpr struct { baseCompiledExpr } -type compiledNewExpr struct { - baseCompiledExpr - callee compiledExpr - args []compiledExpr -} - type compiledNewTarget struct { baseCompiledExpr } @@ -156,17 +172,16 @@ type compiledBinaryExpr struct { operator token.Token } -type compiledVariableExpr struct { +type compiledEnumGetExpr struct { baseCompiledExpr - name unistring.String - initializer compiledExpr } -type compiledEnumGetExpr struct { +type defaultDeleteExpr struct { baseCompiledExpr + expr compiledExpr } -type defaultDeleteExpr struct { +type compiledSpreadCallArgument struct { baseCompiledExpr expr compiledExpr } @@ -207,8 +222,6 @@ func (c *compiler) compileExpression(v ast.Expression) compiledExpr { return c.compileArrayLiteral(v) case *ast.RegExpLiteral: return c.compileRegexpLiteral(v) - case *ast.VariableExpression: - return c.compileVariableExpression(v) case *ast.BinaryExpression: return c.compileBinaryExpression(v) case *ast.UnaryExpression: @@ -217,6 +230,8 @@ func (c *compiler) compileExpression(v ast.Expression) compiledExpr { return c.compileConditionalExpression(v) case *ast.FunctionLiteral: return c.compileFunctionLiteral(v, true) + case *ast.ArrowFunctionLiteral: + return c.compileArrowFunctionLiteral(v) case *ast.DotExpression: r := &compiledDotExpr{ left: c.compileExpression(v.Left), @@ -241,6 +256,10 @@ func (c *compiler) compileExpression(v ast.Expression) compiledExpr { return c.compileNewExpression(v) case *ast.MetaProperty: return c.compileMetaProperty(v) + case *ast.ObjectPattern: + return c.compileObjectAssignmentPattern(v) + case *ast.ArrayPattern: + return c.compileArrayAssignmentPattern(v) default: panic(fmt.Errorf("Unknown expression type: %T", v)) } @@ -259,6 +278,10 @@ func (e *baseCompiledExpr) emitSetter(compiledExpr, bool) { e.c.throwSyntaxError(e.offset, "Not a valid left-value expression") } +func (e *baseCompiledExpr) emitRef() { + e.c.throwSyntaxError(e.offset, "Cannot emit reference for this type of expression") +} + func (e *baseCompiledExpr) deleteExpr() compiledExpr { r := &constantExpr{ val: valueTrue, @@ -391,8 +414,25 @@ func (c *compiler) emitVarSetter(name unistring.String, offset int, valueExpr co }) } -func (e *compiledVariableExpr) emitSetter(valueExpr compiledExpr, putOnStack bool) { - e.c.emitVarSetter(e.name, e.offset, valueExpr, putOnStack) +func (c *compiler) emitVarRef(name unistring.String, offset int) { + if c.scope.strict { + c.checkIdentifierLName(name, offset) + } + + b, _ := c.scope.lookupName(name) + if b != nil { + b.emitResolveVar(c.scope.strict) + } else { + if c.scope.strict { + c.emit(resolveVar1Strict(name)) + } else { + c.emit(resolveVar1(name)) + } + } +} + +func (e *compiledIdentifierExpr) emitRef() { + e.c.emitVarRef(e.name, e.offset) } func (e *compiledIdentifierExpr) emitSetter(valueExpr compiledExpr, putOnStack bool) { @@ -476,6 +516,15 @@ func (e *compiledDotExpr) emitGetter(putOnStack bool) { } } +func (e *compiledDotExpr) emitRef() { + e.left.emitGetter(true) + if e.c.scope.strict { + e.c.emit(getPropRefStrict(e.name)) + } else { + e.c.emit(getPropRef(e.name)) + } +} + func (e *compiledDotExpr) emitSetter(valueExpr compiledExpr, putOnStack bool) { e.left.emitGetter(true) valueExpr.emitGetter(true) @@ -558,6 +607,16 @@ func (e *compiledBracketExpr) emitGetter(putOnStack bool) { } } +func (e *compiledBracketExpr) emitRef() { + e.left.emitGetter(true) + e.member.emitGetter(true) + if e.c.scope.strict { + e.c.emit(getElemRefStrict) + } else { + e.c.emit(getElemRef) + } +} + func (e *compiledBracketExpr) emitSetter(valueExpr compiledExpr, putOnStack bool) { e.left.emitGetter(true) e.member.emitGetter(true) @@ -688,7 +747,7 @@ func (e *compiledAssignExpr) emitGetter(putOnStack bool) { switch e.operator { case token.ASSIGN: if fn, ok := e.right.(*compiledFunctionLiteral); ok { - if fn.expr.Name == nil { + if fn.name == nil { if id, ok := e.left.(*compiledIdentifierExpr); ok { fn.lhsName = id.name } @@ -766,17 +825,42 @@ func (e *compiledLiteral) constant() bool { return true } +func (c *compiler) compileParameterBindingIdentifier(name unistring.String, offset int) (*binding, bool) { + if c.scope.strict { + c.checkIdentifierName(name, offset) + c.checkIdentifierLName(name, offset) + } + b, unique := c.scope.bindNameShadow(name) + if !unique && c.scope.strict { + c.throwSyntaxError(offset, "Strict mode function may not have duplicate parameter names (%s)", name) + return nil, false + } + return b, unique +} + +func (c *compiler) compileParameterPatternIdBinding(name unistring.String, offset int) { + if _, unique := c.compileParameterBindingIdentifier(name, offset); !unique { + c.throwSyntaxError(offset, "Duplicate parameter name not allowed in this context") + } +} + +func (c *compiler) compileParameterPatternBinding(item ast.Expression) { + c.createBindings(item, c.compileParameterPatternIdBinding) +} + func (e *compiledFunctionLiteral) emitGetter(putOnStack bool) { savedPrg := e.c.p e.c.p = &Program{ src: e.c.p.src, } e.c.newScope() - e.c.scope.function = true + s := e.c.scope + s.function = true + s.arrow = e.isArrow var name unistring.String - if e.expr.Name != nil { - name = e.expr.Name.Name + if e.name != nil { + name = e.name.Name } else { name = e.lhsName } @@ -793,48 +877,186 @@ func (e *compiledFunctionLiteral) emitGetter(putOnStack bool) { typ: blockScope, } - if !e.c.scope.strict { - e.c.scope.strict = e.strict + if !s.strict { + s.strict = e.strict != nil } - if e.c.scope.strict { - for _, item := range e.expr.ParameterList.List { - e.c.checkIdentifierName(item.Name, int(item.Idx)-1) - e.c.checkIdentifierLName(item.Name, int(item.Idx)-1) - } - } + hasPatterns := false + hasInits := false + firstDupIdx := -1 + length := 0 - length := len(e.expr.ParameterList.List) + if e.parameterList.Rest != nil { + hasPatterns = true // strictly speaking not, but we need to activate all the checks + } - for _, item := range e.expr.ParameterList.List { - b, unique := e.c.scope.bindNameShadow(item.Name) - if !unique && e.c.scope.strict { - e.c.throwSyntaxError(int(item.Idx)-1, "Strict mode function may not have duplicate parameter names (%s)", item.Name) + // First, make sure that the first bindings correspond to the formal parameters + for _, item := range e.parameterList.List { + switch tgt := item.Target.(type) { + case *ast.Identifier: + offset := int(tgt.Idx) - 1 + b, unique := e.c.compileParameterBindingIdentifier(tgt.Name, offset) + if !unique { + firstDupIdx = offset + } + b.isArg = true + case ast.Pattern: + b := s.addBinding(int(item.Idx0()) - 1) + b.isArg = true + hasPatterns = true + default: + e.c.throwSyntaxError(int(item.Idx0())-1, "Unsupported BindingElement type: %T", item) return } - b.isArg = true - b.isVar = true + if item.Initializer != nil { + hasInits = true + } + if hasPatterns || hasInits || e.isArrow { + if firstDupIdx >= 0 { + e.c.throwSyntaxError(firstDupIdx, "Duplicate parameter name not allowed in this context") + return + } + if e.strict != nil { + e.c.throwSyntaxError(int(e.strict.Idx)-1, "Illegal 'use strict' directive in function with non-simple parameter list") + return + } + } + if !hasInits { + length++ + } } - paramsCount := len(e.c.scope.bindings) - e.c.scope.numArgs = paramsCount - e.c.compileDeclList(e.expr.DeclarationList, true) - body := e.expr.Body.List - funcs := e.c.extractFunctions(body) - e.c.createFunctionBindings(funcs) - s := e.c.scope - e.c.compileLexicalDeclarations(body, true) - var calleeBinding *binding - if e.isExpr && e.expr.Name != nil { - if b, created := s.bindName(e.expr.Name.Name); created { - calleeBinding = b + + // create pattern bindings + if hasPatterns { + for _, item := range e.parameterList.List { + switch tgt := item.Target.(type) { + case *ast.Identifier: + // we already created those in the previous loop, skipping + default: + e.c.compileParameterPatternBinding(tgt) + } + } + if rest := e.parameterList.Rest; rest != nil { + e.c.compileParameterPatternBinding(rest) } } + + paramsCount := len(e.parameterList.List) + + s.numArgs = paramsCount + body := e.body + funcs := e.c.extractFunctions(body) + var calleeBinding *binding preambleLen := 4 // enter, boxThis, createArgs, set e.c.p.code = make([]instruction, preambleLen, 8) - if calleeBinding != nil { - e.c.emit(loadCallee) - calleeBinding.emitSetP() + emitArgsRestMark := -1 + firstForwardRef := -1 + enterFunc2Mark := -1 + + if hasPatterns || hasInits { + if e.isExpr && e.name != nil { + if b, created := s.bindNameLexical(e.name.Name, false, 0); created { + b.isConst = true + calleeBinding = b + } + } + if calleeBinding != nil { + e.c.emit(loadCallee) + calleeBinding.emitInit() + } + for i, item := range e.parameterList.List { + if pattern, ok := item.Target.(ast.Pattern); ok { + i := i + e.c.compilePatternInitExpr(func() { + if firstForwardRef == -1 { + s.bindings[i].emitGet() + } else { + e.c.emit(loadStackLex(-i - 1)) + } + }, item.Initializer, item.Target.Idx0()).emitGetter(true) + e.c.emitPattern(pattern, func(target, init compiledExpr) { + e.c.emitPatternLexicalAssign(target, init, false) + }, false) + } else if item.Initializer != nil { + markGet := len(e.c.p.code) + e.c.emit(nil) + mark := len(e.c.p.code) + e.c.emit(nil) + e.c.compileExpression(item.Initializer).emitGetter(true) + if firstForwardRef == -1 && (s.isDynamic() || s.bindings[i].useCount() > 0) { + firstForwardRef = i + } + if firstForwardRef == -1 { + s.bindings[i].emitGetAt(markGet) + } else { + e.c.p.code[markGet] = loadStackLex(-i - 1) + } + s.bindings[i].emitInit() + e.c.p.code[mark] = jdefP(len(e.c.p.code) - mark) + } else { + if firstForwardRef == -1 && s.bindings[i].useCount() > 0 { + firstForwardRef = i + } + if firstForwardRef != -1 { + e.c.emit(loadStackLex(-i - 1)) + s.bindings[i].emitInit() + } + } + } + if rest := e.parameterList.Rest; rest != nil { + e.c.emitAssign(rest, e.c.compileEmitterExpr( + func() { + emitArgsRestMark = len(e.c.p.code) + e.c.emit(createArgsRestStack(paramsCount)) + }, rest.Idx0()), + func(target, init compiledExpr) { + e.c.emitPatternLexicalAssign(target, init, false) + }) + } + if firstForwardRef != -1 { + for _, b := range s.bindings { + b.inStash = true + } + s.argsInStash = true + s.needStash = true + } + + e.c.newBlockScope() + varScope := e.c.scope + varScope.variable = true + enterFunc2Mark = len(e.c.p.code) + e.c.emit(nil) + e.c.compileDeclList(e.declarationList, false) + e.c.createFunctionBindings(funcs) + e.c.compileLexicalDeclarationsFuncBody(body, calleeBinding) + for _, b := range varScope.bindings { + if b.isVar { + if parentBinding := s.boundNames[b.name]; parentBinding != nil && parentBinding != calleeBinding { + parentBinding.emitGet() + b.emitSetP() + } + } + } + } else { + // To avoid triggering variable conflict when binding from non-strict direct eval(). + // Parameters are supposed to be in a parent scope, hence no conflict. + for _, b := range s.bindings[:paramsCount] { + b.isVar = true + } + e.c.compileDeclList(e.declarationList, true) + e.c.createFunctionBindings(funcs) + e.c.compileLexicalDeclarations(body, true) + if e.isExpr && e.name != nil { + if b, created := s.bindNameLexical(e.name.Name, false, 0); created { + b.isConst = true + calleeBinding = b + } + } + if calleeBinding != nil { + e.c.emit(loadCallee) + calleeBinding.emitInit() + } } e.c.compileFunctions(funcs) @@ -856,23 +1078,31 @@ func (e *compiledFunctionLiteral) emitGetter(putOnStack bool) { preambleLen += 2 } - if (s.argsNeeded || s.isDynamic()) && !s.argsInStash { + if !s.argsInStash && (s.argsNeeded || s.isDynamic()) { s.moveArgsToStash() } if s.argsNeeded { - pos := preambleLen - 2 - delta += 2 - if s.strict { - code[pos] = createArgsStrict(length) + b, created := s.bindNameLexical("arguments", false, 0) + if !created && !b.isVar { + s.argsNeeded = false } else { - code[pos] = createArgs(length) + if s.strict { + b.isConst = true + } else { + b.isVar = e.c.scope.function + } + pos := preambleLen - 2 + delta += 2 + if s.strict || hasPatterns || hasInits { + code[pos] = createArgsUnmapped(paramsCount) + } else { + code[pos] = createArgsMapped(paramsCount) + } + pos++ + b.markAccessPointAtScope(s, pos) + code[pos] = storeStashP(0) } - pos++ - b, _ := s.bindName("arguments") - e.c.p.code = code[:pos] - b.emitSetP() - e.c.p.code = code } stashSize, stackSize := s.finaliseVarAlloc(0) @@ -885,22 +1115,60 @@ func (e *compiledFunctionLiteral) emitGetter(putOnStack bool) { delta = preambleLen - delta var enter instruction if stashSize > 0 || s.argsInStash { - enter1 := enterFunc{ - numArgs: uint32(paramsCount), - argsToStash: s.argsInStash, - stashSize: uint32(stashSize), - stackSize: uint32(stackSize), - extensible: s.dynamic, + if firstForwardRef == -1 { + enter1 := enterFunc{ + numArgs: uint32(paramsCount), + argsToStash: s.argsInStash, + stashSize: uint32(stashSize), + stackSize: uint32(stackSize), + extensible: s.dynamic, + } + if s.isDynamic() { + enter1.names = s.makeNamesMap() + } + enter = &enter1 + if enterFunc2Mark != -1 { + ef2 := &enterFuncBody{ + extensible: e.c.scope.dynamic, + } + e.c.updateEnterBlock(&ef2.enterBlock) + e.c.p.code[enterFunc2Mark] = ef2 + } + } else { + enter1 := enterFunc1{ + stashSize: uint32(stashSize), + numArgs: uint32(paramsCount), + argsToCopy: uint32(firstForwardRef), + extensible: s.dynamic, + } + if s.isDynamic() { + enter1.names = s.makeNamesMap() + } + enter = &enter1 + if enterFunc2Mark != -1 { + ef2 := &enterFuncBody{ + adjustStack: true, + extensible: e.c.scope.dynamic, + } + e.c.updateEnterBlock(&ef2.enterBlock) + e.c.p.code[enterFunc2Mark] = ef2 + } } - if s.isDynamic() { - enter1.names = s.makeNamesMap() + if emitArgsRestMark != -1 { + e.c.p.code[emitArgsRestMark] = createArgsRestStash } - enter = &enter1 } else { enter = &enterFuncStashless{ stackSize: uint32(stackSize), args: uint32(paramsCount), } + if enterFunc2Mark != -1 { + ef2 := &enterFuncBody{ + extensible: e.c.scope.dynamic, + } + e.c.updateEnterBlock(&ef2.enterBlock) + e.c.p.code[enterFunc2Mark] = ef2 + } } code[delta] = enter if delta != 0 { @@ -914,23 +1182,63 @@ func (e *compiledFunctionLiteral) emitGetter(putOnStack bool) { strict := s.strict p := e.c.p // e.c.p.dumpCode() + if enterFunc2Mark != -1 { + e.c.popScope() + } e.c.popScope() e.c.p = savedPrg - e.c.emit(&newFunc{prg: p, length: uint32(length), name: name, srcStart: uint32(e.expr.Idx0() - 1), srcEnd: uint32(e.expr.Idx1() - 1), strict: strict}) + if e.isArrow { + e.c.emit(&newArrowFunc{newFunc: newFunc{prg: p, length: uint32(length), name: name, source: e.source, strict: strict}}) + } else { + e.c.emit(&newFunc{prg: p, length: uint32(length), name: name, source: e.source, strict: strict}) + } if !putOnStack { e.c.emit(pop) } } func (c *compiler) compileFunctionLiteral(v *ast.FunctionLiteral, isExpr bool) *compiledFunctionLiteral { - strict := c.scope.strict || c.isStrictStatement(v.Body) - if v.Name != nil && strict { + strictBody := c.isStrictStatement(v.Body) + if v.Name != nil && (c.scope.strict || strictBody != nil) { c.checkIdentifierLName(v.Name.Name, int(v.Name.Idx)-1) } r := &compiledFunctionLiteral{ - expr: v, - isExpr: isExpr, - strict: strict, + name: v.Name, + parameterList: v.ParameterList, + body: v.Body.List, + source: v.Source, + declarationList: v.DeclarationList, + isExpr: isExpr, + strict: strictBody, + } + r.init(c, v.Idx0()) + return r +} + +func (c *compiler) compileArrowFunctionLiteral(v *ast.ArrowFunctionLiteral) *compiledFunctionLiteral { + var strictBody *ast.StringLiteral + var body []ast.Statement + switch b := v.Body.(type) { + case *ast.BlockStatement: + strictBody = c.isStrictStatement(b) + body = b.List + case *ast.ExpressionBody: + body = []ast.Statement{ + &ast.ReturnStatement{ + Argument: b.Expression, + }, + } + default: + c.throwSyntaxError(int(b.Idx0())-1, "Unsupported ConciseBody type: %T", b) + } + r := &compiledFunctionLiteral{ + parameterList: v.ParameterList, + body: body, + source: v.Source, + declarationList: v.DeclarationList, + isExpr: true, + isArrow: true, + strict: strictBody, } r.init(c, v.Idx0()) return r @@ -944,7 +1252,9 @@ func (e *compiledThisExpr) emitGetter(putOnStack bool) { } if scope != nil { - scope.thisNeeded = true + if !scope.arrow { + scope.thisNeeded = true + } e.c.emit(loadStack(0)) } else { e.c.emit(loadGlobalObject) @@ -953,25 +1263,45 @@ func (e *compiledThisExpr) emitGetter(putOnStack bool) { } func (e *compiledNewExpr) emitGetter(putOnStack bool) { + if e.isVariadic { + e.c.emit(startVariadic) + } e.callee.emitGetter(true) for _, expr := range e.args { expr.emitGetter(true) } e.addSrcMap() - e.c.emit(_new(len(e.args))) + if e.isVariadic { + e.c.emit(newVariadic, endVariadic) + } else { + e.c.emit(_new(len(e.args))) + } if !putOnStack { e.c.emit(pop) } } -func (c *compiler) compileNewExpression(v *ast.NewExpression) compiledExpr { - args := make([]compiledExpr, len(v.ArgumentList)) - for i, expr := range v.ArgumentList { - args[i] = c.compileExpression(expr) +func (c *compiler) compileCallArgs(list []ast.Expression) (args []compiledExpr, isVariadic bool) { + args = make([]compiledExpr, len(list)) + for i, argExpr := range list { + if spread, ok := argExpr.(*ast.SpreadElement); ok { + args[i] = c.compileSpreadCallArgument(spread) + isVariadic = true + } else { + args[i] = c.compileExpression(argExpr) + } } + return +} + +func (c *compiler) compileNewExpression(v *ast.NewExpression) compiledExpr { + args, isVariadic := c.compileCallArgs(v.ArgumentList) r := &compiledNewExpr{ - callee: c.compileExpression(v.Callee), - args: args, + compiledCallExpr: compiledCallExpr{ + callee: c.compileExpression(v.Callee), + args: args, + isVariadic: isVariadic, + }, } r.init(c, v.Idx0()) return r @@ -1373,64 +1703,84 @@ func (c *compiler) compileLogicalAnd(left, right ast.Expression, idx file.Idx) c return r } -func (e *compiledVariableExpr) emitGetter(putOnStack bool) { - if e.initializer != nil { - idExpr := &compiledIdentifierExpr{ - name: e.name, - } - idExpr.init(e.c, file.Idx(0)) - idExpr.emitSetter(e.initializer, putOnStack) - } else { - if putOnStack { - e.c.emit(loadUndef) - } - } -} - -func (c *compiler) compileVariableExpression(v *ast.VariableExpression) compiledExpr { - r := &compiledVariableExpr{ - name: v.Name, - initializer: c.compileExpression(v.Initializer), - } - if fn, ok := r.initializer.(*compiledFunctionLiteral); ok { - fn.lhsName = v.Name - } - r.init(c, v.Idx0()) - return r -} - func (e *compiledObjectLiteral) emitGetter(putOnStack bool) { e.addSrcMap() e.c.emit(newObject) for _, prop := range e.expr.Value { - keyExpr := e.c.compileExpression(prop.Key) - cl, ok := keyExpr.(*compiledLiteral) - if !ok { - e.c.throwSyntaxError(e.offset, "non-literal properties in object literal are not supported yet") - } - key := cl.val.string() - valueExpr := e.c.compileExpression(prop.Value) - if fn, ok := valueExpr.(*compiledFunctionLiteral); ok { - if fn.expr.Name == nil { - fn.lhsName = key + switch prop := prop.(type) { + case *ast.PropertyKeyed: + keyExpr := e.c.compileExpression(prop.Key) + computed := false + var key unistring.String + switch keyExpr := keyExpr.(type) { + case *compiledLiteral: + key = keyExpr.val.string() + default: + keyExpr.emitGetter(true) + computed = true } - } - valueExpr.emitGetter(true) - switch prop.Kind { - case "value": - if key == __proto__ { - e.c.emit(setProto) + valueExpr := e.c.compileExpression(prop.Value) + var anonFn *compiledFunctionLiteral + if fn, ok := valueExpr.(*compiledFunctionLiteral); ok { + if fn.name == nil { + anonFn = fn + fn.lhsName = key + } + } + if computed { + e.c.emit(_toPropertyKey{}) + valueExpr.emitGetter(true) + switch prop.Kind { + case ast.PropertyKindValue, ast.PropertyKindMethod: + if anonFn != nil { + e.c.emit(setElem1Named) + } else { + e.c.emit(setElem1) + } + case ast.PropertyKindGet: + e.c.emit(setPropGetter1) + case ast.PropertyKindSet: + e.c.emit(setPropSetter1) + default: + panic(fmt.Errorf("unknown property kind: %s", prop.Kind)) + } } else { - e.c.emit(setProp1(key)) + if anonFn != nil { + anonFn.lhsName = key + } + valueExpr.emitGetter(true) + switch prop.Kind { + case ast.PropertyKindValue: + if key == __proto__ { + e.c.emit(setProto) + } else { + e.c.emit(setProp1(key)) + } + case ast.PropertyKindMethod: + e.c.emit(setProp1(key)) + case ast.PropertyKindGet: + e.c.emit(setPropGetter(key)) + case ast.PropertyKindSet: + e.c.emit(setPropSetter(key)) + default: + panic(fmt.Errorf("unknown property kind: %s", prop.Kind)) + } } - case "method": + case *ast.PropertyShort: + key := prop.Name.Name + if prop.Initializer != nil { + e.c.throwSyntaxError(int(prop.Initializer.Idx0())-1, "Invalid shorthand property initializer") + } + if e.c.scope.strict && key == "let" { + e.c.throwSyntaxError(e.offset, "'let' cannot be used as a shorthand property in strict mode") + } + e.c.compileIdentifierExpression(&prop.Name).emitGetter(true) e.c.emit(setProp1(key)) - case "get": - e.c.emit(setPropGetter(key)) - case "set": - e.c.emit(setPropSetter(key)) + case *ast.SpreadElement: + e.c.compileExpression(prop.Expression).emitGetter(true) + e.c.emit(copySpread) default: - panic(fmt.Errorf("unknown property kind: %s", prop.Kind)) + panic(fmt.Errorf("unknown Property type: %T", prop)) } } if !putOnStack { @@ -1448,23 +1798,28 @@ func (c *compiler) compileObjectLiteral(v *ast.ObjectLiteral) compiledExpr { func (e *compiledArrayLiteral) emitGetter(putOnStack bool) { e.addSrcMap() - objCount := 0 + hasSpread := false + mark := len(e.c.p.code) + e.c.emit(nil) for _, v := range e.expr.Value { - if v != nil { - e.c.compileExpression(v).emitGetter(true) - objCount++ + if spread, ok := v.(*ast.SpreadElement); ok { + hasSpread = true + e.c.compileExpression(spread.Expression).emitGetter(true) + e.c.emit(pushArraySpread) } else { - e.c.emit(loadNil) + if v != nil { + e.c.compileExpression(v).emitGetter(true) + } else { + e.c.emit(loadNil) + } + e.c.emit(pushArrayItem) } } - if objCount == len(e.expr.Value) { - e.c.emit(newArray(objCount)) - } else { - e.c.emit(&newArraySparse{ - l: len(e.expr.Value), - objCount: objCount, - }) + var objCount uint32 + if !hasSpread { + objCount = uint32(len(e.expr.Value)) } + e.c.p.code[mark] = newArray(objCount) if !putOnStack { e.c.emit(pop) } @@ -1499,6 +1854,9 @@ func (c *compiler) compileRegexpLiteral(v *ast.RegExpLiteral) compiledExpr { func (e *compiledCallExpr) emitGetter(putOnStack bool) { var calleeName unistring.String + if e.isVariadic { + e.c.emit(startVariadic) + } switch callee := e.callee.(type) { case *compiledDotExpr: callee.left.emitGetter(true) @@ -1523,11 +1881,14 @@ func (e *compiledCallExpr) emitGetter(putOnStack bool) { e.addSrcMap() if calleeName == "eval" { - foundFunc := false + foundFunc, foundVar := false, false for sc := e.c.scope; sc != nil; sc = sc.outer { - if !foundFunc && sc.function { + if !foundFunc && sc.function && !sc.arrow { foundFunc = true sc.thisNeeded, sc.argsNeeded = true, true + } + if !foundVar && (sc.variable || sc.function) { + foundVar = true if !sc.strict { sc.dynamic = true } @@ -1536,14 +1897,28 @@ func (e *compiledCallExpr) emitGetter(putOnStack bool) { } if e.c.scope.strict { - e.c.emit(callEvalStrict(len(e.args))) + if e.isVariadic { + e.c.emit(callEvalVariadicStrict) + } else { + e.c.emit(callEvalStrict(len(e.args))) + } } else { - e.c.emit(callEval(len(e.args))) + if e.isVariadic { + e.c.emit(callEvalVariadic) + } else { + e.c.emit(callEval(len(e.args))) + } } } else { - e.c.emit(call(len(e.args))) + if e.isVariadic { + e.c.emit(callVariadic) + } else { + e.c.emit(call(len(e.args))) + } + } + if e.isVariadic { + e.c.emit(endVariadic) } - if !putOnStack { e.c.emit(pop) } @@ -1557,16 +1932,31 @@ func (e *compiledCallExpr) deleteExpr() compiledExpr { return r } +func (c *compiler) compileSpreadCallArgument(spread *ast.SpreadElement) compiledExpr { + r := &compiledSpreadCallArgument{ + expr: c.compileExpression(spread.Expression), + } + r.init(c, spread.Idx0()) + return r +} + func (c *compiler) compileCallExpression(v *ast.CallExpression) compiledExpr { args := make([]compiledExpr, len(v.ArgumentList)) + isVariadic := false for i, argExpr := range v.ArgumentList { - args[i] = c.compileExpression(argExpr) + if spread, ok := argExpr.(*ast.SpreadElement); ok { + args[i] = c.compileSpreadCallArgument(spread) + isVariadic = true + } else { + args[i] = c.compileExpression(argExpr) + } } r := &compiledCallExpr{ - args: args, - callee: c.compileExpression(v.Callee), + args: args, + callee: c.compileExpression(v.Callee), + isVariadic: isVariadic, } r.init(c, v.LeftParenthesis) return r @@ -1647,3 +2037,273 @@ func (e *compiledEnumGetExpr) emitGetter(putOnStack bool) { e.c.emit(pop) } } + +func (c *compiler) compileObjectAssignmentPattern(v *ast.ObjectPattern) compiledExpr { + r := &compiledObjectAssignmentPattern{ + expr: v, + } + r.init(c, v.Idx0()) + return r +} + +func (e *compiledObjectAssignmentPattern) emitGetter(putOnStack bool) { + if putOnStack { + e.c.emit(loadUndef) + } +} + +func (c *compiler) compileArrayAssignmentPattern(v *ast.ArrayPattern) compiledExpr { + r := &compiledArrayAssignmentPattern{ + expr: v, + } + r.init(c, v.Idx0()) + return r +} + +func (e *compiledArrayAssignmentPattern) emitGetter(putOnStack bool) { + if putOnStack { + e.c.emit(loadUndef) + } +} + +func (c *compiler) emitNamed(expr compiledExpr, name unistring.String) { + if en, ok := expr.(interface { + emitNamed(name unistring.String) + }); ok { + en.emitNamed(name) + } else { + expr.emitGetter(true) + } +} + +func (e *compiledFunctionLiteral) emitNamed(name unistring.String) { + e.lhsName = name + e.emitGetter(true) +} + +func (c *compiler) emitPattern(pattern ast.Pattern, emitter func(target, init compiledExpr), putOnStack bool) { + switch pattern := pattern.(type) { + case *ast.ObjectPattern: + c.emitObjectPattern(pattern, emitter, putOnStack) + case *ast.ArrayPattern: + c.emitArrayPattern(pattern, emitter, putOnStack) + default: + panic(fmt.Errorf("unsupported Pattern: %T", pattern)) + } +} + +func (c *compiler) emitAssign(target ast.Expression, init compiledExpr, emitAssignSimple func(target, init compiledExpr)) { + pattern, isPattern := target.(ast.Pattern) + if isPattern { + init.emitGetter(true) + c.emitPattern(pattern, emitAssignSimple, false) + } else { + emitAssignSimple(c.compileExpression(target), init) + } +} + +func (c *compiler) emitObjectPattern(pattern *ast.ObjectPattern, emitAssign func(target, init compiledExpr), putOnStack bool) { + if pattern.Rest != nil { + c.emit(createDestructSrc) + } else { + c.emit(checkObjectCoercible) + } + for _, prop := range pattern.Properties { + switch prop := prop.(type) { + case *ast.PropertyShort: + c.emit(dup) + emitAssign(c.compileIdentifierExpression(&prop.Name), c.compilePatternInitExpr(func() { + c.emit(getProp(prop.Name.Name)) + }, prop.Initializer, prop.Idx0())) + case *ast.PropertyKeyed: + c.emit(dup) + c.compileExpression(prop.Key).emitGetter(true) + c.emit(_toPropertyKey{}) + var target ast.Expression + var initializer ast.Expression + if e, ok := prop.Value.(*ast.AssignExpression); ok { + target = e.Left + initializer = e.Right + } else { + target = prop.Value + } + c.emitAssign(target, c.compilePatternInitExpr(func() { + c.emit(getKey) + }, initializer, prop.Idx0()), emitAssign) + default: + c.throwSyntaxError(int(prop.Idx0()-1), "Unsupported AssignmentProperty type: %T", prop) + } + } + if pattern.Rest != nil { + emitAssign(c.compileExpression(pattern.Rest), c.compileEmitterExpr(func() { + c.emit(copyRest) + }, pattern.Rest.Idx0())) + c.emit(pop) + } + if !putOnStack { + c.emit(pop) + } +} + +func (c *compiler) emitArrayPattern(pattern *ast.ArrayPattern, emitAssign func(target, init compiledExpr), putOnStack bool) { + var marks []int + c.emit(iterate) + for _, elt := range pattern.Elements { + switch elt := elt.(type) { + case nil: + marks = append(marks, len(c.p.code)) + c.emit(nil) + case *ast.AssignExpression: + c.emitAssign(elt.Left, c.compilePatternInitExpr(func() { + marks = append(marks, len(c.p.code)) + c.emit(nil, enumGet) + }, elt.Right, elt.Idx0()), emitAssign) + default: + c.emitAssign(elt, c.compileEmitterExpr(func() { + marks = append(marks, len(c.p.code)) + c.emit(nil, enumGet) + }, elt.Idx0()), emitAssign) + } + } + if pattern.Rest != nil { + c.emitAssign(pattern.Rest, c.compileEmitterExpr(func() { + c.emit(newArrayFromIter) + }, pattern.Rest.Idx0()), emitAssign) + } else { + c.emit(enumPopClose) + } + mark1 := len(c.p.code) + c.emit(nil) + + for i, elt := range pattern.Elements { + switch elt := elt.(type) { + case nil: + c.p.code[marks[i]] = iterNext(len(c.p.code) - marks[i]) + case *ast.Identifier: + emitAssign(c.compileIdentifierExpression(elt), c.compileEmitterExpr(func() { + c.p.code[marks[i]] = iterNext(len(c.p.code) - marks[i]) + c.emit(loadUndef) + }, elt.Idx0())) + case *ast.AssignExpression: + c.emitAssign(elt.Left, c.compileNamedEmitterExpr(func(name unistring.String) { + c.p.code[marks[i]] = iterNext(len(c.p.code) - marks[i]) + c.emitNamed(c.compileExpression(elt.Right), name) + }, elt.Idx0()), emitAssign) + default: + c.emitAssign(elt, c.compileEmitterExpr( + func() { + c.p.code[marks[i]] = iterNext(len(c.p.code) - marks[i]) + c.emit(loadUndef) + }, elt.Idx0()), emitAssign) + } + } + c.emit(enumPop) + if pattern.Rest != nil { + c.emitAssign(pattern.Rest, c.compileExpression( + &ast.ArrayLiteral{ + LeftBracket: pattern.Rest.Idx0(), + RightBracket: pattern.Rest.Idx0(), + }), emitAssign) + } + c.p.code[mark1] = jump(len(c.p.code) - mark1) + + if !putOnStack { + c.emit(pop) + } +} + +func (e *compiledObjectAssignmentPattern) emitSetter(valueExpr compiledExpr, putOnStack bool) { + valueExpr.emitGetter(true) + e.c.emitObjectPattern(e.expr, e.c.emitPatternAssign, putOnStack) +} + +func (e *compiledArrayAssignmentPattern) emitSetter(valueExpr compiledExpr, putOnStack bool) { + valueExpr.emitGetter(true) + e.c.emitArrayPattern(e.expr, e.c.emitPatternAssign, putOnStack) +} + +type compiledPatternInitExpr struct { + baseCompiledExpr + emitSrc func() + def compiledExpr +} + +func (e *compiledPatternInitExpr) emitGetter(putOnStack bool) { + if !putOnStack { + return + } + e.emitSrc() + if e.def != nil { + mark := len(e.c.p.code) + e.c.emit(nil) + e.def.emitGetter(true) + e.c.p.code[mark] = jdef(len(e.c.p.code) - mark) + } +} + +func (e *compiledPatternInitExpr) emitNamed(name unistring.String) { + e.emitSrc() + if e.def != nil { + mark := len(e.c.p.code) + e.c.emit(nil) + e.c.emitNamed(e.def, name) + e.c.p.code[mark] = jdef(len(e.c.p.code) - mark) + } +} + +func (c *compiler) compilePatternInitExpr(emitSrc func(), def ast.Expression, idx file.Idx) compiledExpr { + r := &compiledPatternInitExpr{ + emitSrc: emitSrc, + def: c.compileExpression(def), + } + r.init(c, idx) + return r +} + +type compiledEmitterExpr struct { + baseCompiledExpr + emitter func() + namedEmitter func(name unistring.String) +} + +func (e *compiledEmitterExpr) emitGetter(putOnStack bool) { + if e.emitter != nil { + e.emitter() + } else { + e.namedEmitter("") + } + if !putOnStack { + e.c.emit(pop) + } +} + +func (e *compiledEmitterExpr) emitNamed(name unistring.String) { + if e.namedEmitter != nil { + e.namedEmitter(name) + } else { + e.emitter() + } +} + +func (c *compiler) compileEmitterExpr(emitter func(), idx file.Idx) *compiledEmitterExpr { + r := &compiledEmitterExpr{ + emitter: emitter, + } + r.init(c, idx) + return r +} + +func (c *compiler) compileNamedEmitterExpr(namedEmitter func(unistring.String), idx file.Idx) *compiledEmitterExpr { + r := &compiledEmitterExpr{ + namedEmitter: namedEmitter, + } + r.init(c, idx) + return r +} + +func (e *compiledSpreadCallArgument) emitGetter(putOnStack bool) { + e.expr.emitGetter(putOnStack) + if putOnStack { + e.c.emit(pushSpread) + } +} diff --git a/vendor/github.com/dop251/goja/compiler_stmt.go b/vendor/github.com/dop251/goja/compiler_stmt.go index 9d1a9a1c724..dfc4bc9ad23 100644 --- a/vendor/github.com/dop251/goja/compiler_stmt.go +++ b/vendor/github.com/dop251/goja/compiler_stmt.go @@ -102,12 +102,6 @@ func (c *compiler) updateEnterBlock(enter *enterBlock) { } func (c *compiler) compileTryStatement(v *ast.TryStatement, needResult bool) { - if c.scope.strict && v.Catch != nil && v.Catch.Parameter != nil { - switch v.Catch.Parameter.Name { - case "arguments", "eval": - c.throwSyntaxError(int(v.Catch.Parameter.Idx)-1, "Catch variable may not be eval or arguments in strict mode") - } - } c.block = &block{ typ: blockTry, outer: c.block, @@ -146,16 +140,31 @@ func (c *compiler) compileTryStatement(v *ast.TryStatement, needResult bool) { c.newBlockScope() list := v.Catch.Body.List funcs := c.extractFunctions(list) - c.createFunctionBindings(funcs) - c.scope.bindNameLexical(v.Catch.Parameter.Name, true, int(v.Catch.Parameter.Idx)-1) - bindings := c.scope.bindings - if l := len(bindings); l > 1 { - // make sure the catch variable always goes first - bindings[0], bindings[l-1] = bindings[l-1], bindings[0] + if _, ok := v.Catch.Parameter.(ast.Pattern); ok { + // add anonymous binding for the catch parameter, note it must be first + c.scope.addBinding(int(v.Catch.Idx0()) - 1) } - c.compileLexicalDeclarations(list, true) + c.createBindings(v.Catch.Parameter, func(name unistring.String, offset int) { + if c.scope.strict { + switch name { + case "arguments", "eval": + c.throwSyntaxError(offset, "Catch variable may not be eval or arguments in strict mode") + } + } + c.scope.bindNameLexical(name, true, offset) + }) enter := &enterBlock{} c.emit(enter) + if pattern, ok := v.Catch.Parameter.(ast.Pattern); ok { + c.scope.bindings[0].emitGet() + c.emitPattern(pattern, func(target, init compiledExpr) { + c.emitPatternLexicalAssign(target, init, false) + }, false) + } + for _, decl := range funcs { + c.scope.bindNameLexical(decl.Function.Name.Name, true, int(decl.Function.Name.Idx1())-1) + } + c.compileLexicalDeclarations(list, true) c.compileFunctions(funcs) c.compileStatements(list, bodyNeedResult) c.leaveScopeBlock(enter) @@ -252,7 +261,7 @@ func (c *compiler) compileLabeledForStatement(v *ast.ForStatement, needResult bo enterIterBlock = c.compileForHeadLexDecl(&init.LexicalDeclaration, needResult) case *ast.ForLoopInitializerVarDeclList: for _, expr := range init.List { - c.compileVariableExpression(expr).emitGetter(false) + c.compileVarBinding(expr) } case *ast.ForLoopInitializerExpression: c.compileExpression(init.Expression).emitGetter(false) @@ -347,10 +356,15 @@ func (c *compiler) compileForInto(into ast.ForInto, needResult bool) (enter *ent if c.scope.strict && into.Binding.Initializer != nil { c.throwSyntaxError(int(into.Binding.Initializer.Idx0())-1, "for-in loop variable declaration may not have an initializer.") } - c.compileIdentifierExpression(&ast.Identifier{ - Name: into.Binding.Name, - Idx: into.Binding.Idx0(), - }).emitSetter(&c.enumGetExpr, false) + switch target := into.Binding.Target.(type) { + case *ast.Identifier: + c.compileIdentifierExpression(target).emitSetter(&c.enumGetExpr, false) + case ast.Pattern: + c.emit(enumGet) + c.emitPattern(target, c.emitPatternVarAssign, false) + default: + c.throwSyntaxError(int(target.Idx0()-1), "unsupported for-in var target: %T", target) + } case *ast.ForDeclaration: c.block = &block{ @@ -362,12 +376,19 @@ func (c *compiler) compileForInto(into ast.ForInto, needResult bool) (enter *ent c.newBlockScope() enter = &enterBlock{} c.emit(enter) - if binding, ok := into.Binding.(*ast.BindingIdentifier); ok { - b := c.createLexicalBinding(binding.Name, into.IsConst, int(into.Idx)-1) - c.enumGetExpr.emitGetter(true) + switch target := into.Target.(type) { + case *ast.Identifier: + b := c.createLexicalIdBinding(target.Name, into.IsConst, int(into.Idx)-1) + c.emit(enumGet) b.emitInit() - } else { - c.throwSyntaxError(int(into.Idx)-1, "Unsupported ForBinding: %T", into.Binding) + case ast.Pattern: + c.createLexicalBinding(target, into.IsConst) + c.emit(enumGet) + c.emitPattern(target, func(target, init compiledExpr) { + c.emitPatternLexicalAssign(target, init, into.IsConst) + }, false) + default: + c.throwSyntaxError(int(into.Idx)-1, "Unsupported ForBinding: %T", into.Target) } default: panic(fmt.Sprintf("Unsupported for-into: %T", into)) @@ -385,24 +406,20 @@ func (c *compiler) compileLabeledForInOfStatement(into ast.ForInto, source ast.E } enterPos := -1 if forDecl, ok := into.(*ast.ForDeclaration); ok { - if binding, ok := forDecl.Binding.(*ast.BindingIdentifier); ok { - c.block = &block{ - typ: blockScope, - outer: c.block, - needResult: false, - } - c.newBlockScope() - enterPos = len(c.p.code) - c.emit(jump(1)) - c.createLexicalBinding(binding.Name, forDecl.IsConst, int(forDecl.Idx)-1) - } else { - c.throwSyntaxError(int(forDecl.Idx)-1, "Unsupported ForBinding: %T", forDecl.Binding) + c.block = &block{ + typ: blockScope, + outer: c.block, + needResult: false, } + c.newBlockScope() + enterPos = len(c.p.code) + c.emit(jump(1)) + c.createLexicalBinding(forDecl.Target, forDecl.IsConst) } c.compileExpression(source).emitGetter(true) if enterPos != -1 { s := c.scope - used := len(c.block.breaks) > 0 + used := len(c.block.breaks) > 0 || s.isDynamic() if !used { for _, b := range s.bindings { if b.useCount() > 0 { @@ -412,6 +429,11 @@ func (c *compiler) compileLabeledForInOfStatement(into ast.ForInto, source ast.E } } if used { + // We need the stack untouched because it contains the source. + // This is not the most optimal way, but it's an edge case, hopefully quite rare. + for _, b := range s.bindings { + b.moveToStash() + } enter := &enterBlock{} c.p.code[enterPos] = enter c.leaveScopeBlock(enter) @@ -421,7 +443,7 @@ func (c *compiler) compileLabeledForInOfStatement(into ast.ForInto, source ast.E c.popScope() } if iter { - c.emit(iterate) + c.emit(iterateP) } else { c.emit(enumerate) } @@ -711,43 +733,102 @@ func (c *compiler) compileReturnStatement(v *ast.ReturnStatement) { c.emit(ret) } +func (c *compiler) checkVarConflict(name unistring.String, offset int) { + for sc := c.scope; sc != nil; sc = sc.outer { + if b, exists := sc.boundNames[name]; exists && !b.isVar && !(b.isArg && sc != c.scope) { + c.throwSyntaxError(offset, "Identifier '%s' has already been declared", name) + } + if sc.function { + break + } + } +} + +func (c *compiler) emitVarAssign(name unistring.String, offset int, init compiledExpr) { + c.checkVarConflict(name, offset) + if init != nil { + c.emitVarRef(name, offset) + c.emitNamed(init, name) + c.emit(putValueP) + } +} + +func (c *compiler) compileVarBinding(expr *ast.Binding) { + switch target := expr.Target.(type) { + case *ast.Identifier: + c.emitVarAssign(target.Name, int(target.Idx)-1, c.compileExpression(expr.Initializer)) + case ast.Pattern: + c.compileExpression(expr.Initializer).emitGetter(true) + c.emitPattern(target, c.emitPatternVarAssign, false) + default: + c.throwSyntaxError(int(target.Idx0()-1), "unsupported variable binding target: %T", target) + } +} + +func (c *compiler) emitLexicalAssign(name unistring.String, offset int, init compiledExpr, isConst bool) { + b := c.scope.boundNames[name] + if b == nil { + panic("Lexical declaration for an unbound name") + } + if init != nil { + c.emitNamed(init, name) + } else { + if isConst { + c.throwSyntaxError(offset, "Missing initializer in const declaration") + } + c.emit(loadUndef) + } + if c.scope.outer != nil { + b.emitInit() + } else { + c.emit(initGlobal(name)) + } +} + +func (c *compiler) emitPatternVarAssign(target, init compiledExpr) { + id := target.(*compiledIdentifierExpr) + c.emitVarAssign(id.name, id.offset, init) +} + +func (c *compiler) emitPatternLexicalAssign(target, init compiledExpr, isConst bool) { + id := target.(*compiledIdentifierExpr) + c.emitLexicalAssign(id.name, id.offset, init, isConst) +} + +func (c *compiler) emitPatternAssign(target, init compiledExpr) { + target.emitRef() + if id, ok := target.(*compiledIdentifierExpr); ok { + c.emitNamed(init, id.name) + } else { + init.emitGetter(true) + } + c.emit(putValueP) +} + +func (c *compiler) compileLexicalBinding(expr *ast.Binding, isConst bool) { + switch target := expr.Target.(type) { + case *ast.Identifier: + c.emitLexicalAssign(target.Name, int(target.Idx)-1, c.compileExpression(expr.Initializer), isConst) + case ast.Pattern: + c.compileExpression(expr.Initializer).emitGetter(true) + c.emitPattern(target, func(target, init compiledExpr) { + c.emitPatternLexicalAssign(target, init, isConst) + }, false) + default: + c.throwSyntaxError(int(target.Idx0()-1), "unsupported lexical binding target: %T", target) + } +} + func (c *compiler) compileVariableStatement(v *ast.VariableStatement) { for _, expr := range v.List { - for sc := c.scope; sc != nil; sc = sc.outer { - if b, exists := sc.boundNames[expr.Name]; exists && !b.isVar { - c.throwSyntaxError(int(expr.Idx)-1, "Identifier '%s' has already been declared", expr.Name) - } - if sc.function { - break - } - } - c.compileExpression(expr).emitGetter(false) + c.compileVarBinding(expr) } } func (c *compiler) compileLexicalDeclaration(v *ast.LexicalDeclaration) { + isConst := v.Token == token.CONST for _, e := range v.List { - b := c.scope.boundNames[e.Name] - if b == nil { - panic("Lexical declaration for an unbound name") - } - if e.Initializer != nil { - initializer := c.compileExpression(e.Initializer) - if fn, ok := initializer.(*compiledFunctionLiteral); ok { - fn.lhsName = e.Name - } - initializer.emitGetter(true) - } else { - if v.Token == token.CONST { - c.throwSyntaxError(int(e.Idx1())-1, "Missing initializer in const declaration") - } - c.emit(loadUndef) - } - if c.scope.outer != nil { - b.emitInit() - } else { - c.emit(initGlobal(e.Name)) - } + c.compileLexicalBinding(e, isConst) } } @@ -845,34 +926,6 @@ func (c *compiler) compileGenericLabeledStatement(v ast.Statement, needResult bo c.leaveBlock() } -func (c *compiler) createLexicalBinding(name unistring.String, isConst bool, offset int) *binding { - if name == "let" { - c.throwSyntaxError(offset, "let is disallowed as a lexically bound name") - } - b, _ := c.scope.bindNameLexical(name, true, offset) - b.isConst = isConst - return b -} - -func (c *compiler) createLexicalBindings(lex *ast.LexicalDeclaration) { - for _, d := range lex.List { - c.createLexicalBinding(d.Name, lex.Token == token.CONST, int(d.Idx)-1) - } -} - -func (c *compiler) compileLexicalDeclarations(list []ast.Statement, scopeDeclared bool) bool { - for _, st := range list { - if lex, ok := st.(*ast.LexicalDeclaration); ok { - if !scopeDeclared { - c.newBlockScope() - scopeDeclared = true - } - c.createLexicalBindings(lex) - } - } - return scopeDeclared -} - func (c *compiler) compileBlockStatement(v *ast.BlockStatement, needResult bool) { var scopeDeclared bool funcs := c.extractFunctions(v.List) @@ -978,8 +1031,9 @@ func (c *compiler) compileSwitchStatement(v *ast.SwitchStatement, needResult boo } copy(bb[1:], bindings) db = &binding{ - scope: c.scope, - isConst: true, + scope: c.scope, + isConst: true, + isStrict: true, } bb[0] = db c.scope.bindings = bb diff --git a/vendor/github.com/dop251/goja/destruct.go b/vendor/github.com/dop251/goja/destruct.go new file mode 100644 index 00000000000..54b99b75028 --- /dev/null +++ b/vendor/github.com/dop251/goja/destruct.go @@ -0,0 +1,277 @@ +package goja + +import ( + "github.com/dop251/goja/unistring" + "reflect" +) + +type destructKeyedSource struct { + r *Runtime + wrapped Value + usedKeys map[Value]struct{} +} + +func newDestructKeyedSource(r *Runtime, wrapped Value) *destructKeyedSource { + return &destructKeyedSource{ + r: r, + wrapped: wrapped, + } +} + +func (r *Runtime) newDestructKeyedSource(wrapped Value) *Object { + return &Object{ + runtime: r, + self: newDestructKeyedSource(r, wrapped), + } +} + +func (d *destructKeyedSource) w() objectImpl { + return d.wrapped.ToObject(d.r).self +} + +func (d *destructKeyedSource) recordKey(key Value) { + if d.usedKeys == nil { + d.usedKeys = make(map[Value]struct{}) + } + d.usedKeys[key] = struct{}{} +} + +func (d *destructKeyedSource) sortLen() int64 { + return d.w().sortLen() +} + +func (d *destructKeyedSource) sortGet(i int64) Value { + return d.w().sortGet(i) +} + +func (d *destructKeyedSource) swap(i int64, i2 int64) { + d.w().swap(i, i2) +} + +func (d *destructKeyedSource) className() string { + return d.w().className() +} + +func (d *destructKeyedSource) getStr(p unistring.String, receiver Value) Value { + d.recordKey(stringValueFromRaw(p)) + return d.w().getStr(p, receiver) +} + +func (d *destructKeyedSource) getIdx(p valueInt, receiver Value) Value { + d.recordKey(p.toString()) + return d.w().getIdx(p, receiver) +} + +func (d *destructKeyedSource) getSym(p *Symbol, receiver Value) Value { + d.recordKey(p) + return d.w().getSym(p, receiver) +} + +func (d *destructKeyedSource) getOwnPropStr(u unistring.String) Value { + d.recordKey(stringValueFromRaw(u)) + return d.w().getOwnPropStr(u) +} + +func (d *destructKeyedSource) getOwnPropIdx(v valueInt) Value { + d.recordKey(v.toString()) + return d.w().getOwnPropIdx(v) +} + +func (d *destructKeyedSource) getOwnPropSym(symbol *Symbol) Value { + d.recordKey(symbol) + return d.w().getOwnPropSym(symbol) +} + +func (d *destructKeyedSource) setOwnStr(p unistring.String, v Value, throw bool) bool { + return d.w().setOwnStr(p, v, throw) +} + +func (d *destructKeyedSource) setOwnIdx(p valueInt, v Value, throw bool) bool { + return d.w().setOwnIdx(p, v, throw) +} + +func (d *destructKeyedSource) setOwnSym(p *Symbol, v Value, throw bool) bool { + return d.w().setOwnSym(p, v, throw) +} + +func (d *destructKeyedSource) setForeignStr(p unistring.String, v, receiver Value, throw bool) (res bool, handled bool) { + return d.w().setForeignStr(p, v, receiver, throw) +} + +func (d *destructKeyedSource) setForeignIdx(p valueInt, v, receiver Value, throw bool) (res bool, handled bool) { + return d.w().setForeignIdx(p, v, receiver, throw) +} + +func (d *destructKeyedSource) setForeignSym(p *Symbol, v, receiver Value, throw bool) (res bool, handled bool) { + return d.w().setForeignSym(p, v, receiver, throw) +} + +func (d *destructKeyedSource) hasPropertyStr(u unistring.String) bool { + return d.w().hasPropertyStr(u) +} + +func (d *destructKeyedSource) hasPropertyIdx(idx valueInt) bool { + return d.w().hasPropertyIdx(idx) +} + +func (d *destructKeyedSource) hasPropertySym(s *Symbol) bool { + return d.w().hasPropertySym(s) +} + +func (d *destructKeyedSource) hasOwnPropertyStr(u unistring.String) bool { + return d.w().hasOwnPropertyStr(u) +} + +func (d *destructKeyedSource) hasOwnPropertyIdx(v valueInt) bool { + return d.w().hasOwnPropertyIdx(v) +} + +func (d *destructKeyedSource) hasOwnPropertySym(s *Symbol) bool { + return d.w().hasOwnPropertySym(s) +} + +func (d *destructKeyedSource) defineOwnPropertyStr(name unistring.String, desc PropertyDescriptor, throw bool) bool { + return d.w().defineOwnPropertyStr(name, desc, throw) +} + +func (d *destructKeyedSource) defineOwnPropertyIdx(name valueInt, desc PropertyDescriptor, throw bool) bool { + return d.w().defineOwnPropertyIdx(name, desc, throw) +} + +func (d *destructKeyedSource) defineOwnPropertySym(name *Symbol, desc PropertyDescriptor, throw bool) bool { + return d.w().defineOwnPropertySym(name, desc, throw) +} + +func (d *destructKeyedSource) deleteStr(name unistring.String, throw bool) bool { + return d.w().deleteStr(name, throw) +} + +func (d *destructKeyedSource) deleteIdx(idx valueInt, throw bool) bool { + return d.w().deleteIdx(idx, throw) +} + +func (d *destructKeyedSource) deleteSym(s *Symbol, throw bool) bool { + return d.w().deleteSym(s, throw) +} + +func (d *destructKeyedSource) toPrimitiveNumber() Value { + return d.w().toPrimitiveNumber() +} + +func (d *destructKeyedSource) toPrimitiveString() Value { + return d.w().toPrimitiveString() +} + +func (d *destructKeyedSource) toPrimitive() Value { + return d.w().toPrimitive() +} + +func (d *destructKeyedSource) assertCallable() (call func(FunctionCall) Value, ok bool) { + return d.w().assertCallable() +} + +func (d *destructKeyedSource) assertConstructor() func(args []Value, newTarget *Object) *Object { + return d.w().assertConstructor() +} + +func (d *destructKeyedSource) proto() *Object { + return d.w().proto() +} + +func (d *destructKeyedSource) setProto(proto *Object, throw bool) bool { + return d.w().setProto(proto, throw) +} + +func (d *destructKeyedSource) hasInstance(v Value) bool { + return d.w().hasInstance(v) +} + +func (d *destructKeyedSource) isExtensible() bool { + return d.w().isExtensible() +} + +func (d *destructKeyedSource) preventExtensions(throw bool) bool { + return d.w().preventExtensions(throw) +} + +type destructKeyedSourceIter struct { + d *destructKeyedSource + wrapped iterNextFunc +} + +func (i *destructKeyedSourceIter) next() (propIterItem, iterNextFunc) { + for { + item, next := i.wrapped() + if next == nil { + return item, nil + } + i.wrapped = next + if _, exists := i.d.usedKeys[stringValueFromRaw(item.name)]; !exists { + return item, i.next + } + } +} + +func (d *destructKeyedSource) enumerateOwnKeys() iterNextFunc { + return (&destructKeyedSourceIter{ + d: d, + wrapped: d.w().enumerateOwnKeys(), + }).next +} + +func (d *destructKeyedSource) export(ctx *objectExportCtx) interface{} { + return d.w().export(ctx) +} + +func (d *destructKeyedSource) exportType() reflect.Type { + return d.w().exportType() +} + +func (d *destructKeyedSource) equal(impl objectImpl) bool { + return d.w().equal(impl) +} + +func (d *destructKeyedSource) ownKeys(all bool, accum []Value) []Value { + var next iterNextFunc + if all { + next = d.enumerateOwnKeys() + } else { + next = (&enumerableIter{ + wrapped: d.enumerateOwnKeys(), + }).next + } + for item, next := next(); next != nil; item, next = next() { + accum = append(accum, stringValueFromRaw(item.name)) + } + return accum +} + +func (d *destructKeyedSource) filterUsedKeys(keys []Value) []Value { + k := 0 + for i, key := range keys { + if _, exists := d.usedKeys[key]; exists { + continue + } + if k != i { + keys[k] = key + } + k++ + } + return keys[:k] +} + +func (d *destructKeyedSource) ownSymbols(all bool, accum []Value) []Value { + return d.filterUsedKeys(d.w().ownSymbols(all, accum)) +} + +func (d *destructKeyedSource) ownPropertyKeys(all bool, accum []Value) []Value { + return d.filterUsedKeys(d.w().ownPropertyKeys(all, accum)) +} + +func (d *destructKeyedSource) _putProp(name unistring.String, value Value, writable, enumerable, configurable bool) Value { + return d.w()._putProp(name, value, writable, enumerable, configurable) +} + +func (d *destructKeyedSource) _putSym(s *Symbol, prop Value) { + d.w()._putSym(s, prop) +} diff --git a/vendor/github.com/dop251/goja/func.go b/vendor/github.com/dop251/goja/func.go index 7b3a89992f7..3611c0068c8 100644 --- a/vendor/github.com/dop251/goja/func.go +++ b/vendor/github.com/dop251/goja/func.go @@ -9,15 +9,26 @@ import ( type baseFuncObject struct { baseObject - nameProp, lenProp valueProperty + lenProp valueProperty } -type funcObject struct { +type baseJsFuncObject struct { baseFuncObject - stash *stash - prg *Program - src string + stash *stash + prg *Program + src string + strict bool +} + +type funcObject struct { + baseJsFuncObject +} + +type arrowFuncObject struct { + baseJsFuncObject + this Value + newTarget Value } type nativeFuncObject struct { @@ -129,18 +140,18 @@ func (f *funcObject) Call(call FunctionCall) Value { return f.call(call, nil) } -func (f *funcObject) call(call FunctionCall, newTarget Value) Value { +func (f *arrowFuncObject) Call(call FunctionCall) Value { + return f._call(call, f.newTarget, f.this) +} + +func (f *baseJsFuncObject) _call(call FunctionCall, newTarget, this Value) Value { vm := f.val.runtime.vm pc := vm.pc vm.stack.expand(vm.sp + len(call.Arguments) + 1) vm.stack[vm.sp] = f.val vm.sp++ - if call.This != nil { - vm.stack[vm.sp] = call.This - } else { - vm.stack[vm.sp] = _undefined - } + vm.stack[vm.sp] = this vm.sp++ for _, arg := range call.Arguments { if arg != nil { @@ -162,6 +173,11 @@ func (f *funcObject) call(call FunctionCall, newTarget Value) Value { vm.pc = pc vm.halt = false return vm.pop() + +} + +func (f *funcObject) call(call FunctionCall, newTarget Value) Value { + return f._call(call, newTarget, nilSafe(call.This)) } func (f *funcObject) export(*objectExportCtx) interface{} { @@ -180,14 +196,18 @@ func (f *funcObject) assertConstructor() func(args []Value, newTarget *Object) * return f.construct } +func (f *arrowFuncObject) exportType() reflect.Type { + return reflect.TypeOf(f.Call) +} + +func (f *arrowFuncObject) assertCallable() (func(FunctionCall) Value, bool) { + return f.Call, true +} + func (f *baseFuncObject) init(name unistring.String, length int) { f.baseObject.init() - if name != "" { - f.nameProp.configurable = true - f.nameProp.value = stringValueFromRaw(name) - f._put("name", &f.nameProp) - } + f._putProp("name", stringValueFromRaw(name), false, false, true) f.lenProp.configurable = true f.lenProp.value = valueInt(length) diff --git a/vendor/github.com/dop251/goja/go.sum b/vendor/github.com/dop251/goja/go.sum index 34f3c442bd2..552aa985d73 100644 --- a/vendor/github.com/dop251/goja/go.sum +++ b/vendor/github.com/dop251/goja/go.sum @@ -8,14 +8,12 @@ github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5Nq github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/vendor/github.com/dop251/goja/object.go b/vendor/github.com/dop251/goja/object.go index 3504afac9ed..6990126b414 100644 --- a/vendor/github.com/dop251/goja/object.go +++ b/vendor/github.com/dop251/goja/object.go @@ -65,6 +65,18 @@ func (p *PropertyDescriptor) Empty() bool { return *p == empty } +func (p *PropertyDescriptor) IsAccessor() bool { + return p.Setter != nil || p.Getter != nil +} + +func (p *PropertyDescriptor) IsData() bool { + return p.Value != nil || p.Writable != FLAG_NOT_SET +} + +func (p *PropertyDescriptor) IsGeneric() bool { + return !p.IsAccessor() && !p.IsData() +} + func (p *PropertyDescriptor) toValue(r *Runtime) Value { if p.jsDescriptor != nil { return p.jsDescriptor @@ -399,7 +411,7 @@ func (o *baseObject) deleteIdx(idx valueInt, throw bool) bool { func (o *baseObject) deleteSym(s *Symbol, throw bool) bool { if o.symValues != nil { if val := o.symValues.get(s); val != nil { - if !o.checkDelete(s.desc.string(), val, throw) { + if !o.checkDelete(s.descriptiveString().string(), val, throw) { return false } o.symValues.remove(s) @@ -744,7 +756,7 @@ func (o *baseObject) defineOwnPropertySym(s *Symbol, descr PropertyDescriptor, t if o.symValues != nil { existingVal = o.symValues.get(s) } - if v, ok := o._defineOwnProperty(s.desc.string(), existingVal, descr, throw); ok { + if v, ok := o._defineOwnProperty(s.descriptiveString().string(), existingVal, descr, throw); ok { if o.symValues == nil { o.symValues = newOrderedMap(nil) } @@ -1121,9 +1133,9 @@ func (o *baseObject) fixPropOrder() { names := o.propNames for i := o.lastSortedPropLen; i < len(names); i++ { name := names[i] - if idx := strToIdx(name); idx != math.MaxUint32 { + if idx := strToArrayIdx(name); idx != math.MaxUint32 { k := sort.Search(o.idxPropCount, func(j int) bool { - return strToIdx(names[j]) >= idx + return strToArrayIdx(names[j]) >= idx }) if k < i { if namesMarkedForCopy(names) { diff --git a/vendor/github.com/dop251/goja/object_dynamic.go b/vendor/github.com/dop251/goja/object_dynamic.go index c0bbf996d6b..6cf97d67f6f 100644 --- a/vendor/github.com/dop251/goja/object_dynamic.go +++ b/vendor/github.com/dop251/goja/object_dynamic.go @@ -531,7 +531,7 @@ func (a *dynamicArray) getStr(p unistring.String, receiver Value) Value { if p == "length" { return intToValue(int64(a.a.Len())) } - if idx, ok := strPropToInt(p); ok { + if idx, ok := strToInt(p); ok { return a.a.Get(idx) } return a.getParentStr(p, receiver) @@ -551,7 +551,7 @@ func (a *dynamicArray) getOwnPropStr(u unistring.String) Value { writable: true, } } - if idx, ok := strPropToInt(u); ok { + if idx, ok := strToInt(u); ok { return a.a.Get(idx) } return nil @@ -573,7 +573,7 @@ func (a *dynamicArray) setOwnStr(p unistring.String, v Value, throw bool) bool { if p == "length" { return a._setLen(v, throw) } - if idx, ok := strPropToInt(p); ok { + if idx, ok := strToInt(p); ok { return a._setIdx(idx, v, throw) } a.val.runtime.typeErrorResult(throw, "Cannot set property %q on a dynamic array", p.String()) @@ -628,7 +628,7 @@ func (a *dynamicArray) hasOwnPropertyStr(u unistring.String) bool { if u == "length" { return true } - if idx, ok := strPropToInt(u); ok { + if idx, ok := strToInt(u); ok { return a._has(idx) } return false @@ -640,7 +640,7 @@ func (a *dynamicArray) hasOwnPropertyIdx(v valueInt) bool { func (a *dynamicArray) defineOwnPropertyStr(name unistring.String, desc PropertyDescriptor, throw bool) bool { if a.checkDynamicObjectPropertyDescr(name, desc, throw) { - if idx, ok := strPropToInt(name); ok { + if idx, ok := strToInt(name); ok { return a._setIdx(idx, desc.Value, throw) } a.val.runtime.typeErrorResult(throw, "Cannot define property %q on a dynamic array", name.String()) @@ -663,7 +663,7 @@ func (a *dynamicArray) _delete(idx int, throw bool) bool { } func (a *dynamicArray) deleteStr(name unistring.String, throw bool) bool { - if idx, ok := strPropToInt(name); ok { + if idx, ok := strToInt(name); ok { return a._delete(idx, throw) } if a.hasOwnPropertyStr(name) { diff --git a/vendor/github.com/dop251/goja/parser/expression.go b/vendor/github.com/dop251/goja/parser/expression.go index b6279c61561..c70ef1ccd1d 100644 --- a/vendor/github.com/dop251/goja/parser/expression.go +++ b/vendor/github.com/dop251/goja/parser/expression.go @@ -1,6 +1,8 @@ package parser import ( + "strings" + "github.com/dop251/goja/ast" "github.com/dop251/goja/file" "github.com/dop251/goja/token" @@ -83,10 +85,11 @@ func (self *_parser) parsePrimaryExpression() ast.Expression { case token.LEFT_BRACKET: return self.parseArrayLiteral() case token.LEFT_PARENTHESIS: - self.expect(token.LEFT_PARENTHESIS) + /*self.expect(token.LEFT_PARENTHESIS) expression := self.parseExpression() self.expect(token.RIGHT_PARENTHESIS) - return expression + return expression*/ + return self.parseParenthesisedExpression() case token.THIS: self.next() return &ast.ThisExpression{ @@ -101,6 +104,76 @@ func (self *_parser) parsePrimaryExpression() ast.Expression { return &ast.BadExpression{From: idx, To: self.idx} } +func (self *_parser) reinterpretSequenceAsArrowFuncParams(seq *ast.SequenceExpression) *ast.ParameterList { + firstRestIdx := -1 + params := make([]*ast.Binding, 0, len(seq.Sequence)) + for i, item := range seq.Sequence { + if _, ok := item.(*ast.SpreadElement); ok { + if firstRestIdx == -1 { + firstRestIdx = i + continue + } + } + if firstRestIdx != -1 { + self.error(seq.Sequence[firstRestIdx].Idx0(), "Rest parameter must be last formal parameter") + return &ast.ParameterList{} + } + params = append(params, self.reinterpretAsBinding(item)) + } + var rest ast.Expression + if firstRestIdx != -1 { + rest = self.reinterpretAsBindingRestElement(seq.Sequence[firstRestIdx]) + } + return &ast.ParameterList{ + List: params, + Rest: rest, + } +} + +func (self *_parser) parseParenthesisedExpression() ast.Expression { + opening := self.idx + self.expect(token.LEFT_PARENTHESIS) + var list []ast.Expression + if self.token != token.RIGHT_PARENTHESIS { + for { + if self.token == token.ELLIPSIS { + start := self.idx + self.errorUnexpectedToken(token.ELLIPSIS) + self.next() + expr := self.parseAssignmentExpression() + list = append(list, &ast.BadExpression{ + From: start, + To: expr.Idx1(), + }) + } else { + list = append(list, self.parseAssignmentExpression()) + } + if self.token != token.COMMA { + break + } + self.next() + if self.token == token.RIGHT_PARENTHESIS { + self.errorUnexpectedToken(token.RIGHT_PARENTHESIS) + break + } + } + } + self.expect(token.RIGHT_PARENTHESIS) + if len(list) == 1 && len(self.errors) == 0 { + return list[0] + } + if len(list) == 0 { + self.errorUnexpectedToken(token.RIGHT_PARENTHESIS) + return &ast.BadExpression{ + From: opening, + To: self.idx, + } + } + return &ast.SequenceExpression{ + Sequence: list, + } +} + func (self *_parser) parseRegExpLiteral() *ast.RegExpLiteral { offset := self.chrOffset - 1 // Opening slash already gotten @@ -140,22 +213,33 @@ func (self *_parser) parseRegExpLiteral() *ast.RegExpLiteral { } } -func (self *_parser) parseVariableDeclaration(declarationList *[]*ast.VariableExpression) ast.Expression { +func (self *_parser) parseBindingTarget() (target ast.BindingTarget) { if self.token == token.LET { self.token = token.IDENTIFIER } - if self.token != token.IDENTIFIER { + switch self.token { + case token.IDENTIFIER: + target = &ast.Identifier{ + Name: self.parsedLiteral, + Idx: self.idx, + } + self.next() + case token.LEFT_BRACKET: + target = self.parseArrayBindingPattern() + case token.LEFT_BRACE: + target = self.parseObjectBindingPattern() + default: idx := self.expect(token.IDENTIFIER) self.nextStatement() - return &ast.BadExpression{From: idx, To: self.idx} + target = &ast.BadExpression{From: idx, To: self.idx} } - name := self.parsedLiteral - idx := self.idx - self.next() - node := &ast.VariableExpression{ - Name: name, - Idx: idx, + return +} + +func (self *_parser) parseVariableDeclaration(declarationList *[]*ast.Binding) ast.Expression { + node := &ast.Binding{ + Target: self.parseBindingTarget(), } if declarationList != nil { @@ -170,7 +254,7 @@ func (self *_parser) parseVariableDeclaration(declarationList *[]*ast.VariableEx return node } -func (self *_parser) parseVariableDeclarationList() (declarationList []*ast.VariableExpression) { +func (self *_parser) parseVariableDeclarationList() (declarationList []*ast.Binding) { for { self.parseVariableDeclaration(&declarationList) if self.token != token.COMMA { @@ -181,7 +265,7 @@ func (self *_parser) parseVariableDeclarationList() (declarationList []*ast.Vari return } -func (self *_parser) parseVarDeclarationList(var_ file.Idx) []*ast.VariableExpression { +func (self *_parser) parseVarDeclarationList(var_ file.Idx) []*ast.Binding { declarationList := self.parseVariableDeclarationList() self.scope.declare(&ast.VariableDeclaration{ @@ -193,6 +277,12 @@ func (self *_parser) parseVarDeclarationList(var_ file.Idx) []*ast.VariableExpre } func (self *_parser) parseObjectPropertyKey() (unistring.String, ast.Expression, token.Token) { + if self.token == token.LEFT_BRACKET { + self.next() + expr := self.parseAssignmentExpression() + self.expect(token.RIGHT_BRACKET) + return "", expr, token.ILLEGAL + } idx, tkn, literal, parsedLiteral := self.idx, self.token, self.literal, self.parsedLiteral var value ast.Expression self.next() @@ -228,15 +318,21 @@ func (self *_parser) parseObjectPropertyKey() (unistring.String, ast.Expression, Literal: literal, Value: unistring.String(literal), } - tkn = token.STRING + tkn = token.KEYWORD } } return parsedLiteral, value, tkn } func (self *_parser) parseObjectProperty() ast.Property { + if self.token == token.ELLIPSIS { + self.next() + return &ast.SpreadElement{ + Expression: self.parseAssignmentExpression(), + } + } literal, value, tkn := self.parseObjectPropertyKey() - if tkn == token.IDENTIFIER || tkn == token.STRING { + if tkn == token.IDENTIFIER || tkn == token.STRING || tkn == token.KEYWORD || tkn == token.ILLEGAL { switch { case self.token == token.LEFT_PARENTHESIS: idx := self.idx @@ -246,35 +342,46 @@ func (self *_parser) parseObjectProperty() ast.Property { Function: idx, ParameterList: parameterList, } - self.parseFunctionBlock(node) + node.Body, node.DeclarationList = self.parseFunctionBlock() - return ast.Property{ + return &ast.PropertyKeyed{ Key: value, - Kind: "method", + Kind: ast.PropertyKindMethod, Value: node, } - case self.token == token.COMMA || self.token == token.RIGHT_BRACE: // shorthand property - return ast.Property{ - Key: value, - Kind: "value", - Value: &ast.Identifier{ - Name: literal, - Idx: self.idx, - }, + case self.token == token.COMMA || self.token == token.RIGHT_BRACE || self.token == token.ASSIGN: // shorthand property + if tkn == token.IDENTIFIER || tkn == token.KEYWORD && literal == "let" { + var initializer ast.Expression + if self.token == token.ASSIGN { + // allow the initializer syntax here in case the object literal + // needs to be reinterpreted as an assignment pattern, enforce later if it doesn't. + self.next() + initializer = self.parseAssignmentExpression() + } + return &ast.PropertyShort{ + Name: ast.Identifier{ + Name: literal, + Idx: value.Idx0(), + }, + Initializer: initializer, + } } case literal == "get" && self.token != token.COLON: idx := self.idx _, value, _ := self.parseObjectPropertyKey() + idx1 := self.idx parameterList := self.parseFunctionParameterList() - + if len(parameterList.List) > 0 || parameterList.Rest != nil { + self.error(idx1, "Getter must not have any formal parameters.") + } node := &ast.FunctionLiteral{ Function: idx, ParameterList: parameterList, } - self.parseFunctionBlock(node) - return ast.Property{ + node.Body, node.DeclarationList = self.parseFunctionBlock() + return &ast.PropertyKeyed{ Key: value, - Kind: "get", + Kind: ast.PropertyKindGet, Value: node, } case literal == "set" && self.token != token.COLON: @@ -287,11 +394,11 @@ func (self *_parser) parseObjectProperty() ast.Property { ParameterList: parameterList, } - self.parseFunctionBlock(node) + node.Body, node.DeclarationList = self.parseFunctionBlock() - return ast.Property{ + return &ast.PropertyKeyed{ Key: value, - Kind: "set", + Kind: ast.PropertyKindSet, Value: node, } } @@ -299,14 +406,14 @@ func (self *_parser) parseObjectProperty() ast.Property { self.expect(token.COLON) - return ast.Property{ + return &ast.PropertyKeyed{ Key: value, - Kind: "value", + Kind: ast.PropertyKindValue, Value: self.parseAssignmentExpression(), } } -func (self *_parser) parseObjectLiteral() ast.Expression { +func (self *_parser) parseObjectLiteral() *ast.ObjectLiteral { var value []ast.Property idx0 := self.expect(token.LEFT_BRACE) for self.token != token.RIGHT_BRACE && self.token != token.EOF { @@ -327,7 +434,7 @@ func (self *_parser) parseObjectLiteral() ast.Expression { } } -func (self *_parser) parseArrayLiteral() ast.Expression { +func (self *_parser) parseArrayLiteral() *ast.ArrayLiteral { idx0 := self.expect(token.LEFT_BRACKET) var value []ast.Expression @@ -337,7 +444,14 @@ func (self *_parser) parseArrayLiteral() ast.Expression { value = append(value, nil) continue } - value = append(value, self.parseAssignmentExpression()) + if self.token == token.ELLIPSIS { + self.next() + value = append(value, &ast.SpreadElement{ + Expression: self.parseAssignmentExpression(), + }) + } else { + value = append(value, self.parseAssignmentExpression()) + } if self.token != token.RIGHT_BRACKET { self.expect(token.COMMA) } @@ -355,7 +469,16 @@ func (self *_parser) parseArgumentList() (argumentList []ast.Expression, idx0, i idx0 = self.expect(token.LEFT_PARENTHESIS) if self.token != token.RIGHT_PARENTHESIS { for { - argumentList = append(argumentList, self.parseAssignmentExpression()) + var item ast.Expression + if self.token == token.ELLIPSIS { + self.next() + item = &ast.SpreadElement{ + Expression: self.parseAssignmentExpression(), + } + } else { + item = self.parseAssignmentExpression() + } + argumentList = append(argumentList, item) if self.token != token.COMMA { break } @@ -763,7 +886,7 @@ func (self *_parser) parseLogicalOrExpression() ast.Expression { return left } -func (self *_parser) parseConditionlExpression() ast.Expression { +func (self *_parser) parseConditionalExpression() ast.Expression { left := self.parseLogicalOrExpression() if self.token == token.QUESTION_MARK { @@ -781,10 +904,16 @@ func (self *_parser) parseConditionlExpression() ast.Expression { } func (self *_parser) parseAssignmentExpression() ast.Expression { + start := self.idx + parenthesis := false + var state parserState if self.token == token.LET { self.token = token.IDENTIFIER + } else if self.token == token.LEFT_PARENTHESIS { + self.mark(&state) + parenthesis = true } - left := self.parseConditionlExpression() + left := self.parseConditionalExpression() var operator token.Token switch self.token { case token.ASSIGN: @@ -811,23 +940,65 @@ func (self *_parser) parseAssignmentExpression() ast.Expression { operator = token.SHIFT_RIGHT case token.UNSIGNED_SHIFT_RIGHT_ASSIGN: operator = token.UNSIGNED_SHIFT_RIGHT + case token.ARROW: + var paramList *ast.ParameterList + if id, ok := left.(*ast.Identifier); ok { + paramList = &ast.ParameterList{ + Opening: id.Idx, + Closing: id.Idx1(), + List: []*ast.Binding{{ + Target: id, + }}, + } + } else if parenthesis { + if seq, ok := left.(*ast.SequenceExpression); ok && len(self.errors) == 0 { + paramList = self.reinterpretSequenceAsArrowFuncParams(seq) + } else { + self.restore(&state) + paramList = self.parseFunctionParameterList() + } + } else { + self.error(left.Idx0(), "Malformed arrow function parameter list") + return &ast.BadExpression{From: left.Idx0(), To: left.Idx1()} + } + self.expect(token.ARROW) + node := &ast.ArrowFunctionLiteral{ + Start: start, + ParameterList: paramList, + } + node.Body, node.DeclarationList = self.parseArrowFunctionBody() + node.Source = self.slice(node.Start, node.Body.Idx1()) + return node } if operator != 0 { idx := self.idx self.next() - switch left.(type) { + ok := false + switch l := left.(type) { case *ast.Identifier, *ast.DotExpression, *ast.BracketExpression: - default: - self.error(left.Idx0(), "Invalid left-hand side in assignment") - self.nextStatement() - return &ast.BadExpression{From: idx, To: self.idx} + ok = true + case *ast.ArrayLiteral: + if !parenthesis && operator == token.ASSIGN { + left = self.reinterpretAsArrayAssignmentPattern(l) + ok = true + } + case *ast.ObjectLiteral: + if !parenthesis && operator == token.ASSIGN { + left = self.reinterpretAsObjectAssignmentPattern(l) + ok = true + } } - return &ast.AssignExpression{ - Left: left, - Operator: operator, - Right: self.parseAssignmentExpression(), + if ok { + return &ast.AssignExpression{ + Left: left, + Operator: operator, + Right: self.parseAssignmentExpression(), + } } + self.error(left.Idx0(), "Invalid left-hand side in assignment") + self.nextStatement() + return &ast.BadExpression{From: idx, To: self.idx} } return left @@ -856,3 +1027,252 @@ func (self *_parser) parseExpression() ast.Expression { return left } + +func (self *_parser) checkComma(from, to file.Idx) { + if pos := strings.IndexByte(self.str[int(from)-self.base:int(to)-self.base], ','); pos >= 0 { + self.error(from+file.Idx(pos), "Comma is not allowed here") + } +} + +func (self *_parser) reinterpretAsArrayAssignmentPattern(left *ast.ArrayLiteral) ast.Expression { + value := left.Value + var rest ast.Expression + for i, item := range value { + if spread, ok := item.(*ast.SpreadElement); ok { + if i != len(value)-1 { + self.error(item.Idx0(), "Rest element must be last element") + return &ast.BadExpression{From: left.Idx0(), To: left.Idx1()} + } + self.checkComma(spread.Expression.Idx1(), left.RightBracket) + rest = self.reinterpretAsDestructAssignTarget(spread.Expression) + value = value[:len(value)-1] + } else { + value[i] = self.reinterpretAsAssignmentElement(item) + } + } + return &ast.ArrayPattern{ + LeftBracket: left.LeftBracket, + RightBracket: left.RightBracket, + Elements: value, + Rest: rest, + } +} + +func (self *_parser) reinterpretArrayAssignPatternAsBinding(pattern *ast.ArrayPattern) *ast.ArrayPattern { + for i, item := range pattern.Elements { + pattern.Elements[i] = self.reinterpretAsDestructBindingTarget(item) + } + if pattern.Rest != nil { + pattern.Rest = self.reinterpretAsDestructBindingTarget(pattern.Rest) + } + return pattern +} + +func (self *_parser) reinterpretAsArrayBindingPattern(left *ast.ArrayLiteral) ast.BindingTarget { + value := left.Value + var rest ast.Expression + for i, item := range value { + if spread, ok := item.(*ast.SpreadElement); ok { + if i != len(value)-1 { + self.error(item.Idx0(), "Rest element must be last element") + return &ast.BadExpression{From: left.Idx0(), To: left.Idx1()} + } + self.checkComma(spread.Expression.Idx1(), left.RightBracket) + rest = self.reinterpretAsDestructBindingTarget(spread.Expression) + value = value[:len(value)-1] + } else { + value[i] = self.reinterpretAsBindingElement(item) + } + } + return &ast.ArrayPattern{ + LeftBracket: left.LeftBracket, + RightBracket: left.RightBracket, + Elements: value, + Rest: rest, + } +} + +func (self *_parser) parseArrayBindingPattern() ast.BindingTarget { + return self.reinterpretAsArrayBindingPattern(self.parseArrayLiteral()) +} + +func (self *_parser) parseObjectBindingPattern() ast.BindingTarget { + return self.reinterpretAsObjectBindingPattern(self.parseObjectLiteral()) +} + +func (self *_parser) reinterpretArrayObjectPatternAsBinding(pattern *ast.ObjectPattern) *ast.ObjectPattern { + for _, prop := range pattern.Properties { + if keyed, ok := prop.(*ast.PropertyKeyed); ok { + keyed.Value = self.reinterpretAsBindingElement(keyed.Value) + } + } + if pattern.Rest != nil { + pattern.Rest = self.reinterpretAsBindingRestElement(pattern.Rest) + } + return pattern +} + +func (self *_parser) reinterpretAsObjectBindingPattern(expr *ast.ObjectLiteral) ast.BindingTarget { + var rest ast.Expression + value := expr.Value + for i, prop := range value { + ok := false + switch prop := prop.(type) { + case *ast.PropertyKeyed: + if prop.Kind == ast.PropertyKindValue { + prop.Value = self.reinterpretAsBindingElement(prop.Value) + ok = true + } + case *ast.PropertyShort: + ok = true + case *ast.SpreadElement: + if i != len(expr.Value)-1 { + self.error(prop.Idx0(), "Rest element must be last element") + return &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()} + } + // TODO make sure there is no trailing comma + rest = self.reinterpretAsBindingRestElement(prop.Expression) + value = value[:i] + ok = true + } + if !ok { + self.error(prop.Idx0(), "Invalid destructuring binding target") + return &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()} + } + } + return &ast.ObjectPattern{ + LeftBrace: expr.LeftBrace, + RightBrace: expr.RightBrace, + Properties: value, + Rest: rest, + } +} + +func (self *_parser) reinterpretAsObjectAssignmentPattern(l *ast.ObjectLiteral) ast.Expression { + var rest ast.Expression + value := l.Value + for i, prop := range value { + ok := false + switch prop := prop.(type) { + case *ast.PropertyKeyed: + if prop.Kind == ast.PropertyKindValue { + prop.Value = self.reinterpretAsAssignmentElement(prop.Value) + ok = true + } + case *ast.PropertyShort: + ok = true + case *ast.SpreadElement: + if i != len(l.Value)-1 { + self.error(prop.Idx0(), "Rest element must be last element") + return &ast.BadExpression{From: l.Idx0(), To: l.Idx1()} + } + // TODO make sure there is no trailing comma + rest = prop.Expression + value = value[:i] + ok = true + } + if !ok { + self.error(prop.Idx0(), "Invalid destructuring assignment target") + return &ast.BadExpression{From: l.Idx0(), To: l.Idx1()} + } + } + return &ast.ObjectPattern{ + LeftBrace: l.LeftBrace, + RightBrace: l.RightBrace, + Properties: value, + Rest: rest, + } +} + +func (self *_parser) reinterpretAsAssignmentElement(expr ast.Expression) ast.Expression { + switch expr := expr.(type) { + case *ast.AssignExpression: + if expr.Operator == token.ASSIGN { + expr.Left = self.reinterpretAsDestructAssignTarget(expr.Left) + return expr + } else { + self.error(expr.Idx0(), "Invalid destructuring assignment target") + return &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()} + } + default: + return self.reinterpretAsDestructAssignTarget(expr) + } +} + +func (self *_parser) reinterpretAsBindingElement(expr ast.Expression) ast.Expression { + switch expr := expr.(type) { + case *ast.AssignExpression: + if expr.Operator == token.ASSIGN { + expr.Left = self.reinterpretAsDestructBindingTarget(expr.Left) + return expr + } else { + self.error(expr.Idx0(), "Invalid destructuring assignment target") + return &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()} + } + default: + return self.reinterpretAsDestructBindingTarget(expr) + } +} + +func (self *_parser) reinterpretAsBinding(expr ast.Expression) *ast.Binding { + switch expr := expr.(type) { + case *ast.AssignExpression: + if expr.Operator == token.ASSIGN { + return &ast.Binding{ + Target: self.reinterpretAsDestructBindingTarget(expr.Left), + Initializer: expr.Right, + } + } else { + self.error(expr.Idx0(), "Invalid destructuring assignment target") + return &ast.Binding{ + Target: &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()}, + } + } + default: + return &ast.Binding{ + Target: self.reinterpretAsDestructBindingTarget(expr), + } + } +} + +func (self *_parser) reinterpretAsDestructAssignTarget(item ast.Expression) ast.Expression { + switch item := item.(type) { + case nil: + return nil + case *ast.ArrayLiteral: + return self.reinterpretAsArrayAssignmentPattern(item) + case *ast.ObjectLiteral: + return self.reinterpretAsObjectAssignmentPattern(item) + case ast.Pattern, *ast.Identifier, *ast.DotExpression, *ast.BracketExpression: + return item + } + self.error(item.Idx0(), "Invalid destructuring assignment target") + return &ast.BadExpression{From: item.Idx0(), To: item.Idx1()} +} + +func (self *_parser) reinterpretAsDestructBindingTarget(item ast.Expression) ast.BindingTarget { + switch item := item.(type) { + case nil: + return nil + case *ast.ArrayPattern: + return self.reinterpretArrayAssignPatternAsBinding(item) + case *ast.ObjectPattern: + return self.reinterpretArrayObjectPatternAsBinding(item) + case *ast.ArrayLiteral: + return self.reinterpretAsArrayBindingPattern(item) + case *ast.ObjectLiteral: + return self.reinterpretAsObjectBindingPattern(item) + case *ast.Identifier: + return item + } + self.error(item.Idx0(), "Invalid destructuring binding target") + return &ast.BadExpression{From: item.Idx0(), To: item.Idx1()} +} + +func (self *_parser) reinterpretAsBindingRestElement(expr ast.Expression) ast.Expression { + if _, ok := expr.(*ast.Identifier); ok { + return expr + } + self.error(expr.Idx0(), "Invalid binding rest") + return &ast.BadExpression{From: expr.Idx0(), To: expr.Idx1()} +} diff --git a/vendor/github.com/dop251/goja/parser/lexer.go b/vendor/github.com/dop251/goja/parser/lexer.go index ce81cfc07b8..92e7eeb8596 100644 --- a/vendor/github.com/dop251/goja/parser/lexer.go +++ b/vendor/github.com/dop251/goja/parser/lexer.go @@ -184,6 +184,33 @@ func isId(tkn token.Token) bool { return false } +type parserState struct { + tok token.Token + literal string + parsedLiteral unistring.String + implicitSemicolon, insertSemicolon bool + chr rune + chrOffset, offset int + errorCount int +} + +func (self *_parser) mark(state *parserState) *parserState { + if state == nil { + state = &parserState{} + } + state.tok, state.literal, state.parsedLiteral, state.implicitSemicolon, state.insertSemicolon, state.chr, state.chrOffset, state.offset = + self.token, self.literal, self.parsedLiteral, self.implicitSemicolon, self.insertSemicolon, self.chr, self.chrOffset, self.offset + + state.errorCount = len(self.errors) + return state +} + +func (self *_parser) restore(state *parserState) { + self.token, self.literal, self.parsedLiteral, self.implicitSemicolon, self.insertSemicolon, self.chr, self.chrOffset, self.offset = + state.tok, state.literal, state.parsedLiteral, state.implicitSemicolon, state.insertSemicolon, state.chr, state.chrOffset, state.offset + self.errors = self.errors[:state.errorCount] +} + func (self *_parser) peek() token.Token { implicitSemicolon, insertSemicolon, chr, chrOffset, offset := self.implicitSemicolon, self.insertSemicolon, self.chr, self.chrOffset, self.offset tok, _, _, _ := self.scan() @@ -297,7 +324,17 @@ func (self *_parser) scan() (tkn token.Token, literal string, parsedLiteral unis insertSemicolon = true tkn, literal = self.scanNumericLiteral(true) } else { - tkn = token.PERIOD + if self.chr == '.' { + self.read() + if self.chr == '.' { + self.read() + tkn = token.ELLIPSIS + } else { + tkn = token.ILLEGAL + } + } else { + tkn = token.PERIOD + } } case ',': tkn = token.COMMA @@ -351,10 +388,19 @@ func (self *_parser) scan() (tkn token.Token, literal string, parsedLiteral unis case '>': tkn = self.switch6(token.GREATER, token.GREATER_OR_EQUAL, '>', token.SHIFT_RIGHT, token.SHIFT_RIGHT_ASSIGN, '>', token.UNSIGNED_SHIFT_RIGHT, token.UNSIGNED_SHIFT_RIGHT_ASSIGN) case '=': - tkn = self.switch2(token.ASSIGN, token.EQUAL) - if tkn == token.EQUAL && self.chr == '=' { + if self.chr == '>' { self.read() - tkn = token.STRICT_EQUAL + if self.implicitSemicolon { + tkn = token.ILLEGAL + } else { + tkn = token.ARROW + } + } else { + tkn = self.switch2(token.ASSIGN, token.EQUAL) + if tkn == token.EQUAL && self.chr == '=' { + self.read() + tkn = token.STRICT_EQUAL + } } case '!': tkn = self.switch2(token.NOT, token.NOT_EQUAL) diff --git a/vendor/github.com/dop251/goja/parser/statement.go b/vendor/github.com/dop251/goja/parser/statement.go index 740a8506512..84269123455 100644 --- a/vendor/github.com/dop251/goja/parser/statement.go +++ b/vendor/github.com/dop251/goja/parser/statement.go @@ -128,17 +128,11 @@ func (self *_parser) parseTryStatement() ast.Statement { if self.token == token.CATCH { catch := self.idx self.next() - var parameter *ast.Identifier + var parameter ast.BindingTarget if self.token == token.LEFT_PARENTHESIS { self.next() - if self.token != token.IDENTIFIER { - self.expect(token.IDENTIFIER) - self.nextStatement() - return &ast.BadStatement{From: catch, To: self.idx} - } else { - parameter = self.parseIdentifier() - self.expect(token.RIGHT_PARENTHESIS) - } + parameter = self.parseBindingTarget() + self.expect(token.RIGHT_PARENTHESIS) } node.Catch = &ast.CatchStatement{ Catch: catch, @@ -162,13 +156,15 @@ func (self *_parser) parseTryStatement() ast.Statement { func (self *_parser) parseFunctionParameterList() *ast.ParameterList { opening := self.expect(token.LEFT_PARENTHESIS) - var list []*ast.Identifier + var list []*ast.Binding + var rest ast.Expression for self.token != token.RIGHT_PARENTHESIS && self.token != token.EOF { - if self.token != token.IDENTIFIER { - self.expect(token.IDENTIFIER) - } else { - list = append(list, self.parseIdentifier()) + if self.token == token.ELLIPSIS { + self.next() + rest = self.reinterpretAsDestructBindingTarget(self.parseAssignmentExpression()) + break } + self.parseVariableDeclaration(&list) if self.token != token.RIGHT_PARENTHESIS { self.expect(token.COMMA) } @@ -178,24 +174,11 @@ func (self *_parser) parseFunctionParameterList() *ast.ParameterList { return &ast.ParameterList{ Opening: opening, List: list, + Rest: rest, Closing: closing, } } -func (self *_parser) parseParameterList() (list []string) { - for self.token != token.EOF { - if self.token != token.IDENTIFIER { - self.expect(token.IDENTIFIER) - } - list = append(list, self.literal) - self.next() - if self.token != token.EOF { - self.expect(token.COMMA) - } - } - return -} - func (self *_parser) parseFunction(declaration bool) *ast.FunctionLiteral { node := &ast.FunctionLiteral{ @@ -211,24 +194,32 @@ func (self *_parser) parseFunction(declaration bool) *ast.FunctionLiteral { } node.Name = name node.ParameterList = self.parseFunctionParameterList() - self.parseFunctionBlock(node) + node.Body, node.DeclarationList = self.parseFunctionBlock() node.Source = self.slice(node.Idx0(), node.Idx1()) return node } -func (self *_parser) parseFunctionBlock(node *ast.FunctionLiteral) { - { - self.openScope() - inFunction := self.scope.inFunction - self.scope.inFunction = true - defer func() { - self.scope.inFunction = inFunction - self.closeScope() - }() - node.Body = self.parseBlockStatement() - node.DeclarationList = self.scope.declarationList +func (self *_parser) parseFunctionBlock() (body *ast.BlockStatement, declarationList []*ast.VariableDeclaration) { + self.openScope() + inFunction := self.scope.inFunction + self.scope.inFunction = true + defer func() { + self.scope.inFunction = inFunction + self.closeScope() + }() + body = self.parseBlockStatement() + declarationList = self.scope.declarationList + return +} + +func (self *_parser) parseArrowFunctionBody() (ast.ConciseBody, []*ast.VariableDeclaration) { + if self.token == token.LEFT_BRACE { + return self.parseFunctionBlock() } + return &ast.ExpressionBody{ + Expression: self.parseAssignmentExpression(), + }, nil } func (self *_parser) parseDebuggerStatement() ast.Statement { @@ -452,7 +443,7 @@ func (self *_parser) parseForOrForInStatement() ast.Statement { if tok == token.VAR || tok == token.LET || tok == token.CONST { idx := self.idx self.next() - var list []*ast.VariableExpression + var list []*ast.Binding if tok == token.VAR { list = self.parseVarDeclarationList(idx) } else { @@ -479,13 +470,11 @@ func (self *_parser) parseForOrForInStatement() ast.Statement { into = &ast.ForDeclaration{ Idx: idx, IsConst: tok == token.CONST, - Binding: &ast.BindingIdentifier{ - Name: list[0].Name, - Idx: list[0].Idx, - }, + Target: list[0].Target, } } } else { + self.ensurePatternInit(list) if tok == token.VAR { initializer = &ast.ForLoopInitializerVarDeclList{ List: list, @@ -510,9 +499,13 @@ func (self *_parser) parseForOrForInStatement() ast.Statement { forOf = true } if forIn || forOf { - switch expr.(type) { - case *ast.Identifier, *ast.DotExpression, *ast.BracketExpression, *ast.VariableExpression: + switch e := expr.(type) { + case *ast.Identifier, *ast.DotExpression, *ast.BracketExpression, *ast.Binding: // These are all acceptable + case *ast.ObjectLiteral: + expr = self.reinterpretAsObjectAssignmentPattern(e) + case *ast.ArrayLiteral: + expr = self.reinterpretAsArrayAssignmentPattern(e) default: self.error(idx, "Invalid left-hand side in for-in or for-of") self.nextStatement() @@ -541,11 +534,23 @@ func (self *_parser) parseForOrForInStatement() ast.Statement { return self.parseFor(idx, initializer) } +func (self *_parser) ensurePatternInit(list []*ast.Binding) { + for _, item := range list { + if _, ok := item.Target.(ast.Pattern); ok { + if item.Initializer == nil { + self.error(item.Idx1(), "Missing initializer in destructuring declaration") + break + } + } + } +} + func (self *_parser) parseVariableStatement() *ast.VariableStatement { idx := self.expect(token.VAR) list := self.parseVarDeclarationList(idx) + self.ensurePatternInit(list) self.semicolon() return &ast.VariableStatement{ @@ -561,6 +566,7 @@ func (self *_parser) parseLexicalDeclaration(tok token.Token) *ast.LexicalDeclar } list := self.parseVariableDeclarationList() + self.ensurePatternInit(list) self.semicolon() return &ast.LexicalDeclaration{ diff --git a/vendor/github.com/dop251/goja/proxy.go b/vendor/github.com/dop251/goja/proxy.go index a7c2aafa9b7..de4901315e9 100644 --- a/vendor/github.com/dop251/goja/proxy.go +++ b/vendor/github.com/dop251/goja/proxy.go @@ -774,6 +774,23 @@ func (p *proxyObject) deleteSym(s *Symbol, throw bool) bool { func (p *proxyObject) ownPropertyKeys(all bool, _ []Value) []Value { if v, ok := p.proxyOwnKeys(); ok { + if !all { + k := 0 + for i, key := range v { + prop := p.val.getOwnProp(key) + if prop == nil { + continue + } + if prop, ok := prop.(*valueProperty); ok && !prop.enumerable { + continue + } + if k != i { + v[k] = v[i] + } + k++ + } + v = v[:k] + } return v } return p.target.self.ownPropertyKeys(all, nil) @@ -848,7 +865,7 @@ func (p *proxyObject) assertConstructor() func(args []Value, newTarget *Object) func (p *proxyObject) apply(call FunctionCall) Value { if p.call == nil { - p.val.runtime.NewTypeError("proxy target is not a function") + panic(p.val.runtime.NewTypeError("proxy target is not a function")) } if v, ok := p.checkHandler().apply(p.target, nilSafe(call.This), call.Arguments); ok { return v @@ -891,15 +908,15 @@ func (p *proxyObject) __isCompatibleDescriptor(extensible bool, desc *PropertyDe return false } - if p.__isGenericDescriptor(desc) { + if desc.IsGeneric() { return true } - if p.__isDataDescriptor(desc) != !current.accessor { + if desc.IsData() != !current.accessor { return desc.Configurable != FLAG_FALSE } - if p.__isDataDescriptor(desc) && !current.accessor { + if desc.IsData() && !current.accessor { if !current.configurable { if desc.Writable == FLAG_TRUE && !current.writable { return false @@ -912,7 +929,7 @@ func (p *proxyObject) __isCompatibleDescriptor(extensible bool, desc *PropertyDe } return true } - if p.__isAccessorDescriptor(desc) && current.accessor { + if desc.IsAccessor() && current.accessor { if !current.configurable { if desc.Setter != nil && desc.Setter.SameAs(current.setterFunc) { return false @@ -926,18 +943,6 @@ func (p *proxyObject) __isCompatibleDescriptor(extensible bool, desc *PropertyDe return true } -func (p *proxyObject) __isAccessorDescriptor(desc *PropertyDescriptor) bool { - return desc.Setter != nil || desc.Getter != nil -} - -func (p *proxyObject) __isDataDescriptor(desc *PropertyDescriptor) bool { - return desc.Value != nil || desc.Writable != FLAG_NOT_SET -} - -func (p *proxyObject) __isGenericDescriptor(desc *PropertyDescriptor) bool { - return !p.__isAccessorDescriptor(desc) && !p.__isDataDescriptor(desc) -} - func (p *proxyObject) __sameValue(val1, val2 Value) bool { if val1 == nil && val2 == nil { return true @@ -1004,7 +1009,7 @@ func (p *proxyObject) ownKeys(all bool, _ []Value) []Value { // we can assume ac func (p *proxyObject) ownSymbols(all bool, accum []Value) []Value { if vals, ok := p.proxyOwnKeys(); ok { - res := p.filterKeys(vals, true, true) + res := p.filterKeys(vals, all, true) if accum == nil { return res } diff --git a/vendor/github.com/dop251/goja/runtime.go b/vendor/github.com/dop251/goja/runtime.go index 0e4f325f5e3..380a4f37c53 100644 --- a/vendor/github.com/dop251/goja/runtime.go +++ b/vendor/github.com/dop251/goja/runtime.go @@ -352,9 +352,11 @@ func (r *Runtime) init() { } r.vm.init() - r.global.FunctionPrototype = r.newNativeFunc(func(FunctionCall) Value { + funcProto := r.newNativeFunc(func(FunctionCall) Value { return _undefined }, nil, " ", nil, 0) + r.global.FunctionPrototype = funcProto + funcProtoObj := funcProto.self.(*nativeFuncObject) r.global.IteratorPrototype = r.newLazyObject(r.createIterProto) @@ -391,6 +393,9 @@ func (r *Runtime) init() { setterFunc: r.global.thrower, accessor: true, } + + funcProtoObj._put("caller", r.global.throwerProperty) + funcProtoObj._put("arguments", r.global.throwerProperty) } func (r *Runtime) typeErrorResult(throw bool, args ...interface{}) { @@ -487,13 +492,35 @@ func (r *Runtime) newFunc(name unistring.String, len int, strict bool) (f *funcO f.class = classFunction f.val = v f.extensible = true + f.strict = strict v.self = f f.prototype = r.global.FunctionPrototype f.init(name, len) - if strict { - f._put("caller", r.global.throwerProperty) - f._put("arguments", r.global.throwerProperty) + return +} + +func (r *Runtime) newArrowFunc(name unistring.String, len int, strict bool) (f *arrowFuncObject) { + v := &Object{runtime: r} + + f = &arrowFuncObject{} + f.class = classFunction + f.val = v + f.extensible = true + f.strict = strict + + vm := r.vm + var this Value + if vm.sb >= 0 { + this = vm.stack[vm.sb] + } else { + this = vm.r.globalObject } + + f.this = this + f.newTarget = vm.newTarget + v.self = f + f.prototype = r.global.FunctionPrototype + f.init(name, len) return } @@ -764,15 +791,30 @@ func (r *Runtime) throw(e Value) { panic(e) } -func (r *Runtime) builtin_thrower(FunctionCall) Value { - r.typeErrorResult(true, "'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them") +func (r *Runtime) builtin_thrower(call FunctionCall) Value { + obj := r.toObject(call.This) + strict := true + switch fn := obj.self.(type) { + case *funcObject: + strict = fn.strict + } + r.typeErrorResult(strict, "'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them") return nil } func (r *Runtime) eval(srcVal valueString, direct, strict bool, this Value) Value { src := escapeInvalidUtf16(srcVal) vm := r.vm - p, err := r.compile("", src, strict, true, !direct || vm.stash == &r.global.stash) + inGlobal := true + if direct { + for s := vm.stash; s != nil; s = s.outer { + if s.variable { + inGlobal = false + break + } + } + } + p, err := r.compile("", src, strict, true, inGlobal) if err != nil { panic(err) } @@ -1060,6 +1102,18 @@ func toIntStrict(i int64) int { return int(i) } +func toIntClamp(i int64) int { + if bits.UintSize == 32 { + if i > math.MaxInt32 { + return math.MaxInt32 + } + if i < math.MinInt32 { + return math.MinInt32 + } + } + return int(i) +} + func (r *Runtime) toIndex(v Value) int { intIdx := v.ToInteger() if intIdx >= 0 && intIdx < maxInt { @@ -2444,9 +2498,214 @@ func (r *Runtime) setGlobal(name unistring.String, v Value, strict bool) { } } -func strPropToInt(s unistring.String) (int, bool) { - if res, err := strconv.Atoi(string(s)); err == nil { - return res, true +func strToArrayIdx(s unistring.String) uint32 { + if s == "" { + return math.MaxUint32 + } + l := len(s) + if s[0] == '0' { + if l == 1 { + return 0 + } + return math.MaxUint32 + } + var n uint32 + if l < 10 { + // guaranteed not to overflow + for i := 0; i < len(s); i++ { + c := s[i] + if c < '0' || c > '9' { + return math.MaxUint32 + } + n = n*10 + uint32(c-'0') + } + return n + } + if l > 10 { + // guaranteed to overflow + return math.MaxUint32 + } + c9 := s[9] + if c9 < '0' || c9 > '9' { + return math.MaxUint32 + } + for i := 0; i < 9; i++ { + c := s[i] + if c < '0' || c > '9' { + return math.MaxUint32 + } + n = n*10 + uint32(c-'0') + } + if n >= math.MaxUint32/10+1 { + return math.MaxUint32 + } + n *= 10 + n1 := n + uint32(c9-'0') + if n1 < n { + return math.MaxUint32 + } + + return n1 +} + +func strToInt32(s unistring.String) (int32, bool) { + if s == "" { + return -1, false + } + neg := s[0] == '-' + if neg { + s = s[1:] + } + l := len(s) + if s[0] == '0' { + if l == 1 { + return 0, !neg + } + return -1, false + } + var n uint32 + if l < 10 { + // guaranteed not to overflow + for i := 0; i < len(s); i++ { + c := s[i] + if c < '0' || c > '9' { + return -1, false + } + n = n*10 + uint32(c-'0') + } + } else if l > 10 { + // guaranteed to overflow + return -1, false + } else { + c9 := s[9] + if c9 >= '0' { + if !neg && c9 > '7' || c9 > '8' { + // guaranteed to overflow + return -1, false + } + for i := 0; i < 9; i++ { + c := s[i] + if c < '0' || c > '9' { + return -1, false + } + n = n*10 + uint32(c-'0') + } + if n >= math.MaxInt32/10+1 { + // valid number, but it overflows integer + return 0, false + } + n = n*10 + uint32(c9-'0') + } else { + return -1, false + } + } + if neg { + return int32(-n), true + } + return int32(n), true +} + +func strToInt64(s unistring.String) (int64, bool) { + if s == "" { + return -1, false + } + neg := s[0] == '-' + if neg { + s = s[1:] + } + l := len(s) + if s[0] == '0' { + if l == 1 { + return 0, !neg + } + return -1, false + } + var n uint64 + if l < 19 { + // guaranteed not to overflow + for i := 0; i < len(s); i++ { + c := s[i] + if c < '0' || c > '9' { + return -1, false + } + n = n*10 + uint64(c-'0') + } + } else if l > 19 { + // guaranteed to overflow + return -1, false + } else { + c18 := s[18] + if c18 >= '0' { + if !neg && c18 > '7' || c18 > '8' { + // guaranteed to overflow + return -1, false + } + for i := 0; i < 18; i++ { + c := s[i] + if c < '0' || c > '9' { + return -1, false + } + n = n*10 + uint64(c-'0') + } + if n >= math.MaxInt64/10+1 { + // valid number, but it overflows integer + return 0, false + } + n = n*10 + uint64(c18-'0') + } else { + return -1, false + } + } + if neg { + return int64(-n), true + } + return int64(n), true +} + +func strToInt(s unistring.String) (int, bool) { + if bits.UintSize == 32 { + n, ok := strToInt32(s) + return int(n), ok + } + n, ok := strToInt64(s) + return int(n), ok +} + +// Attempts to convert a string into a canonical integer. +// On success returns (number, true). +// If it was a canonical number, but not an integer returns (0, false). This includes -0 and overflows. +// In all other cases returns (-1, false). +// See https://262.ecma-international.org/#sec-canonicalnumericindexstring +func strToIntNum(s unistring.String) (int, bool) { + n, ok := strToInt64(s) + if n == 0 { + return 0, ok + } + if ok && n >= -maxInt && n <= maxInt { + if bits.UintSize == 32 { + if n > math.MaxInt32 || n < math.MinInt32 { + return 0, false + } + } + return int(n), true + } + str := stringValueFromRaw(s) + if str.ToNumber().toString().SameAs(str) { + return 0, false + } + return -1, false +} + +func strToGoIdx(s unistring.String) int { + if n, ok := strToInt(s); ok { + return n + } + return -1 +} + +func strToIdx64(s unistring.String) int64 { + if n, ok := strToInt64(s); ok { + return n } - return 0, false + return -1 } diff --git a/vendor/github.com/dop251/goja/string_ascii.go b/vendor/github.com/dop251/goja/string_ascii.go index b265da33c5b..26231f57968 100644 --- a/vendor/github.com/dop251/goja/string_ascii.go +++ b/vendor/github.com/dop251/goja/string_ascii.go @@ -49,7 +49,7 @@ func (s asciiString) utf16Runes() []rune { } // ss must be trimmed -func strToInt(ss string) (int64, error) { +func stringToInt(ss string) (int64, error) { if ss == "" { return 0, nil } @@ -70,7 +70,7 @@ func strToInt(ss string) (int64, error) { } func (s asciiString) _toInt() (int64, error) { - return strToInt(strings.TrimSpace(string(s))) + return stringToInt(strings.TrimSpace(string(s))) } func isRangeErr(err error) bool { diff --git a/vendor/github.com/dop251/goja/token/token_const.go b/vendor/github.com/dop251/goja/token/token_const.go index bf6e26a7464..e90636aa4e8 100644 --- a/vendor/github.com/dop251/goja/token/token_const.go +++ b/vendor/github.com/dop251/goja/token/token_const.go @@ -71,6 +71,8 @@ const ( SEMICOLON // ; COLON // : QUESTION_MARK // ? + ARROW // => + ELLIPSIS // ... firstKeyword IF @@ -170,6 +172,8 @@ var token2string = [...]string{ SEMICOLON: ";", COLON: ":", QUESTION_MARK: "?", + ARROW: "=>", + ELLIPSIS: "...", IF: "if", IN: "in", OF: "of", diff --git a/vendor/github.com/dop251/goja/typedarrays.go b/vendor/github.com/dop251/goja/typedarrays.go index 7a2e30d8ec5..6326072681a 100644 --- a/vendor/github.com/dop251/goja/typedarrays.go +++ b/vendor/github.com/dop251/goja/typedarrays.go @@ -448,94 +448,100 @@ func (a *float64Array) typeMatch(v Value) bool { } func (a *typedArrayObject) _getIdx(idx int) Value { - a.viewedArrayBuf.ensureNotDetached() if 0 <= idx && idx < a.length { + if !a.viewedArrayBuf.ensureNotDetached(false) { + return nil + } return a.typedArray.get(idx + a.offset) } return nil } func (a *typedArrayObject) getOwnPropStr(name unistring.String) Value { - if idx, ok := strPropToInt(name); ok { + idx, ok := strToIntNum(name) + if ok { v := a._getIdx(idx) if v != nil { return &valueProperty{ - value: v, - writable: true, - enumerable: true, + value: v, + writable: true, + enumerable: true, + configurable: true, } } return nil } + if idx == 0 { + return nil + } return a.baseObject.getOwnPropStr(name) } func (a *typedArrayObject) getOwnPropIdx(idx valueInt) Value { - v := a._getIdx(toIntStrict(int64(idx))) + v := a._getIdx(toIntClamp(int64(idx))) if v != nil { return &valueProperty{ - value: v, - writable: true, - enumerable: true, + value: v, + writable: true, + enumerable: true, + configurable: true, } } return nil } func (a *typedArrayObject) getStr(name unistring.String, receiver Value) Value { - if idx, ok := strPropToInt(name); ok { - prop := a._getIdx(idx) - if prop == nil { - if a.prototype != nil { - if receiver == nil { - return a.prototype.self.getStr(name, a.val) - } - return a.prototype.self.getStr(name, receiver) - } - } - return prop + idx, ok := strToIntNum(name) + if ok { + return a._getIdx(idx) + } + if idx == 0 { + return nil } return a.baseObject.getStr(name, receiver) } func (a *typedArrayObject) getIdx(idx valueInt, receiver Value) Value { - prop := a._getIdx(toIntStrict(int64(idx))) - if prop == nil { - if a.prototype != nil { - if receiver == nil { - return a.prototype.self.getIdx(idx, a.val) - } - return a.prototype.self.getIdx(idx, receiver) + return a._getIdx(toIntClamp(int64(idx))) +} + +func (a *typedArrayObject) isValidIntegerIndex(idx int, throw bool) bool { + if a.viewedArrayBuf.ensureNotDetached(throw) { + if idx >= 0 && idx < a.length { + return true } + a.val.runtime.typeErrorResult(throw, "Invalid typed array index") } - return prop + return false } -func (a *typedArrayObject) _putIdx(idx int, v Value, throw bool) bool { +func (a *typedArrayObject) _putIdx(idx int, v Value) { v = v.ToNumber() - a.viewedArrayBuf.ensureNotDetached() - if idx >= 0 && idx < a.length { + if a.isValidIntegerIndex(idx, false) { a.typedArray.set(idx+a.offset, v) - return true } - // As far as I understand the specification this should throw, but neither V8 nor SpiderMonkey does - return false } func (a *typedArrayObject) _hasIdx(idx int) bool { - a.viewedArrayBuf.ensureNotDetached() - return idx >= 0 && idx < a.length + return a.isValidIntegerIndex(idx, false) } func (a *typedArrayObject) setOwnStr(p unistring.String, v Value, throw bool) bool { - if idx, ok := strPropToInt(p); ok { - return a._putIdx(idx, v, throw) + idx, ok := strToIntNum(p) + if ok { + a._putIdx(idx, v) + return true + } + if idx == 0 { + v.ToNumber() // make sure it throws + return false } return a.baseObject.setOwnStr(p, v, throw) } func (a *typedArrayObject) setOwnIdx(p valueInt, v Value, throw bool) bool { - return a._putIdx(toIntStrict(int64(p)), v, throw) + a._putIdx(toIntClamp(int64(p)), v) + return true } func (a *typedArrayObject) setForeignStr(p unistring.String, v, receiver Value, throw bool) (res bool, handled bool) { @@ -547,50 +553,72 @@ func (a *typedArrayObject) setForeignIdx(p valueInt, v, receiver Value, throw bo } func (a *typedArrayObject) hasOwnPropertyStr(name unistring.String) bool { - if idx, ok := strPropToInt(name); ok { - a.viewedArrayBuf.ensureNotDetached() - return idx < a.length + idx, ok := strToIntNum(name) + if ok { + return a._hasIdx(idx) + } + if idx == 0 { + return false } - return a.baseObject.hasOwnPropertyStr(name) } func (a *typedArrayObject) hasOwnPropertyIdx(idx valueInt) bool { - return a._hasIdx(toIntStrict(int64(idx))) + return a._hasIdx(toIntClamp(int64(idx))) } func (a *typedArrayObject) _defineIdxProperty(idx int, desc PropertyDescriptor, throw bool) bool { - prop, ok := a._defineOwnProperty(unistring.String(strconv.Itoa(idx)), a.getOwnPropIdx(valueInt(idx)), desc, throw) + if desc.Configurable == FLAG_FALSE || desc.Enumerable == FLAG_FALSE || desc.IsAccessor() || desc.Writable == FLAG_FALSE { + a.val.runtime.typeErrorResult(throw, "Cannot redefine property: %d", idx) + return false + } + _, ok := a._defineOwnProperty(unistring.String(strconv.Itoa(idx)), a.getOwnPropIdx(valueInt(idx)), desc, throw) if ok { - return a._putIdx(idx, prop, throw) + if !a.isValidIntegerIndex(idx, throw) { + return false + } + a._putIdx(idx, desc.Value) + return true } return ok } func (a *typedArrayObject) defineOwnPropertyStr(name unistring.String, desc PropertyDescriptor, throw bool) bool { - if idx, ok := strPropToInt(name); ok { + idx, ok := strToIntNum(name) + if ok { return a._defineIdxProperty(idx, desc, throw) } + if idx == 0 { + a.viewedArrayBuf.ensureNotDetached(throw) + a.val.runtime.typeErrorResult(throw, "Invalid typed array index") + return false + } return a.baseObject.defineOwnPropertyStr(name, desc, throw) } func (a *typedArrayObject) defineOwnPropertyIdx(name valueInt, desc PropertyDescriptor, throw bool) bool { - return a._defineIdxProperty(toIntStrict(int64(name)), desc, throw) + return a._defineIdxProperty(toIntClamp(int64(name)), desc, throw) } func (a *typedArrayObject) deleteStr(name unistring.String, throw bool) bool { - if idx, ok := strPropToInt(name); ok { - if idx < a.length { + idx, ok := strToIntNum(name) + if ok { + if !a.isValidIntegerIndex(idx, false) { a.val.runtime.typeErrorResult(throw, "Cannot delete property '%d' of %s", idx, a.val.String()) + return false } + return true + } + if idx == 0 { + return true } - return a.baseObject.deleteStr(name, throw) } func (a *typedArrayObject) deleteIdx(idx valueInt, throw bool) bool { - if idx >= 0 && int64(idx) < int64(a.length) { + if a.viewedArrayBuf.ensureNotDetached(throw) && idx >= 0 && int64(idx) < int64(a.length) { a.val.runtime.typeErrorResult(throw, "Cannot delete property '%d' of %s", idx, a.val.String()) + return false } return true @@ -688,7 +716,7 @@ func (r *Runtime) newFloat64ArrayObject(buf *arrayBufferObject, offset, length i func (o *dataViewObject) getIdxAndByteOrder(idxVal, littleEndianVal Value, size int) (int, byteOrder) { getIdx := o.val.runtime.toIndex(idxVal) - o.viewedArrayBuf.ensureNotDetached() + o.viewedArrayBuf.ensureNotDetached(true) if getIdx+size > o.byteLen { panic(o.val.runtime.newError(o.val.runtime.global.RangeError, "Index %d is out of bounds", getIdx)) } @@ -706,10 +734,12 @@ func (o *dataViewObject) getIdxAndByteOrder(idxVal, littleEndianVal Value, size return getIdx, bo } -func (o *arrayBufferObject) ensureNotDetached() { +func (o *arrayBufferObject) ensureNotDetached(throw bool) bool { if o.detached { - panic(o.val.runtime.NewTypeError("ArrayBuffer is detached")) + o.val.runtime.typeErrorResult(throw, "ArrayBuffer is detached") + return false } + return true } func (o *arrayBufferObject) getFloat32(idx int, byteOrder byteOrder) float32 { diff --git a/vendor/github.com/dop251/goja/value.go b/vendor/github.com/dop251/goja/value.go index dd492148da2..b4223303924 100644 --- a/vendor/github.com/dop251/goja/value.go +++ b/vendor/github.com/dop251/goja/value.go @@ -996,11 +996,17 @@ func (s *Symbol) ToString() Value { } func (s *Symbol) String() string { - return s.desc.String() + if s.desc != nil { + return s.desc.String() + } + return "" } func (s *Symbol) string() unistring.String { - return s.desc.string() + if s.desc != nil { + return s.desc.string() + } + return "" } func (s *Symbol) ToFloat() float64 { @@ -1078,10 +1084,26 @@ func NewSymbol(s string) *Symbol { } func (s *Symbol) descriptiveString() valueString { - if s.desc == nil { - return stringEmpty + desc := s.desc + if desc == nil { + desc = stringEmpty + } + return asciiString("Symbol(").concat(desc).concat(asciiString(")")) +} + +func funcName(prefix string, n Value) valueString { + var b valueStringBuilder + b.WriteString(asciiString(prefix)) + if sym, ok := n.(*Symbol); ok { + if sym.desc != nil { + b.WriteRune('[') + b.WriteString(sym.desc) + b.WriteRune(']') + } + } else { + b.WriteString(n.toString()) } - return asciiString("Symbol(").concat(s.desc).concat(asciiString(")")) + return b.String() } func init() { diff --git a/vendor/github.com/dop251/goja/vm.go b/vendor/github.com/dop251/goja/vm.go index 7f60df29427..43b6799d908 100644 --- a/vendor/github.com/dop251/goja/vm.go +++ b/vendor/github.com/dop251/goja/vm.go @@ -25,7 +25,9 @@ type stash struct { outer *stash - function bool + // true if this stash is a VariableEnvironment, i.e. dynamic var declarations created + // by direct eval go here. + variable bool } type context struct { @@ -90,10 +92,13 @@ func (r *stashRefLex) set(v Value) { type stashRefConst struct { stashRefLex + strictConst bool } func (r *stashRefConst) set(v Value) { - panic(errAssignToConst) + if r.strictConst { + panic(errAssignToConst) + } } type objRef struct { @@ -325,6 +330,7 @@ func (s *stash) getRefByName(name unistring.String, strict bool) ref { idx: int(idx &^ maskTyp), }, }, + strictConst: strict || (idx&maskStrict != 0), } } } else { @@ -360,7 +366,7 @@ func (s *stash) createLexBinding(name unistring.String, isConst bool) { if _, exists := s.names[name]; !exists { idx := uint32(len(s.names)) if isConst { - idx |= maskConst + idx |= maskConst | maskStrict } s.names[name] = idx s.values = append(s.values, nil) @@ -771,9 +777,10 @@ func (vm *vm) storeStack1Lex(s int) { func (vm *vm) initStack(s int) { if s <= 0 { - panic("Illegal stack var index") + vm.stack[vm.sb-s] = vm.stack[vm.sp-1] + } else { + vm.stack[vm.sb+vm.args+s] = vm.stack[vm.sp-1] } - vm.stack[vm.sb+vm.args+s] = vm.stack[vm.sp-1] vm.pc++ } @@ -1227,6 +1234,45 @@ func (j jump) exec(vm *vm) { vm.pc += int(j) } +type _toPropertyKey struct{} + +func (_toPropertyKey) exec(vm *vm) { + p := vm.sp - 1 + vm.stack[p] = toPropertyKey(vm.stack[p]) + vm.pc++ +} + +type _getElemRef struct{} + +var getElemRef _getElemRef + +func (_getElemRef) exec(vm *vm) { + obj := vm.stack[vm.sp-2].ToObject(vm.r) + propName := toPropertyKey(vm.stack[vm.sp-1]) + vm.refStack = append(vm.refStack, &objRef{ + base: obj.self, + name: propName.string(), + }) + vm.sp -= 2 + vm.pc++ +} + +type _getElemRefStrict struct{} + +var getElemRefStrict _getElemRefStrict + +func (_getElemRefStrict) exec(vm *vm) { + obj := vm.stack[vm.sp-2].ToObject(vm.r) + propName := toPropertyKey(vm.stack[vm.sp-1]) + vm.refStack = append(vm.refStack, &objRef{ + base: obj.self, + name: propName.string(), + strict: true, + }) + vm.sp -= 2 + vm.pc++ +} + type _setElem struct{} var setElem _setElem @@ -1243,6 +1289,39 @@ func (_setElem) exec(vm *vm) { vm.pc++ } +type _setElem1 struct{} + +var setElem1 _setElem1 + +func (_setElem1) exec(vm *vm) { + obj := vm.stack[vm.sp-3].ToObject(vm.r) + propName := vm.stack[vm.sp-2] + val := vm.stack[vm.sp-1] + + obj.setOwn(propName, val, true) + + vm.sp -= 2 + vm.pc++ +} + +type _setElem1Named struct{} + +var setElem1Named _setElem1Named + +func (_setElem1Named) exec(vm *vm) { + obj := vm.stack[vm.sp-3].ToObject(vm.r) + propName := vm.stack[vm.sp-2] + val := vm.stack[vm.sp-1] + vm.r.toObject(val).self.defineOwnPropertyStr("name", PropertyDescriptor{ + Value: funcName("", propName), + Configurable: FLAG_TRUE, + }, true) + obj.setOwn(propName, val, true) + + vm.sp -= 2 + vm.pc++ +} + type _setElemP struct{} var setElemP _setElemP @@ -1339,6 +1418,29 @@ func (d deletePropStrict) exec(vm *vm) { vm.pc++ } +type getPropRef unistring.String + +func (p getPropRef) exec(vm *vm) { + vm.refStack = append(vm.refStack, &objRef{ + base: vm.stack[vm.sp-1].ToObject(vm.r).self, + name: unistring.String(p), + }) + vm.sp-- + vm.pc++ +} + +type getPropRefStrict unistring.String + +func (p getPropRefStrict) exec(vm *vm) { + vm.refStack = append(vm.refStack, &objRef{ + base: vm.stack[vm.sp-1].ToObject(vm.r).self, + name: unistring.String(p), + strict: true, + }) + vm.sp-- + vm.pc++ +} + type setProp unistring.String func (p setProp) exec(vm *vm) { @@ -1407,6 +1509,10 @@ type setPropGetter unistring.String func (s setPropGetter) exec(vm *vm) { obj := vm.r.toObject(vm.stack[vm.sp-2]) val := vm.stack[vm.sp-1] + vm.r.toObject(val).self.defineOwnPropertyStr("name", PropertyDescriptor{ + Value: asciiString("get ").concat(stringValueFromRaw(unistring.String(s))), + Configurable: FLAG_TRUE, + }, true) descr := PropertyDescriptor{ Getter: val, @@ -1426,6 +1532,11 @@ func (s setPropSetter) exec(vm *vm) { obj := vm.r.toObject(vm.stack[vm.sp-2]) val := vm.stack[vm.sp-1] + vm.r.toObject(val).self.defineOwnPropertyStr("name", PropertyDescriptor{ + Value: asciiString("set ").concat(stringValueFromRaw(unistring.String(s))), + Configurable: FLAG_TRUE, + }, true) + descr := PropertyDescriptor{ Setter: val, Configurable: FLAG_TRUE, @@ -1438,6 +1549,57 @@ func (s setPropSetter) exec(vm *vm) { vm.pc++ } +type _setPropGetter1 struct{} + +var setPropGetter1 _setPropGetter1 + +func (s _setPropGetter1) exec(vm *vm) { + obj := vm.r.toObject(vm.stack[vm.sp-3]) + propName := vm.stack[vm.sp-2] + val := vm.stack[vm.sp-1] + vm.r.toObject(val).self.defineOwnPropertyStr("name", PropertyDescriptor{ + Value: funcName("get ", propName), + Configurable: FLAG_TRUE, + }, true) + + descr := PropertyDescriptor{ + Getter: val, + Configurable: FLAG_TRUE, + Enumerable: FLAG_TRUE, + } + + obj.defineOwnProperty(propName, descr, false) + + vm.sp -= 2 + vm.pc++ +} + +type _setPropSetter1 struct{} + +var setPropSetter1 _setPropSetter1 + +func (s _setPropSetter1) exec(vm *vm) { + obj := vm.r.toObject(vm.stack[vm.sp-3]) + propName := vm.stack[vm.sp-2] + val := vm.stack[vm.sp-1] + + vm.r.toObject(val).self.defineOwnPropertyStr("name", PropertyDescriptor{ + Value: funcName("set ", propName), + Configurable: FLAG_TRUE, + }, true) + + descr := PropertyDescriptor{ + Setter: val, + Configurable: FLAG_TRUE, + Enumerable: FLAG_TRUE, + } + + obj.defineOwnProperty(propName, descr, false) + + vm.sp -= 2 + vm.pc++ +} + type getProp unistring.String func (g getProp) exec(vm *vm) { @@ -1487,6 +1649,24 @@ func (_getElem) exec(vm *vm) { vm.pc++ } +type _getKey struct{} + +var getKey _getKey + +func (_getKey) exec(vm *vm) { + v := vm.stack[vm.sp-2] + obj := v.baseObject(vm.r) + propName := vm.stack[vm.sp-1] + if obj == nil { + panic(vm.r.NewTypeError("Cannot read property '%s' of undefined", propName.String())) + } + + vm.stack[vm.sp-2] = nilSafe(obj.get(propName, v)) + + vm.sp-- + vm.pc++ +} + type _getElemCallee struct{} var getElemCallee _getElemCallee @@ -1544,32 +1724,77 @@ func (_newObject) exec(vm *vm) { type newArray uint32 func (l newArray) exec(vm *vm) { - values := make([]Value, l) - if l > 0 { - copy(values, vm.stack[vm.sp-int(l):vm.sp]) - } - obj := vm.r.newArrayValues(values) - if l > 0 { - vm.sp -= int(l) - 1 - vm.stack[vm.sp-1] = obj + values := make([]Value, 0, l) + vm.push(vm.r.newArrayValues(values)) + vm.pc++ +} + +type _pushArrayItem struct{} + +var pushArrayItem _pushArrayItem + +func (_pushArrayItem) exec(vm *vm) { + arr := vm.stack[vm.sp-2].(*Object).self.(*arrayObject) + if arr.length < math.MaxUint32 { + arr.length++ } else { - vm.push(obj) + panic(vm.r.newError(vm.r.global.RangeError, "Invalid array length")) + } + val := vm.stack[vm.sp-1] + arr.values = append(arr.values, val) + if val != nil { + arr.objCount++ } + vm.sp-- vm.pc++ } -type newArraySparse struct { - l, objCount int +type _pushArraySpread struct{} + +var pushArraySpread _pushArraySpread + +func (_pushArraySpread) exec(vm *vm) { + arr := vm.stack[vm.sp-2].(*Object).self.(*arrayObject) + vm.r.iterate(vm.r.getIterator(vm.stack[vm.sp-1], nil), func(val Value) { + if arr.length < math.MaxUint32 { + arr.length++ + } else { + panic(vm.r.newError(vm.r.global.RangeError, "Invalid array length")) + } + arr.values = append(arr.values, val) + arr.objCount++ + }) + vm.sp-- + vm.pc++ +} + +type _pushSpread struct{} + +var pushSpread _pushSpread + +func (_pushSpread) exec(vm *vm) { + vm.sp-- + obj := vm.stack[vm.sp] + vm.r.iterate(vm.r.getIterator(obj, nil), func(val Value) { + vm.push(val) + }) + vm.pc++ } -func (n *newArraySparse) exec(vm *vm) { - values := make([]Value, n.l) - copy(values, vm.stack[vm.sp-int(n.l):vm.sp]) - arr := vm.r.newArrayObject() - setArrayValues(arr, values) - arr.objCount = n.objCount - vm.sp -= int(n.l) - 1 - vm.stack[vm.sp-1] = arr.val +type _newArrayFromIter struct{} + +var newArrayFromIter _newArrayFromIter + +func (_newArrayFromIter) exec(vm *vm) { + var values []Value + l := len(vm.iterStack) - 1 + iter := vm.iterStack[l].iter + vm.iterStack[l] = iterStackItem{} + vm.iterStack = vm.iterStack[:l] + vm.r.iterate(iter, func(val Value) { + values = append(values, val) + }) + vm.push(vm.r.newArrayValues(values)) vm.pc++ } @@ -2032,7 +2257,7 @@ func newStashRef(typ varType, name unistring.String, v *[]Value, idx int) ref { idx: idx, }, } - case varTypeConst: + case varTypeConst, varTypeStrictConst: return &stashRefConst{ stashRefLex: stashRefLex{ stashRef: stashRef{ @@ -2041,6 +2266,7 @@ func newStashRef(typ varType, name unistring.String, v *[]Value, idx int) ref { idx: idx, }, }, + strictConst: typ == varTypeStrictConst, } } panic("unsupported var type") @@ -2289,6 +2515,22 @@ func (numargs callEvalStrict) exec(vm *vm) { vm.callEval(int(numargs), true) } +type _callEvalVariadic struct{} + +var callEvalVariadic _callEvalVariadic + +func (_callEvalVariadic) exec(vm *vm) { + vm.callEval(vm.countVariadicArgs()-2, false) +} + +type _callEvalVariadicStrict struct{} + +var callEvalVariadicStrict _callEvalVariadicStrict + +func (_callEvalVariadicStrict) exec(vm *vm) { + vm.callEval(vm.countVariadicArgs()-2, true) +} + type _boxThis struct{} var boxThis _boxThis @@ -2303,6 +2545,46 @@ func (_boxThis) exec(vm *vm) { vm.pc++ } +var variadicMarker Value = newSymbol(asciiString("[variadic marker]")) + +type _startVariadic struct{} + +var startVariadic _startVariadic + +func (_startVariadic) exec(vm *vm) { + vm.push(variadicMarker) + vm.pc++ +} + +type _callVariadic struct{} + +var callVariadic _callVariadic + +func (vm *vm) countVariadicArgs() int { + count := 0 + for i := vm.sp - 1; i >= 0; i-- { + if vm.stack[i] == variadicMarker { + return count + } + count++ + } + panic("Variadic marker was not found. Compiler bug.") +} + +func (_callVariadic) exec(vm *vm) { + call(vm.countVariadicArgs() - 2).exec(vm) +} + +type _endVariadic struct{} + +var endVariadic _endVariadic + +func (_endVariadic) exec(vm *vm) { + vm.sp-- + vm.stack[vm.sp-1] = vm.stack[vm.sp] + vm.pc++ +} + type call uint32 func (numargs call) exec(vm *vm) { @@ -2325,6 +2607,16 @@ repeat: vm.pc = 0 vm.stack[vm.sp-n-1], vm.stack[vm.sp-n-2] = vm.stack[vm.sp-n-2], vm.stack[vm.sp-n-1] return + case *arrowFuncObject: + vm.pc++ + vm.pushCtx() + vm.args = n + vm.prg = f.prg + vm.stash = f.stash + vm.pc = 0 + vm.stack[vm.sp-n-1], vm.stack[vm.sp-n-2] = f.this, vm.stack[vm.sp-n-1] + vm.newTarget = f.newTarget + return case *nativeFuncObject: vm._nativeCall(f, n) case *boundFuncObject: @@ -2353,7 +2645,7 @@ func (vm *vm) _nativeCall(f *nativeFuncObject, n int) { if f.f != nil { vm.pushCtx() vm.prg = nil - vm.funcName = f.nameProp.get(nil).string() + vm.funcName = nilSafe(f.getStr("name", nil)).string() ret := f.f(FunctionCall{ Arguments: vm.stack[vm.sp-n : vm.sp], This: vm.stack[vm.sp-n-2], @@ -2470,7 +2762,7 @@ func (e *enterFunc) exec(vm *vm) { vm.sb = sp - vm.args - 1 vm.newStash() stash := vm.stash - stash.function = true + stash.variable = true stash.values = make([]Value, e.stashSize) if len(e.names) > 0 { if e.extensible { @@ -2522,6 +2814,98 @@ func (e *enterFunc) exec(vm *vm) { vm.pc++ } +// Similar to enterFunc, but for when arguments may be accessed before they are initialised, +// e.g. by an eval() code or from a closure, or from an earlier initialiser code. +// In this case the arguments remain on stack, first argsToCopy of them are copied to the stash. +type enterFunc1 struct { + names map[unistring.String]uint32 + stashSize uint32 + numArgs uint32 + argsToCopy uint32 + extensible bool +} + +func (e *enterFunc1) exec(vm *vm) { + sp := vm.sp + vm.sb = sp - vm.args - 1 + vm.newStash() + stash := vm.stash + stash.variable = true + stash.values = make([]Value, e.stashSize) + if len(e.names) > 0 { + if e.extensible { + m := make(map[unistring.String]uint32, len(e.names)) + for name, idx := range e.names { + m[name] = idx + } + stash.names = m + } else { + stash.names = e.names + } + } + offset := vm.args - int(e.argsToCopy) + if offset > 0 { + copy(stash.values, vm.stack[sp-vm.args:sp-offset]) + if offset := vm.args - int(e.numArgs); offset > 0 { + vm.stash.extraArgs = make([]Value, offset) + copy(stash.extraArgs, vm.stack[sp-offset:]) + } + } else { + copy(stash.values, vm.stack[sp-vm.args:sp]) + if int(e.argsToCopy) > vm.args { + vv := stash.values[vm.args:e.argsToCopy] + for i := range vv { + vv[i] = _undefined + } + } + } + + vm.pc++ +} + +// Finalises the initialisers section and starts the function body which has its own +// scope. When used in conjunction with enterFunc1 adjustStack is set to true which +// causes the arguments to be removed from the stack. +type enterFuncBody struct { + enterBlock + extensible bool + adjustStack bool +} + +func (e *enterFuncBody) exec(vm *vm) { + if e.stashSize > 0 || e.extensible { + vm.newStash() + stash := vm.stash + stash.variable = true + stash.values = make([]Value, e.stashSize) + if len(e.names) > 0 { + if e.extensible { + m := make(map[unistring.String]uint32, len(e.names)) + for name, idx := range e.names { + m[name] = idx + } + stash.names = m + } else { + stash.names = e.names + } + } + } + sp := vm.sp + if e.adjustStack { + sp -= vm.args + } + nsp := sp + int(e.stackSize) + if e.stackSize > 0 { + vm.stack.expand(nsp - 1) + vv := vm.stack[sp:nsp] + for i := range vv { + vv[i] = nil + } + } + vm.sp = nsp + vm.pc++ +} + type _ret struct{} var ret _ret @@ -2578,17 +2962,30 @@ func (e *enterFuncStashless) exec(vm *vm) { type newFunc struct { prg *Program name unistring.String + source string + length uint32 strict bool - - srcStart, srcEnd uint32 } func (n *newFunc) exec(vm *vm) { obj := vm.r.newFunc(n.name, int(n.length), n.strict) obj.prg = n.prg obj.stash = vm.stash - obj.src = n.prg.src.Source()[n.srcStart:n.srcEnd] + obj.src = n.source + vm.push(obj.val) + vm.pc++ +} + +type newArrowFunc struct { + newFunc +} + +func (n *newArrowFunc) exec(vm *vm) { + obj := vm.r.newArrowFunc(n.name, int(n.length), n.strict) + obj.prg = n.prg + obj.stash = vm.stash + obj.src = n.source vm.push(obj.val) vm.pc++ } @@ -2752,7 +3149,7 @@ func (d *bindVars) exec(vm *vm) { if idx, exists := s.names[name]; exists && idx&maskVar == 0 { panic(vm.alreadyDeclared(name)) } - if s.function { + if s.variable { target = s break } @@ -2834,6 +3231,28 @@ func (j jneq1) exec(vm *vm) { } } +type jdef int32 + +func (j jdef) exec(vm *vm) { + if vm.stack[vm.sp-1] != _undefined { + vm.pc += int(j) + } else { + vm.sp-- + vm.pc++ + } +} + +type jdefP int32 + +func (j jdefP) exec(vm *vm) { + if vm.stack[vm.sp-1] != _undefined { + vm.pc += int(j) + } else { + vm.pc++ + } + vm.sp-- +} + type _not struct{} var not _not @@ -3116,6 +3535,14 @@ func (_throw) exec(vm *vm) { panic(vm.stack[vm.sp-1]) } +type _newVariadic struct{} + +var newVariadic _newVariadic + +func (_newVariadic) exec(vm *vm) { + _new(vm.countVariadicArgs() - 1).exec(vm) +} + type _new uint32 func (n _new) exec(vm *vm) { @@ -3154,7 +3581,7 @@ func (_typeof) exec(vm *vm) { case *Object: repeat: switch s := v.self.(type) { - case *funcObject, *nativeFuncObject, *boundFuncObject: + case *funcObject, *nativeFuncObject, *boundFuncObject, *arrowFuncObject: r = stringFunction case *lazyObject: v.self = s.create(v) @@ -3177,9 +3604,9 @@ func (_typeof) exec(vm *vm) { vm.pc++ } -type createArgs uint32 +type createArgsMapped uint32 -func (formalArgs createArgs) exec(vm *vm) { +func (formalArgs createArgsMapped) exec(vm *vm) { v := &Object{runtime: vm.r} args := &argumentsObject{} args.extensible = true @@ -3216,9 +3643,9 @@ func (formalArgs createArgs) exec(vm *vm) { vm.pc++ } -type createArgsStrict uint32 +type createArgsUnmapped uint32 -func (formalArgs createArgsStrict) exec(vm *vm) { +func (formalArgs createArgsUnmapped) exec(vm *vm) { args := vm.r.newBaseObject(vm.r.global.ObjectPrototype, "Arguments") i := 0 c := int(formalArgs) @@ -3332,6 +3759,17 @@ func (_enumPopClose) exec(vm *vm) { vm.pc++ } +type _iterateP struct{} + +var iterateP _iterateP + +func (_iterateP) exec(vm *vm) { + iter := vm.r.getIterator(vm.stack[vm.sp-1], nil) + vm.iterStack = append(vm.iterStack, iterStackItem{iter: iter}) + vm.sp-- + vm.pc++ +} + type _iterate struct{} var iterate _iterate @@ -3339,7 +3777,6 @@ var iterate _iterate func (_iterate) exec(vm *vm) { iter := vm.r.getIterator(vm.stack[vm.sp-1], nil) vm.iterStack = append(vm.iterStack, iterStackItem{iter: iter}) - vm.sp-- vm.pc++ } @@ -3394,3 +3831,78 @@ var throwAssignToConst _throwAssignToConst func (_throwAssignToConst) exec(vm *vm) { panic(errAssignToConst) } + +func (r *Runtime) copyDataProperties(target, source Value) { + targetObj := r.toObject(target) + if source == _null || source == _undefined { + return + } + sourceObj := source.ToObject(r) + for _, key := range sourceObj.self.ownPropertyKeys(false, nil) { + v := nilSafe(sourceObj.get(key, nil)) + createDataPropertyOrThrow(targetObj, key, v) + } +} + +type _copySpread struct{} + +var copySpread _copySpread + +func (_copySpread) exec(vm *vm) { + vm.r.copyDataProperties(vm.stack[vm.sp-2], vm.stack[vm.sp-1]) + vm.sp-- + vm.pc++ +} + +type _copyRest struct{} + +var copyRest _copyRest + +func (_copyRest) exec(vm *vm) { + vm.push(vm.r.NewObject()) + vm.r.copyDataProperties(vm.stack[vm.sp-1], vm.stack[vm.sp-2]) + vm.pc++ +} + +type _createDestructSrc struct{} + +var createDestructSrc _createDestructSrc + +func (_createDestructSrc) exec(vm *vm) { + v := vm.stack[vm.sp-1] + vm.r.checkObjectCoercible(v) + vm.push(vm.r.newDestructKeyedSource(v)) + vm.pc++ +} + +type _checkObjectCoercible struct{} + +var checkObjectCoercible _checkObjectCoercible + +func (_checkObjectCoercible) exec(vm *vm) { + vm.r.checkObjectCoercible(vm.stack[vm.sp-1]) + vm.pc++ +} + +type createArgsRestStack int + +func (n createArgsRestStack) exec(vm *vm) { + var values []Value + delta := vm.args - int(n) + if delta > 0 { + values = make([]Value, delta) + copy(values, vm.stack[vm.sb+int(n)+1:]) + } + vm.push(vm.r.newArrayValues(values)) + vm.pc++ +} + +type _createArgsRestStash struct{} + +var createArgsRestStash _createArgsRestStash + +func (_createArgsRestStash) exec(vm *vm) { + vm.push(vm.r.newArrayValues(vm.stash.extraArgs)) + vm.stash.extraArgs = nil + vm.pc++ +} diff --git a/vendor/modules.txt b/vendor/modules.txt index f0a7f282039..64f94f02ca4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -20,7 +20,7 @@ github.com/davecgh/go-spew/spew # github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 github.com/dlclark/regexp2 github.com/dlclark/regexp2/syntax -# github.com/dop251/goja v0.0.0-20210712101704-705acef95ba3 +# github.com/dop251/goja v0.0.0-20210804101310-32956a348b49 ## explicit github.com/dop251/goja github.com/dop251/goja/ast From 1615a45d81cae784e9a29cdcdf62f26d000c1a3e Mon Sep 17 00:00:00 2001 From: Mihail Stoykov Date: Thu, 5 Aug 2021 17:25:25 +0300 Subject: [PATCH 2/3] Disable a lot of babel plugins that aren't necessary anymore --- js/compiler/compiler.go | 14 ++-- js/tc39/breaking_test_errors.json | 124 ++++++------------------------ 2 files changed, 30 insertions(+), 108 deletions(-) diff --git a/js/compiler/compiler.go b/js/compiler/compiler.go index a8cb555ef0e..98211384b20 100644 --- a/js/compiler/compiler.go +++ b/js/compiler/compiler.go @@ -43,21 +43,21 @@ var ( // es2015 https://github.com/babel/babel/blob/v6.26.0/packages/babel-preset-es2015/src/index.js []interface{}{"transform-es2015-template-literals", map[string]interface{}{"loose": false, "spec": false}}, "transform-es2015-literals", - "transform-es2015-function-name", - []interface{}{"transform-es2015-arrow-functions", map[string]interface{}{"spec": false}}, + // "transform-es2015-function-name", // in goja + // []interface{}{"transform-es2015-arrow-functions", map[string]interface{}{"spec": false}}, // in goja // "transform-es2015-block-scoped-functions", // in goja []interface{}{"transform-es2015-classes", map[string]interface{}{"loose": false}}, "transform-es2015-object-super", // "transform-es2015-shorthand-properties", // in goja - "transform-es2015-duplicate-keys", - []interface{}{"transform-es2015-computed-properties", map[string]interface{}{"loose": false}}, + // "transform-es2015-duplicate-keys", // in goja + // []interface{}{"transform-es2015-computed-properties", map[string]interface{}{"loose": false}}, // in goja // "transform-es2015-for-of", // in goja // "transform-es2015-sticky-regex", // in goja // "transform-es2015-unicode-regex", // in goja // "check-es2015-constants", // in goja - []interface{}{"transform-es2015-spread", map[string]interface{}{"loose": false}}, - "transform-es2015-parameters", - []interface{}{"transform-es2015-destructuring", map[string]interface{}{"loose": false}}, + // []interface{}{"transform-es2015-spread", map[string]interface{}{"loose": false}}, // in goja + // "transform-es2015-parameters", // in goja + // []interface{}{"transform-es2015-destructuring", map[string]interface{}{"loose": false}}, // in goja // "transform-es2015-block-scoping", // in goja // "transform-es2015-typeof-symbol", // in goja // all the other module plugins are just dropped diff --git a/js/tc39/breaking_test_errors.json b/js/tc39/breaking_test_errors.json index f5af7754590..71c9fa5fbef 100644 --- a/js/tc39/breaking_test_errors.json +++ b/js/tc39/breaking_test_errors.json @@ -44,10 +44,10 @@ "test/built-ins/Function/prototype/toString/class-declaration-implicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-declaration-implicit-ctor.js: Test262Error: Conforms to NativeFunction Syntax: \"function A() {_classCallCheck(this, A);}\" (class /* a */ A /* b */ { /* c */ }) ", "test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js: SyntaxError: test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js: missing super() call in constructor\n 9 | ---*/\n 10 | \n> 11 | let A = /* before */class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }/* after */;\n | ^\n 12 | \n 13 | assertToStringOrNativeFunction(A, \"class /* a */ A /* b */ extends /* c */ B /* d */ { /* e */ constructor /* f */ ( /* g */ ) /* h */ { /* i */ ; /* j */ } /* k */ m /* l */ ( /* m */ ) /* n */ { /* o */ } /* p */ }\");\n 14 | ", "test/built-ins/Function/prototype/toString/class-expression-implicit-ctor.js-strict:true": "test/built-ins/Function/prototype/toString/class-expression-implicit-ctor.js: Test262Error: Conforms to NativeFunction Syntax: \"function A() {_classCallCheck(this, A);}\" (class /* a */ A /* b */ { /* c */ }) ", - "test/built-ins/Function/prototype/toString/getter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", - "test/built-ins/Function/prototype/toString/getter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", - "test/built-ins/Function/prototype/toString/getter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", - "test/built-ins/Function/prototype/toString/getter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function get() /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", + "test/built-ins/Function/prototype/toString/getter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function () /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", + "test/built-ins/Function/prototype/toString/getter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function () /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", + "test/built-ins/Function/prototype/toString/getter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function () /* before */ /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", + "test/built-ins/Function/prototype/toString/getter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/getter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function () /* a */ /* b */ /* c */ /* d */{}\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/getter-object.js-strict:true": "test/built-ins/Function/prototype/toString/getter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"\" (get /* a */ f /* b */ ( /* c */ ) /* d */ { /* e */ }) ", "test/built-ins/Function/prototype/toString/method-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* before */ /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", "test/built-ins/Function/prototype/toString/method-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/method-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function f() /* a */ /* b */ /* c */{}\" (f /* a */ ( /* b */ ) /* c */ { /* d */ }) ", @@ -65,10 +65,10 @@ "test/built-ins/Function/prototype/toString/proxy-function-expression.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-function-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [function() {}] }\" ", "test/built-ins/Function/prototype/toString/proxy-method-definition.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-method-definition.js: Test262Error: Conforms to NativeFunction Syntax: \"function proxy() { [] }\" ", "test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js-strict:true": "test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", - "test/built-ins/Function/prototype/toString/setter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", - "test/built-ins/Function/prototype/toString/setter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", - "test/built-ins/Function/prototype/toString/setter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", - "test/built-ins/Function/prototype/toString/setter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function set( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/setter-class-expression-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function ( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/setter-class-expression.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-expression.js: Test262Error: Conforms to NativeFunction Syntax: \"function ( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/setter-class-statement-static.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement-static.js: Test262Error: Conforms to NativeFunction Syntax: \"function ( /* before */ /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", + "test/built-ins/Function/prototype/toString/setter-class-statement.js-strict:true": "test/built-ins/Function/prototype/toString/setter-class-statement.js: Test262Error: Conforms to NativeFunction Syntax: \"function ( /* a */ /* b */ /* c */a /* d */) /* e */{}\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/setter-object.js-strict:true": "test/built-ins/Function/prototype/toString/setter-object.js: Test262Error: Conforms to NativeFunction Syntax: \"\" (set /* a */ f /* b */ ( /* c */ a /* d */ ) /* e */ { /* f */ }) ", "test/built-ins/Function/prototype/toString/unicode.js-strict:true": "test/built-ins/Function/prototype/toString/unicode.js: Test262Error: Conforms to NativeFunction Syntax: \"function a(b, c) {b = c;return b;}\" (function \\u0061(\\u{62}, \\u0063) { \\u0062 = \\u{00063}; return b; }) ", "test/built-ins/JSON/parse/reviver-array-get-prop-from-prototype.js-strict:true": "test/built-ins/JSON/parse/reviver-array-get-prop-from-prototype.js: Test262Error: Expected SameValue(«2», «3») to be true ", @@ -384,8 +384,8 @@ "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | function * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | function * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:9 Unexpected token * (and 9 more errors)", - "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:9 Unexpected token * (and 9 more errors)", + "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:9 Unexpected token * (and 6 more errors)", + "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:9 Unexpected token * (and 6 more errors)", "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:58)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:48)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:21)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", @@ -396,8 +396,8 @@ "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 10 more errors)", - "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 10 more errors)", + "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 1 more errors)", + "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 1 more errors)", "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:57)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:47)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", "test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:20)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let f = function * (arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }\n 17 | assert.throws(SyntaxError, f); ", @@ -408,8 +408,8 @@ "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let f = function * (p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }\n 17 | assert.throws(SyntaxError, f);\n 18 | ", "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * (p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let f = function * (p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }\n 16 | assert.throws(SyntaxError, f);\n 17 | ", - "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 10 more errors)", - "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 10 more errors)", + "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:17 Unexpected token * (and 6 more errors)", + "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:17 Unexpected token * (and 6 more errors)", "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:51)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(p = eval(\"var arguments = 'param'\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js: arguments is a reserved word in strict mode (14:41)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(p = eval(\"var arguments\"), arguments) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", "test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:14)\n 12 | assert.sameValue(\"arguments\" in this, false, \"No global 'arguments' binding\");\n 13 | \n> 14 | let o = { * f(arguments, p = eval(\"var arguments = 'param'\")) {\n | ^\n 15 | \n 16 | }};\n 17 | assert.throws(SyntaxError, o.f); ", @@ -420,8 +420,8 @@ "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js: arguments is a reserved word in strict mode (15:6)\n 13 | \n 14 | let o = { * f(p = eval(\"var arguments\")) {\n> 15 | let arguments;\n | ^\n 16 | }};\n 17 | assert.throws(SyntaxError, o.f);\n 18 | ", "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { * f(p = eval(\"var arguments = 'param'\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: SyntaxError: test/language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js: arguments is a reserved word in strict mode (14:6)\n 12 | \n 13 | let o = { * f(p = eval(\"var arguments\")) {\n> 14 | var arguments;\n | ^\n 15 | }};\n 16 | assert.throws(SyntaxError, o.f);\n 17 | ", - "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:12 Unexpected identifier (and 15 more errors)", - "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:12 Unexpected identifier (and 15 more errors)", + "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js: Line 13:12 Unexpected identifier (and 2 more errors)", + "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js-strict:false": "test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: test/language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js: Line 13:12 Unexpected identifier (and 2 more errors)", "test/language/eval-code/direct/lex-env-distinct-cls.js-strict:true": "test/language/eval-code/direct/lex-env-distinct-cls.js: SyntaxError: SyntaxError: : Line 1:1 Unexpected reserved word ", "test/language/eval-code/direct/lex-env-no-init-cls.js-strict:true": "test/language/eval-code/direct/lex-env-no-init-cls.js: Test262Error: Expected a ReferenceError but got a SyntaxError ", "test/language/eval-code/direct/new.target-fn.js-strict:true": "test/language/eval-code/direct/new.target-fn.js: SyntaxError: SyntaxError: : Line 1:1 new.target expression is not allowed here ", @@ -432,8 +432,8 @@ "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/arrow-function/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js-strict:true": "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: Line 36:231 Unexpected token ( (and 4 more errors)", - "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js-strict:true": "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: Line 30:122 Unexpected token ( (and 7 more errors)", + "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js-strict:true": "test/language/expressions/arrow-function/lexical-super-call-from-within-constructor.js: Test262Error: Expected a ReferenceError to be thrown but no exception was thrown at all ", + "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js-strict:true": "test/language/expressions/arrow-function/lexical-supercall-from-immediately-invoked-arrow.js: ReferenceError: _this is not defined ", "test/language/expressions/assignment/S11.13.1_A7_T1.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T1.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/assignment/S11.13.1_A7_T2.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T2.js: Test262Error: Expected a TypeError but got a Test262Error ", "test/language/expressions/assignment/S11.13.1_A7_T3.js-strict:true": "test/language/expressions/assignment/S11.13.1_A7_T3.js: Test262Error: Expected a DummyError but got a Test262Error ", @@ -450,30 +450,22 @@ "test/language/expressions/assignment/target-assignment-inside-function.js-strict:true": "test/language/expressions/assignment/target-assignment-inside-function.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignment/target-assignment.js-strict:true": "test/language/expressions/assignment/target-assignment.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js-strict:true": "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-0.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js-strict:true": "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-1.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js-strict:true": "test/language/expressions/assignmenttargettype/direct-lefthandsideexpression-assignment-assignmentexpression-2.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js-strict:true": "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-0.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js-strict:true": "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-1.js: error is not an object (Test262: This statement should not be evaluated.)", - "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js-strict:true": "test/language/expressions/assignmenttargettype/parenthesized-lefthandsideexpression-assignment-assignmentexpression-2.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/expressions/await/await-BindingIdentifier-in-global.js-strict:true": "test/language/expressions/await/await-BindingIdentifier-in-global.js: SyntaxError: test/language/expressions/await/await-BindingIdentifier-in-global.js: await is a reserved word (12:15)\n 10 | ---*/\n 11 | \n> 12 | async function await() { return 1 }\n | ^\n 13 | assert(await instanceof Function);\n 14 | \n 15 | ", "test/language/expressions/await/await-in-nested-function.js-strict:true": "test/language/expressions/await/await-in-nested-function.js: SyntaxError: test/language/expressions/await/await-in-nested-function.js: await is a reserved word (12:4)\n 10 | ---*/\n 11 | \n> 12 | var await;\n | ^\n 13 | async function foo() {\n 14 | function bar() {\n 15 | await = 1; ", "test/language/expressions/await/await-throws-rejections.js-strict:true": "test/language/expressions/await/await-throws-rejections.js: test/language/expressions/await/await-throws-rejections.js: Line 12:7 Unexpected token function (and 7 more errors)", "test/language/expressions/class/class-name-ident-await-escaped.js-strict:true": "test/language/expressions/class/class-name-ident-await-escaped.js: SyntaxError: test/language/expressions/class/class-name-ident-await-escaped.js: await is a reserved word (18:14)\n 16 | ---*/\n 17 | \n> 18 | var C = class aw\\u0061it {};\n | ^\n 19 | ", "test/language/expressions/class/class-name-ident-await.js-strict:true": "test/language/expressions/class/class-name-ident-await.js: SyntaxError: test/language/expressions/class/class-name-ident-await.js: await is a reserved word (17:14)\n 15 | ---*/\n 16 | \n> 17 | var C = class await {};\n | ^\n 18 | ", "test/language/expressions/class/constructor-this-tdz-during-initializers.js-strict:true": "test/language/expressions/class/constructor-this-tdz-during-initializers.js: SyntaxError: test/language/expressions/class/constructor-this-tdz-during-initializers.js: Unexpected token (31:8)\n 29 | \n 30 | var C = class extends Base {\n> 31 | field = (thisDuringField = this, thisFromProbe = probeCtorThis());\n | ^\n 32 | constructor() {\n 33 | probeCtorThis = () => this;\n 34 | assert.throws(ReferenceError, probeCtorThis); ", - "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-arrow-function-expression.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-arrow-function-expression.js: Test262Error: Expected SameValue(«undefined», «1») to be true ", "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-coalesce.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-coalesce.js: SyntaxError: test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-coalesce.js: Unexpected token (41:10)\n 39 | \n 40 | let C = class {\n> 41 | get [x ??= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-and.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-and.js: SyntaxError: test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-and.js: Unexpected token (41:11)\n 39 | \n 40 | let C = class {\n> 41 | get [x &&= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-or.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-or.js: SyntaxError: test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-assignment-expression-logical-or.js: Unexpected token (41:11)\n 39 | \n 40 | let C = class {\n> 41 | get [x ||= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-expression-coalesce.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-expression-coalesce.js: SyntaxError: test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-expression-coalesce.js: Unexpected token (41:10)\n 39 | \n 40 | let C = class {\n> 41 | get [x ?? 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", - "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-function-expression.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-function-expression.js: Test262Error: Expected SameValue(«undefined», «1») to be true ", "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-integer-separators.js-strict:true": "test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-integer-separators.js: SyntaxError: test/language/expressions/class/cpn-class-expr-accessors-computed-property-name-from-integer-separators.js: Identifier directly after number (40:8)\n 38 | \n 39 | let C = class {\n> 40 | get [1_2_3_4_5_6_7_8]() {\n | ^\n 41 | return 1_2_3_4_5_6_7_8;\n 42 | }\n 43 | ", - "test/language/expressions/class/cpn-class-expr-computed-property-name-from-arrow-function-expression.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-arrow-function-expression.js: TypeError: Object has no member 'function () {}' ", "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-coalesce.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-coalesce.js: SyntaxError: test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-coalesce.js: Unexpected token (41:6)\n 39 | \n 40 | let C = class {\n> 41 | [x ??= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ??= 1]() { ", "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-and.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-and.js: SyntaxError: test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-and.js: Unexpected token (41:7)\n 39 | \n 40 | let C = class {\n> 41 | [x &&= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x &&= 1]() { ", "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-or.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-or.js: SyntaxError: test/language/expressions/class/cpn-class-expr-computed-property-name-from-assignment-expression-logical-or.js: Unexpected token (41:7)\n 39 | \n 40 | let C = class {\n> 41 | [x ||= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ||= 1]() { ", "test/language/expressions/class/cpn-class-expr-computed-property-name-from-expression-coalesce.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-expression-coalesce.js: SyntaxError: test/language/expressions/class/cpn-class-expr-computed-property-name-from-expression-coalesce.js: Unexpected token (41:6)\n 39 | \n 40 | let C = class {\n> 41 | [x ?? 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ?? 1]() { ", - "test/language/expressions/class/cpn-class-expr-computed-property-name-from-function-expression.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-function-expression.js: TypeError: Object has no member 'function () {}' ", "test/language/expressions/class/cpn-class-expr-computed-property-name-from-integer-separators.js-strict:true": "test/language/expressions/class/cpn-class-expr-computed-property-name-from-integer-separators.js: SyntaxError: test/language/expressions/class/cpn-class-expr-computed-property-name-from-integer-separators.js: Identifier directly after number (40:4)\n 38 | \n 39 | let C = class {\n> 40 | [1_2_3_4_5_6_7_8]() {\n | ^\n 41 | return 1_2_3_4_5_6_7_8;\n 42 | }\n 43 | static [1_2_3_4_5_6_7_8]() { ", "test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-add.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-add.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-add.js: Unexpected token (40:10)\n 38 | \n 39 | let C = class {\n> 40 | [1 + 1] = 2;\n | ^\n 41 | \n 42 | static [1 + 1] = 2;\n 43 | }; ", "test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-subtract.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-subtract.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-computed-property-name-from-additive-expression-subtract.js: Unexpected token (40:10)\n 38 | \n 39 | let C = class {\n> 40 | [1 - 1] = 0;\n | ^\n 41 | \n 42 | static [1 - 1] = 0;\n 43 | }; ", @@ -529,67 +521,39 @@ "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-null.js: Unexpected token (40:9)\n 38 | \n 39 | let C = class {\n> 40 | [null] = () => {\n | ^\n 41 | return null;\n 42 | };\n 43 | ", "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-numeric-literal.js: Unexpected token (40:6)\n 38 | \n 39 | let C = class {\n> 40 | [1] = () => {\n | ^\n 41 | return 2;\n 42 | };\n 43 | ", "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js-strict:true": "test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js: SyntaxError: test/language/expressions/class/cpn-class-expr-fields-methods-computed-property-name-from-string-literal.js: Unexpected token (40:8)\n 38 | \n 39 | let C = class {\n> 40 | ['1'] = () => {\n | ^\n 41 | return '2';\n 42 | };\n 43 | ", - "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-elem.js: Unexpected token (97:13)\n 95 | var callCount = 0;\n 96 | var C = class {\n> 97 | method([...[x, y, z]]) {\n | ^\n 98 | assert.sameValue(x, 3);\n 99 | assert.sameValue(y, 4);\n 100 | assert.sameValue(z, 5); ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-ary-rest.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...[...x]]) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | method([...{ length }]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (97:13)\n 95 | var callCount = 0;\n 96 | var C = class {\n> 97 | method([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 98 | assert.sameValue(x, 3);\n 99 | assert.sameValue(y, 4);\n 100 | assert.sameValue(z, 5); ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...[...x]] = values) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | method([...{ length }] = [1, 2, 3]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:13)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-getter.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | var C = class {\n> 66 | method({...x} = { get v() { count++; return 2; } }) {\n | ^\n 67 | assert.sameValue(count, 1);\n 68 | \n 69 | verifyProperty(x, \"v\", { ", "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (67:10)\n 65 | var callCount = 0;\n 66 | var C = class {\n> 67 | method({...rest} = o) {\n | ^\n 68 | assert.sameValue(rest.x, undefined);\n 69 | \n 70 | verifyProperty(rest, \"a\", { ", "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: Unexpected token (65:16)\n 63 | var callCount = 0;\n 64 | var C = class {\n> 65 | method({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 66 | assert.sameValue(rest.a, undefined);\n 67 | assert.sameValue(rest.b, undefined);\n 68 | ", - "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | var C = class {\n> 66 | method({...x}) {\n | ^\n 67 | assert.sameValue(count, 1);\n 68 | \n 69 | verifyProperty(x, \"v\", { ", "test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (67:10)\n 65 | var callCount = 0;\n 66 | var C = class {\n> 67 | method({...rest}) {\n | ^\n 68 | assert.sameValue(rest.x, undefined);\n 69 | \n 70 | verifyProperty(rest, \"a\", { ", "test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js: Unexpected token (65:16)\n 63 | var callCount = 0;\n 64 | var C = class {\n> 65 | method({a, b, ...rest}) {\n | ^\n 66 | assert.sameValue(rest.a, undefined);\n 67 | assert.sameValue(rest.b, undefined);\n 68 | ", - "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js: Unexpected token (97:20)\n 95 | var callCount = 0;\n 96 | var C = class {\n> 97 | static method([...[x, y, z]]) {\n | ^\n 98 | assert.sameValue(x, 3);\n 99 | assert.sameValue(y, 4);\n 100 | assert.sameValue(z, 5); ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...[...x]]) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | static method([...{ length }]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (97:20)\n 95 | var callCount = 0;\n 96 | var C = class {\n> 97 | static method([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 98 | assert.sameValue(x, 3);\n 99 | assert.sameValue(y, 4);\n 100 | assert.sameValue(z, 5); ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...[...x]] = values) {\n | ^\n 79 | assert(Array.isArray(x));\n 80 | assert.sameValue(x.length, 3);\n 81 | assert.sameValue(x[0], 1); ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | var C = class {\n> 77 | static method([...{ length }] = [1, 2, 3]) {\n | ^\n 78 | assert.sameValue(length, 3);\n 79 | callCount = callCount + 1;\n 80 | } ", "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (78:20)\n 76 | var callCount = 0;\n 77 | var C = class {\n> 78 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 79 | assert.sameValue(v, 7);\n 80 | assert.sameValue(w, 8);\n 81 | assert.sameValue(x, 9); ", - "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js: Unexpected token (66:17)\n 64 | var callCount = 0;\n 65 | var C = class {\n> 66 | static method({...x} = { get v() { count++; return 2; } }) {\n | ^\n 67 | assert.sameValue(count, 1);\n 68 | \n 69 | verifyProperty(x, \"v\", { ", "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (67:17)\n 65 | var callCount = 0;\n 66 | var C = class {\n> 67 | static method({...rest} = o) {\n | ^\n 68 | assert.sameValue(rest.x, undefined);\n 69 | \n 70 | verifyProperty(rest, \"a\", { ", "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js: Unexpected token (65:23)\n 63 | var callCount = 0;\n 64 | var C = class {\n> 65 | static method({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 66 | assert.sameValue(rest.a, undefined);\n 67 | assert.sameValue(rest.b, undefined);\n 68 | ", - "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-getter.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-getter.js: SyntaxError: test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-getter.js: Unexpected token (66:17)\n 64 | var callCount = 0;\n 65 | var C = class {\n> 66 | static method({...x}) {\n | ^\n 67 | assert.sameValue(count, 1);\n 68 | \n 69 | verifyProperty(x, \"v\", { ", "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (67:17)\n 65 | var callCount = 0;\n 66 | var C = class {\n> 67 | static method({...rest}) {\n | ^\n 68 | assert.sameValue(rest.x, undefined);\n 69 | \n 70 | verifyProperty(rest, \"a\", { ", "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-val-obj.js-strict:true": "test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/expressions/class/dstr/meth-static-obj-ptrn-rest-val-obj.js: Unexpected token (65:23)\n 63 | var callCount = 0;\n 64 | var C = class {\n> 65 | static method({a, b, ...rest}) {\n | ^\n 66 | assert.sameValue(rest.a, undefined);\n 67 | assert.sameValue(rest.b, undefined);\n 68 | ", @@ -1326,7 +1290,7 @@ "test/language/expressions/class/elements/wrapped-in-sc-static-private-methods-with-fields.js-strict:true": "test/language/expressions/class/elements/wrapped-in-sc-static-private-methods-with-fields.js: SyntaxError: test/language/expressions/class/elements/wrapped-in-sc-static-private-methods-with-fields.js: Unexpected character '#' (29:15)\n 27 | var C = class {\n 28 | ;;;;\n> 29 | ;;;;;;static #xVal; static #yVal;;;;;;;\n | ^\n 30 | ;;;;\n 31 | static #x(value) {\n 32 | this.#xVal = value; ", "test/language/expressions/class/elements/wrapped-in-sc-static-private-methods.js-strict:true": "test/language/expressions/class/elements/wrapped-in-sc-static-private-methods.js: SyntaxError: test/language/expressions/class/elements/wrapped-in-sc-static-private-methods.js: Unexpected character '#' (31:9)\n 29 | ;;;;;;;;;;;;;\n 30 | ;;;;\n> 31 | static #x(value) {\n | ^\n 32 | return value / 2;\n 33 | }\n 34 | static #y(value) { ", "test/language/expressions/class/elements/wrapped-in-sc-string-literal-names.js-strict:true": "test/language/expressions/class/elements/wrapped-in-sc-string-literal-names.js: SyntaxError: test/language/expressions/class/elements/wrapped-in-sc-string-literal-names.js: Unexpected token (27:22)\n 25 | var C = class {\n 26 | ;;;;\n> 27 | ;;;;;;'a'; \"b\"; 'c' = 39;\n | ^\n 28 | \"d\" = 42;;;;;;;\n 29 | ;;;;\n 30 | ", - "test/language/expressions/class/heritage-arrow-function.js-strict:true": "test/language/expressions/class/heritage-arrow-function.js: test/language/expressions/class/heritage-arrow-function.js: Line 30:212 Unexpected token function (and 2 more errors)", + "test/language/expressions/class/heritage-arrow-function.js-strict:true": "test/language/expressions/class/heritage-arrow-function.js: test/language/expressions/class/heritage-arrow-function.js: Line 30:206 Malformed arrow function parameter list (and 3 more errors)", "test/language/expressions/class/name.js-strict:true": "test/language/expressions/class/name.js: Test262Error: descriptor value should be ", "test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js-strict:false": "test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 7 more errors) ", "test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js-strict:false": "test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 7 more errors) ", @@ -1356,12 +1320,8 @@ "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-eval-indirect.js-strict:false": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-eval-indirect.js: SyntaxError: SyntaxError: : Line 2:1 Unexpected reserved word (and 3 more errors) ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js-strict:true": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js: SyntaxError: test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-factory.js: Unexpected character '#' (28:15)\n 26 | let createClass = function () {\n 27 | return class {\n> 28 | static set #m(v) {\n | ^\n 29 | this._v = v;\n 30 | };\n 31 | ", "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-function-ctor.js-strict:true": "test/language/expressions/class/private-static-setter-multiple-evaluations-of-class-function-ctor.js: SyntaxError: SyntaxError: : Line 2:8 Unexpected reserved word (and 4 more errors) ", - "test/language/expressions/class/scope-meth-paramsbody-var-open.js-strict:true": "test/language/expressions/class/scope-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/expressions/class/scope-name-lex-open-heritage.js-strict:true": "test/language/expressions/class/scope-name-lex-open-heritage.js: Test262Error: from class heritage Expected SameValue(«outside», «function C() {_classCallCheck(this, C);return _possibleConstructorReturn(this, (C.__proto__ || Object.getPrototypeOf(C)).apply(this, arguments));}») to be true ", "test/language/expressions/class/scope-name-lex-open-no-heritage.js-strict:true": "test/language/expressions/class/scope-name-lex-open-no-heritage.js: Test262Error: inner binding rejects modification Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/expressions/class/scope-setter-paramsbody-var-open.js-strict:true": "test/language/expressions/class/scope-setter-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/expressions/class/scope-static-meth-paramsbody-var-open.js-strict:true": "test/language/expressions/class/scope-static-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/expressions/class/scope-static-setter-paramsbody-var-open.js-strict:true": "test/language/expressions/class/scope-static-setter-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/expressions/class/subclass-builtins/subclass-AggregateError.js-strict:true": "test/language/expressions/class/subclass-builtins/subclass-AggregateError.js: ReferenceError: AggregateError is not defined ", "test/language/expressions/class/subclass-builtins/subclass-Array.js-strict:true": "test/language/expressions/class/subclass-builtins/subclass-Array.js: Test262Error: Expected true but got false ", "test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js-strict:true": "test/language/expressions/class/subclass-builtins/subclass-ArrayBuffer.js: TypeError: Constructor ArrayBuffer requires 'new' ", @@ -1598,7 +1558,6 @@ "test/language/expressions/super/call-construct-invocation.js-strict:true": "test/language/expressions/super/call-construct-invocation.js: TypeError: Cannot call a class as a function ", "test/language/expressions/super/call-poisoned-underscore-proto.js-strict:true": "test/language/expressions/super/call-poisoned-underscore-proto.js: Test262Error: should not be called ", "test/language/expressions/super/call-proto-not-ctor.js-strict:true": "test/language/expressions/super/call-proto-not-ctor.js: Test262Error: Expected SameValue(«undefined», «object») to be true ", - "test/language/expressions/super/call-spread-err-mult-err-iter-get-value.js-strict:true": "test/language/expressions/super/call-spread-err-mult-err-iter-get-value.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js-strict:true": "test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js: SyntaxError: test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js: Unexpected token (38:17)\n 36 | class Test262ChildClass extends Test262ParentClass {\n 37 | constructor() {\n> 38 | super({a: 0, ...unresolvableReference});\n | ^\n 39 | }\n 40 | }\n 41 | ", "test/language/expressions/super/call-spread-err-sngl-err-obj-unresolvable.js-strict:true": "test/language/expressions/super/call-spread-err-sngl-err-obj-unresolvable.js: SyntaxError: test/language/expressions/super/call-spread-err-sngl-err-obj-unresolvable.js: Unexpected token (38:11)\n 36 | class Test262ChildClass extends Test262ParentClass {\n 37 | constructor() {\n> 38 | super({...unresolvableReference});\n | ^\n 39 | }\n 40 | }\n 41 | ", "test/language/expressions/super/call-spread-mult-obj-ident.js-strict:true": "test/language/expressions/super/call-spread-mult-obj-ident.js: SyntaxError: test/language/expressions/super/call-spread-mult-obj-ident.js: Unexpected token (74:23)\n 72 | class Test262ChildClass extends Test262ParentClass {\n 73 | constructor() {\n> 74 | super({a: 1, b: 2, ...o});\n | ^\n 75 | }\n 76 | }\n 77 | ", @@ -1908,19 +1867,15 @@ "test/language/statements/class/class-name-ident-await.js-strict:true": "test/language/statements/class/class-name-ident-await.js: SyntaxError: test/language/statements/class/class-name-ident-await.js: await is a reserved word (17:6)\n 15 | ---*/\n 16 | \n> 17 | class await {}\n | ^\n 18 | ", "test/language/statements/class/classelementname-abrupt-completion.js-strict:true": "test/language/statements/class/classelementname-abrupt-completion.js: SyntaxError: test/language/statements/class/classelementname-abrupt-completion.js: Missing class properties transform.\n 39 | assert.throws(Test262Error, function() {\n 40 | class C {\n> 41 | [f()]\n | ^\n 42 | }\n 43 | });\n 44 | ", "test/language/statements/class/constructor-inferred-observable-iteration.js-strict:true": "test/language/statements/class/constructor-inferred-observable-iteration.js: TypeError: Cannot convert undefined or null to object ", - "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-arrow-function-expression.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-arrow-function-expression.js: Test262Error: Expected SameValue(«undefined», «1») to be true ", "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-coalesce.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-coalesce.js: SyntaxError: test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-coalesce.js: Unexpected token (41:10)\n 39 | \n 40 | class C {\n> 41 | get [x ??= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-and.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-and.js: SyntaxError: test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-and.js: Unexpected token (41:11)\n 39 | \n 40 | class C {\n> 41 | get [x &&= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-or.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-or.js: SyntaxError: test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-assignment-expression-logical-or.js: Unexpected token (41:11)\n 39 | \n 40 | class C {\n> 41 | get [x ||= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-expression-coalesce.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-expression-coalesce.js: SyntaxError: test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-expression-coalesce.js: Unexpected token (41:10)\n 39 | \n 40 | class C {\n> 41 | get [x ?? 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | ", - "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-function-expression.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-function-expression.js: Test262Error: Expected SameValue(«undefined», «1») to be true ", "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-integer-separators.js-strict:true": "test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-integer-separators.js: SyntaxError: test/language/statements/class/cpn-class-decl-accessors-computed-property-name-from-integer-separators.js: Identifier directly after number (40:8)\n 38 | \n 39 | class C {\n> 40 | get [1_2_3_4_5_6_7_8]() {\n | ^\n 41 | return 1_2_3_4_5_6_7_8;\n 42 | }\n 43 | ", - "test/language/statements/class/cpn-class-decl-computed-property-name-from-arrow-function-expression.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-arrow-function-expression.js: TypeError: Object has no member 'function () {}' ", "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-coalesce.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-coalesce.js: SyntaxError: test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-coalesce.js: Unexpected token (41:6)\n 39 | \n 40 | class C {\n> 41 | [x ??= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ??= 1]() { ", "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-and.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-and.js: SyntaxError: test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-and.js: Unexpected token (41:7)\n 39 | \n 40 | class C {\n> 41 | [x &&= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x &&= 1]() { ", "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-or.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-or.js: SyntaxError: test/language/statements/class/cpn-class-decl-computed-property-name-from-assignment-expression-logical-or.js: Unexpected token (41:7)\n 39 | \n 40 | class C {\n> 41 | [x ||= 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ||= 1]() { ", "test/language/statements/class/cpn-class-decl-computed-property-name-from-expression-coalesce.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-expression-coalesce.js: SyntaxError: test/language/statements/class/cpn-class-decl-computed-property-name-from-expression-coalesce.js: Unexpected token (41:6)\n 39 | \n 40 | class C {\n> 41 | [x ?? 1]() {\n | ^\n 42 | return 2;\n 43 | }\n 44 | static [x ?? 1]() { ", - "test/language/statements/class/cpn-class-decl-computed-property-name-from-function-expression.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-function-expression.js: TypeError: Object has no member 'function () {}' ", "test/language/statements/class/cpn-class-decl-computed-property-name-from-integer-separators.js-strict:true": "test/language/statements/class/cpn-class-decl-computed-property-name-from-integer-separators.js: SyntaxError: test/language/statements/class/cpn-class-decl-computed-property-name-from-integer-separators.js: Identifier directly after number (40:4)\n 38 | \n 39 | class C {\n> 40 | [1_2_3_4_5_6_7_8]() {\n | ^\n 41 | return 1_2_3_4_5_6_7_8;\n 42 | }\n 43 | static [1_2_3_4_5_6_7_8]() { ", "test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-add.js-strict:true": "test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-add.js: SyntaxError: test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-add.js: Unexpected token (40:10)\n 38 | \n 39 | let C = class {\n> 40 | [1 + 1] = 2;\n | ^\n 41 | \n 42 | static [1 + 1] = 2;\n 43 | }; ", "test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-subtract.js-strict:true": "test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-subtract.js: SyntaxError: test/language/statements/class/cpn-class-decl-fields-computed-property-name-from-additive-expression-subtract.js: Unexpected token (40:10)\n 38 | \n 39 | let C = class {\n> 40 | [1 - 1] = 0;\n | ^\n 41 | \n 42 | static [1 - 1] = 0;\n 43 | }; ", @@ -1990,67 +1945,39 @@ "test/language/statements/class/definition/this-access-restriction-2.js-strict:true": "test/language/statements/class/definition/this-access-restriction-2.js: SyntaxError: test/language/statements/class/definition/this-access-restriction-2.js: 'this' is not allowed before super()\n 19 | var exn;\n 20 | try {\n> 21 | this.prp1 = 3;\n | ^\n 22 | } catch (e) {\n 23 | exn = e;\n 24 | } ", "test/language/statements/class/definition/this-access-restriction.js-strict:true": "test/language/statements/class/definition/this-access-restriction.js: SyntaxError: test/language/statements/class/definition/this-access-restriction.js: 'this' is not allowed before super()\n 19 | class C extends Base {\n 20 | constructor() {\n> 21 | super(this.x);\n | ^\n 22 | }\n 23 | }; new C();\n 24 | }); ", "test/language/statements/class/definition/this-check-ordering.js-strict:true": "test/language/statements/class/definition/this-check-ordering.js: test/language/statements/class/definition/this-check-ordering.js: Line 43:7 Unexpected reserved word (and 15 more errors)", - "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-elem.js: Unexpected token (96:13)\n 94 | var callCount = 0;\n 95 | class C {\n> 96 | method([...[x, y, z]]) {\n | ^\n 97 | assert.sameValue(x, 3);\n 98 | assert.sameValue(y, 4);\n 99 | assert.sameValue(z, 5); ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-ary-rest.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...[...x]]) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-id.js: Unexpected token (76:13)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | method([...{ length }]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (96:13)\n 94 | var callCount = 0;\n 95 | class C {\n> 96 | method([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 97 | assert.sameValue(x, 3);\n 98 | assert.sameValue(y, 4);\n 99 | assert.sameValue(z, 5); ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...[...x]] = values) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-id.js: Unexpected token (76:13)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | method([...{ length }] = [1, 2, 3]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:13)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | method([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-getter.js: Unexpected token (65:10)\n 63 | var callCount = 0;\n 64 | class C {\n> 65 | method({...x} = { get v() { count++; return 2; } }) {\n | ^\n 66 | assert.sameValue(count, 1);\n 67 | \n 68 | verifyProperty(x, \"v\", { ", "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | class C {\n> 66 | method({...rest} = o) {\n | ^\n 67 | assert.sameValue(rest.x, undefined);\n 68 | \n 69 | verifyProperty(rest, \"a\", { ", "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js: Unexpected token (64:16)\n 62 | var callCount = 0;\n 63 | class C {\n> 64 | method({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 65 | assert.sameValue(rest.a, undefined);\n 66 | assert.sameValue(rest.b, undefined);\n 67 | ", - "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-getter.js: Unexpected token (65:10)\n 63 | var callCount = 0;\n 64 | class C {\n> 65 | method({...x}) {\n | ^\n 66 | assert.sameValue(count, 1);\n 67 | \n 68 | verifyProperty(x, \"v\", { ", "test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (66:10)\n 64 | var callCount = 0;\n 65 | class C {\n> 66 | method({...rest}) {\n | ^\n 67 | assert.sameValue(rest.x, undefined);\n 68 | \n 69 | verifyProperty(rest, \"a\", { ", "test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js: Unexpected token (64:16)\n 62 | var callCount = 0;\n 63 | class C {\n> 64 | method({a, b, ...rest}) {\n | ^\n 65 | assert.sameValue(rest.a, undefined);\n 66 | assert.sameValue(rest.b, undefined);\n 67 | ", - "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-elem.js: Unexpected token (96:20)\n 94 | var callCount = 0;\n 95 | class C {\n> 96 | static method([...[x, y, z]]) {\n | ^\n 97 | assert.sameValue(x, 3);\n 98 | assert.sameValue(y, 4);\n 99 | assert.sameValue(z, 5); ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-ary-rest.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...[...x]]) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-id.js: Unexpected token (76:20)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | static method([...{ length }]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js: TypeError: object is not iterable ", - "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-elem-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-elem.js: Unexpected token (96:20)\n 94 | var callCount = 0;\n 95 | class C {\n> 96 | static method([...[x, y, z]] = [3, 4, 5]) {\n | ^\n 97 | assert.sameValue(x, 3);\n 98 | assert.sameValue(y, 4);\n 99 | assert.sameValue(z, 5); ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-ary-rest.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...[...x]] = values) {\n | ^\n 78 | assert(Array.isArray(x));\n 79 | assert.sameValue(x.length, 3);\n 80 | assert.sameValue(x[0], 1); ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-id.js: Unexpected token (76:20)\n 74 | var callCount = 0;\n 75 | class C {\n> 76 | static method([...{ length }] = [1, 2, 3]) {\n | ^\n 77 | assert.sameValue(length, 3);\n 78 | callCount = callCount + 1;\n 79 | } ", "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-obj-prop-id.js: Unexpected token (77:20)\n 75 | var callCount = 0;\n 76 | class C {\n> 77 | static method([...{ 0: v, 1: w, 2: x, 3: y, length: z }] = [7, 8, 9]) {\n | ^\n 78 | assert.sameValue(v, 7);\n 79 | assert.sameValue(w, 8);\n 80 | assert.sameValue(x, 9); ", - "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js: Unexpected token (65:17)\n 63 | var callCount = 0;\n 64 | class C {\n> 65 | static method({...x} = { get v() { count++; return 2; } }) {\n | ^\n 66 | assert.sameValue(count, 1);\n 67 | \n 68 | verifyProperty(x, \"v\", { ", "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (66:17)\n 64 | var callCount = 0;\n 65 | class C {\n> 66 | static method({...rest} = o) {\n | ^\n 67 | assert.sameValue(rest.x, undefined);\n 68 | \n 69 | verifyProperty(rest, \"a\", { ", "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js: Unexpected token (64:23)\n 62 | var callCount = 0;\n 63 | class C {\n> 64 | static method({a, b, ...rest} = {x: 1, y: 2, a: 5, b: 3}) {\n | ^\n 65 | assert.sameValue(rest.a, undefined);\n 66 | assert.sameValue(rest.b, undefined);\n 67 | ", - "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-arrow.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-arrow.js: Test262Error: Expected SameValue(«», «arrow») to be true ", "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-cover.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-cover.js: Test262Error: Expected SameValue(«», «cover») to be true ", - "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-fn.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-id-init-fn-name-fn.js: Test262Error: Expected SameValue(«», «fn») to be true ", "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-getter.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-getter.js: SyntaxError: test/language/statements/class/dstr/meth-static-obj-ptrn-rest-getter.js: Unexpected token (65:17)\n 63 | var callCount = 0;\n 64 | class C {\n> 65 | static method({...x}) {\n | ^\n 66 | assert.sameValue(count, 1);\n 67 | \n 68 | verifyProperty(x, \"v\", { ", "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js: SyntaxError: test/language/statements/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js: Unexpected token (66:17)\n 64 | var callCount = 0;\n 65 | class C {\n> 66 | static method({...rest}) {\n | ^\n 67 | assert.sameValue(rest.x, undefined);\n 68 | \n 69 | verifyProperty(rest, \"a\", { ", "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-val-obj.js-strict:true": "test/language/statements/class/dstr/meth-static-obj-ptrn-rest-val-obj.js: SyntaxError: test/language/statements/class/dstr/meth-static-obj-ptrn-rest-val-obj.js: Unexpected token (64:23)\n 62 | var callCount = 0;\n 63 | class C {\n> 64 | static method({a, b, ...rest}) {\n | ^\n 65 | assert.sameValue(rest.a, undefined);\n 66 | assert.sameValue(rest.b, undefined);\n 67 | ", @@ -2861,12 +2788,8 @@ "test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js-strict:true": "test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js: SyntaxError: test/language/statements/class/elements/wrapped-in-sc-string-literal-names.js: Unexpected token (27:22)\n 25 | class C {\n 26 | ;;;;\n> 27 | ;;;;;;'a'; \"b\"; 'c' = 39;\n | ^\n 28 | \"d\" = 42;;;;;;;\n 29 | ;;;;\n 30 | ", "test/language/statements/class/name-binding/const.js-strict:true": "test/language/statements/class/name-binding/const.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/name-binding/in-extends-expression-assigned.js-strict:true": "test/language/statements/class/name-binding/in-extends-expression-assigned.js: Test262Error: Expected a ReferenceError but got a TypeError ", - "test/language/statements/class/scope-meth-paramsbody-var-open.js-strict:true": "test/language/statements/class/scope-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/statements/class/scope-name-lex-open-heritage.js-strict:true": "test/language/statements/class/scope-name-lex-open-heritage.js: Test262Error: inner binding is independent Expected SameValue(«null», «function C() {_classCallCheck(this, C);return _possibleConstructorReturn(this, (C.__proto__ || Object.getPrototypeOf(C)).apply(this, arguments));}») to be true ", "test/language/statements/class/scope-name-lex-open-no-heritage.js-strict:true": "test/language/statements/class/scope-name-lex-open-no-heritage.js: Test262Error: inner binding rejects modification Expected a TypeError to be thrown but no exception was thrown at all ", - "test/language/statements/class/scope-setter-paramsbody-var-open.js-strict:true": "test/language/statements/class/scope-setter-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/statements/class/scope-static-meth-paramsbody-var-open.js-strict:true": "test/language/statements/class/scope-static-meth-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", - "test/language/statements/class/scope-static-setter-paramsbody-var-open.js-strict:true": "test/language/statements/class/scope-static-setter-paramsbody-var-open.js: Test262Error: Expected SameValue(«inside», «outside») to be true ", "test/language/statements/class/static-classelementname-abrupt-completion.js-strict:true": "test/language/statements/class/static-classelementname-abrupt-completion.js: SyntaxError: test/language/statements/class/static-classelementname-abrupt-completion.js: Missing class properties transform.\n 30 | assert.throws(Test262Error, function() {\n 31 | class C {\n> 32 | static [f()]\n | ^\n 33 | }\n 34 | });\n 35 | ", "test/language/statements/class/static-method-non-configurable-err.js-strict:true": "test/language/statements/class/static-method-non-configurable-err.js: Test262Error: Expected a TypeError to be thrown but no exception was thrown at all ", "test/language/statements/class/subclass-builtins/subclass-AggregateError.js-strict:true": "test/language/statements/class/subclass-builtins/subclass-AggregateError.js: ReferenceError: AggregateError is not defined ", @@ -2982,17 +2905,16 @@ "test/language/statements/for-of/head-expr-no-expr.js-strict:true": "test/language/statements/for-of/head-expr-no-expr.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/head-var-no-expr.js-strict:true": "test/language/statements/for-of/head-var-no-expr.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/for-of/iterator-next-reference.js-strict:true": "test/language/statements/for-of/iterator-next-reference.js: Test262Error: Should not access the `next` method after the iteration prologue. ", - "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js: ReferenceError: cls is not defined ", - "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js: ReferenceError: cls is not defined ", + "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", + "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/const-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", + "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", + "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/let-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/var-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/for/dstr/var-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/dflt-ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/dflt-obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-class.js-strict:true": "test/language/statements/function/dstr/obj-ptrn-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", - "test/language/statements/labeled/let-array-with-newline.js-strict:false": "test/language/statements/labeled/let-array-with-newline.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/labeled/value-await-module-escaped.js-strict:true": "test/language/statements/labeled/value-await-module-escaped.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/labeled/value-await-module.js-strict:true": "test/language/statements/labeled/value-await-module.js: error is not an object (Test262: This statement should not be evaluated.)", "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-class.js-strict:true": "test/language/statements/let/dstr/ary-ptrn-elem-id-init-fn-name-class.js: Test262Error: Expected SameValue(«_class», «cls») to be true ", From 7f94c91f53c6d68887875016f381a26e7560cf90 Mon Sep 17 00:00:00 2001 From: Mihail Stoykov Date: Thu, 5 Aug 2021 18:40:12 +0300 Subject: [PATCH 3/3] fixup! Disable a lot of babel plugins that aren't necessary anymore --- js/bundle_test.go | 6 ------ js/compiler/compiler_test.go | 14 +++++++------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/js/bundle_test.go b/js/bundle_test.go index 5b45633a1f3..c9eea48d83a 100644 --- a/js/bundle_test.go +++ b/js/bundle_test.go @@ -170,12 +170,6 @@ func TestNewBundle(t *testing.T) { "Modules", "base", `export default function() {};`, "file:///script.js: Line 1:1 Unexpected reserved word", }, - // Arrow functions are not supported - { - "ArrowFuncs", "base", - `module.exports.default = function() {}; () => {};`, - "file:///script.js: Line 1:42 Unexpected token ) (and 1 more errors)", - }, // Promises are not supported { "Promise", "base", diff --git a/js/compiler/compiler_test.go b/js/compiler/compiler_test.go index 74d49df5c41..8ba055b8ca8 100644 --- a/js/compiler/compiler_test.go +++ b/js/compiler/compiler_test.go @@ -46,7 +46,7 @@ func TestTransform(t *testing.T) { t.Run("double-arrow", func(t *testing.T) { src, _, err := c.Transform("()=> true", "test.js") assert.NoError(t, err) - assert.Equal(t, `"use strict";(function () {return true;});`, src) + assert.Equal(t, `"use strict";() => true;`, src) // assert.Equal(t, 3, srcmap.Version) // assert.Equal(t, "test.js", srcmap.File) // assert.Equal(t, "aAAA,qBAAK,IAAL", srcmap.Mappings) @@ -111,18 +111,18 @@ func TestCompile(t *testing.T) { }) }) t.Run("ES6", func(t *testing.T) { - pgm, code, err := c.Compile(`1+(()=>2)()`, "script.js", "", "", true, lib.CompatibilityModeExtended) + pgm, code, err := c.Compile(`3**2`, "script.js", "", "", true, lib.CompatibilityModeExtended) require.NoError(t, err) - assert.Equal(t, `"use strict";1 + function () {return 2;}();`, code) + assert.Equal(t, `"use strict";Math.pow(3, 2);`, code) v, err := goja.New().RunProgram(pgm) if assert.NoError(t, err) { - assert.Equal(t, int64(3), v.Export()) + assert.Equal(t, int64(9), v.Export()) } t.Run("Wrap", func(t *testing.T) { - pgm, code, err := c.Compile(`fn(1+(()=>2)())`, "script.js", "(function(fn){", "})", true, lib.CompatibilityModeExtended) + pgm, code, err := c.Compile(`fn(3**2)`, "script.js", "(function(fn){", "})", true, lib.CompatibilityModeExtended) require.NoError(t, err) - assert.Equal(t, `(function(fn){"use strict";fn(1 + function () {return 2;}());})`, code) + assert.Equal(t, `(function(fn){"use strict";fn(Math.pow(3, 2));})`, code) rt := goja.New() v, err := rt.RunProgram(pgm) if assert.NoError(t, err) { @@ -133,7 +133,7 @@ func TestCompile(t *testing.T) { out = v.Export() })) assert.NoError(t, err) - assert.Equal(t, int64(3), out) + assert.Equal(t, int64(9), out) } } })