diff --git a/src/class-fields/eval-err-contains-newtarget.case b/src/class-fields/eval-err-contains-newtarget.case index 28688867aff4015fb39ea6ee2f87b12a2c3b5e8a..e396fb4fa1915870fd6e5c1709a29d9fbd995b94 100644 --- a/src/class-fields/eval-err-contains-newtarget.case +++ b/src/class-fields/eval-err-contains-newtarget.case @@ -16,7 +16,7 @@ info: | ScriptBody:StatementList It is a Syntax Error if StatementList Contains NewTarget. -features: [class, class-fields-public] +features: [class, class-fields-public, new.target] template: initializer-eval-newtarget ---*/ diff --git a/test/built-ins/Proxy/construct/trap-is-null.js b/test/built-ins/Proxy/construct/trap-is-null.js index fdd485273809de7ee5f6eb48b813a62f4940951f..a5a63f0712110aae6d998cdea110a23dfef8f8ca 100644 --- a/test/built-ins/Proxy/construct/trap-is-null.js +++ b/test/built-ins/Proxy/construct/trap-is-null.js @@ -21,7 +21,7 @@ info: | ... 3. If func is either undefined or null, return undefined. ... -features: [Proxy, Reflect, Reflect.construct] +features: [new.target, Proxy, Reflect, Reflect.construct] ---*/ var calls = 0; diff --git a/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js b/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js index a6472c1ab389b2b0c271eb5c7532eb26f97454fc..557bd7133a819b5a0482e7ba2ab47525772507aa 100644 --- a/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js +++ b/test/built-ins/Proxy/construct/trap-is-undefined-no-property.js @@ -10,7 +10,7 @@ info: | 7. If trap is undefined, then b. Return Construct(target, argumentsList, newTarget). -features: [Proxy, Reflect, Reflect.construct] +features: [new.target, Proxy, Reflect, Reflect.construct] ---*/ var calls = 0; diff --git a/test/built-ins/Proxy/construct/trap-is-undefined.js b/test/built-ins/Proxy/construct/trap-is-undefined.js index 7c17356267af928dc2bd30a909eca9e0adb2ccf9..82b400abc891ec6f7b46fa09306bbd5c8cbcd0aa 100644 --- a/test/built-ins/Proxy/construct/trap-is-undefined.js +++ b/test/built-ins/Proxy/construct/trap-is-undefined.js @@ -21,7 +21,7 @@ info: | ... 3. If func is either undefined or null, return undefined. ... -features: [Proxy, Reflect, Reflect.construct] +features: [new.target, Proxy, Reflect, Reflect.construct] ---*/ var calls = 0; diff --git a/test/language/eval-code/direct/new.target-arrow.js b/test/language/eval-code/direct/new.target-arrow.js index 2eb465b7a5b52a8d109e79232c29d13d60a34ae3..a3a52faab5bd16601ffc537dab1d97c8dd10f65f 100644 --- a/test/language/eval-code/direct/new.target-arrow.js +++ b/test/language/eval-code/direct/new.target-arrow.js @@ -11,7 +11,7 @@ info: | code containing NewTarget is eval code that is being processed by a direct eval that is contained in function code that is not the function code of an ArrowFunction. -features: [arrow-function] +features: [arrow-function, new.target] ---*/ var caught; diff --git a/test/language/eval-code/direct/new.target-fn.js b/test/language/eval-code/direct/new.target-fn.js index e09e9462df6c7a38f143eaea059f0743a1515d43..c494d08b4f4ec491ce3e4d98860b8c16726fb58e 100644 --- a/test/language/eval-code/direct/new.target-fn.js +++ b/test/language/eval-code/direct/new.target-fn.js @@ -11,7 +11,7 @@ info: | code containing NewTarget is eval code that is being processed by a direct eval that is contained in function code that is not the function code of an ArrowFunction. -features: [arrow-function] +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/eval-code/direct/new.target.js b/test/language/eval-code/direct/new.target.js index 8d308ac904f61fbda99785e6a13f71d6be9b0cdb..90604c9e8172a9f8fdb0c310956bc257b4210592 100644 --- a/test/language/eval-code/direct/new.target.js +++ b/test/language/eval-code/direct/new.target.js @@ -9,6 +9,7 @@ info: | code containing NewTarget is eval code that is being processed by a direct eval that is contained in function code that is not the function code of an ArrowFunction. +features: [new.target] ---*/ var caught; diff --git a/test/language/eval-code/indirect/new.target.js b/test/language/eval-code/indirect/new.target.js index 5c938c70f243c2a8b7a723b7a36ab0875abcb7b8..5172ff2493b0d7e3171eb0f74b37cf3a10e0a5b3 100644 --- a/test/language/eval-code/indirect/new.target.js +++ b/test/language/eval-code/indirect/new.target.js @@ -10,6 +10,7 @@ info: | code containing NewTarget is eval code that is being processed by a direct eval that is contained in function code that is not the function code of an ArrowFunction. +features: [new.target] ---*/ var caught; diff --git a/test/language/expressions/arrow-function/lexical-new.target-closure-returned.js b/test/language/expressions/arrow-function/lexical-new.target-closure-returned.js index cbe64efe1d9f71c5a0562ffb93b0b317c3dd6fd3..248b1de6d0ebdc9e638d75b86446596582479a16 100644 --- a/test/language/expressions/arrow-function/lexical-new.target-closure-returned.js +++ b/test/language/expressions/arrow-function/lexical-new.target-closure-returned.js @@ -14,6 +14,7 @@ description: > The non-normative note elaborates on the "scope" argument: An ArrowFunction does not define local bindings for arguments, super, this, or new.target. Any reference to arguments, super, or this within an ArrowFunction must resolve to a binding in a lexically enclosing environment. Typically this will be the Function Environment of an immediately enclosing function. Even though an ArrowFunction may contain references to super, the function object created in step 4 is not made into a method by performing MakeMethod. An ArrowFunction that references super is always contained within a non-ArrowFunction and the necessary state to implement super is accessible via the scope that is captured by the function object of the ArrowFunction. +features: [arrow-function, new.target] ---*/ function F() { diff --git a/test/language/expressions/arrow-function/lexical-new.target.js b/test/language/expressions/arrow-function/lexical-new.target.js index ef76c6bd83dc07a841aa81048a0b6c0199816df4..b44ad6b937b817127d14a192ca9924295e8b3585 100644 --- a/test/language/expressions/arrow-function/lexical-new.target.js +++ b/test/language/expressions/arrow-function/lexical-new.target.js @@ -14,6 +14,7 @@ description: > The non-normative note elaborates on the "scope" argument: An ArrowFunction does not define local bindings for arguments, super, this, or new.target. Any reference to arguments, super, or this within an ArrowFunction must resolve to a binding in a lexically enclosing environment. Typically this will be the Function Environment of an immediately enclosing function. Even though an ArrowFunction may contain references to super, the function object created in step 4 is not made into a method by performing MakeMethod. An ArrowFunction that references super is always contained within a non-ArrowFunction and the necessary state to implement super is accessible via the scope that is captured by the function object of the ArrowFunction. +features: [arrow-function, new.target] ---*/ var functionInvocationCount = 0; diff --git a/test/language/expressions/assignment/target-cover-newtarget.js b/test/language/expressions/assignment/target-cover-newtarget.js index 03ba2e29f4fb2e57e5c1fdcd1a862d570f264d22..34ab263b491865b1ae743fd4f94c2042c6faf139 100644 --- a/test/language/expressions/assignment/target-cover-newtarget.js +++ b/test/language/expressions/assignment/target-cover-newtarget.js @@ -21,6 +21,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/assignment/target-newtarget.js b/test/language/expressions/assignment/target-newtarget.js index 822d6a9fb92d9aa1f153b71205f8a46245c906d1..1c14fee0f31b9d6dda7b1b8ac059ae64274ead70 100644 --- a/test/language/expressions/assignment/target-newtarget.js +++ b/test/language/expressions/assignment/target-newtarget.js @@ -21,6 +21,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js b/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js index 18e70afd0489fb1ed3d214aceaeffa8dbe6d5bd7..94cb63a9ea77d5828664dd50155863781766624c 100644 --- a/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js +++ b/test/language/expressions/class/fields-direct-eval-err-contains-newtarget.js @@ -4,7 +4,7 @@ /*--- description: error if `new.target` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public] +features: [class, class-fields-public, new.target] flags: [generated] info: | Additional Early Error Rules for Eval Inside Initializer diff --git a/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js b/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js index 5334c569ba7f1689c06d3f93851860242fd540bb..84a0c29d709e4581ff22bdd0cc18fbbcc137c967 100644 --- a/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js +++ b/test/language/expressions/class/fields-indirect-eval-err-contains-newtarget.js @@ -4,7 +4,7 @@ /*--- description: error if `new.target` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public] +features: [class, class-fields-public, new.target] flags: [generated] info: | Additional Early Error Rules for Eval Inside Initializer diff --git a/test/language/expressions/new.target/value-via-call.js b/test/language/expressions/new.target/value-via-call.js index 40fdf413529cbe9d0436aa519cd9c0afc0f0ba01..9bd85d05a3550b6334dbe91e3f5359619f996de3 100644 --- a/test/language/expressions/new.target/value-via-call.js +++ b/test/language/expressions/new.target/value-via-call.js @@ -9,6 +9,7 @@ info: | [...] 8. Return ? EvaluateDirectCall(func, thisValue, Arguments, tailCall). +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-fpapply.js b/test/language/expressions/new.target/value-via-fpapply.js index a1b3c1e8ee2002b1db6ce03455a4ce14891414a7..7fab5ee16b914b40ce384d5892990314ec10cfb0 100644 --- a/test/language/expressions/new.target/value-via-fpapply.js +++ b/test/language/expressions/new.target/value-via-fpapply.js @@ -7,6 +7,7 @@ description: Value when invoked via `Function.prototype.apply` info: | [...] 5. Return ? Call(func, thisArg, argList). +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-fpcall.js b/test/language/expressions/new.target/value-via-fpcall.js index 7f4d89b51f29f8331a03bcb1efc128ff5fab4620..5c32d8f3bd689e71bff89c442209732de6a19591 100644 --- a/test/language/expressions/new.target/value-via-fpcall.js +++ b/test/language/expressions/new.target/value-via-fpcall.js @@ -7,6 +7,7 @@ description: Value when invoked via `Function.prototype.call` info: | [...] 5. Return ? Call(func, thisArg, argList). +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-member.js b/test/language/expressions/new.target/value-via-member.js index 2ba06cf2a342178260b06cc4aff6ae8aba23b878..baaedf8e14fa0353f2fe6a34c6d4cd0bc3ffa724 100644 --- a/test/language/expressions/new.target/value-via-member.js +++ b/test/language/expressions/new.target/value-via-member.js @@ -18,6 +18,7 @@ info: | 1. Let exprRef be the result of evaluating Expression. 2. Return ? GetValue(exprRef). +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-new.js b/test/language/expressions/new.target/value-via-new.js index 5715b5becbaeff8907588f6d66a458d4d0e8ce73..06af2631d9299ae07d37c5d287ec5a4577384d58 100644 --- a/test/language/expressions/new.target/value-via-new.js +++ b/test/language/expressions/new.target/value-via-new.js @@ -21,6 +21,7 @@ info: | 7.3.13 Construct (F [ , argumentsList [ , newTarget ]]) 1. If newTarget was not passed, let newTarget be F. +features: [new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-reflect-apply.js b/test/language/expressions/new.target/value-via-reflect-apply.js index a9b27cb9ce4d3e8ec05d503cafe829385ef76b7c..2c621c75e4f13b6717389cf142c0bce8d5a1e276 100644 --- a/test/language/expressions/new.target/value-via-reflect-apply.js +++ b/test/language/expressions/new.target/value-via-reflect-apply.js @@ -7,7 +7,7 @@ description: Value when invoked via `Reflect.apply` info: | [...] 5. Return ? Call(target, thisArgument, args). -features: [Reflect] +features: [new.target, Reflect] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-reflect-construct.js b/test/language/expressions/new.target/value-via-reflect-construct.js index a5240d5694a1ec0ae78280792e323837648af9db..f945adde61e465059f63a0defc125f0acd0d454b 100644 --- a/test/language/expressions/new.target/value-via-reflect-construct.js +++ b/test/language/expressions/new.target/value-via-reflect-construct.js @@ -9,7 +9,7 @@ info: | 2. If newTarget is not present, let newTarget be target. [...] 5. Return ? Construct(target, args, newTarget). -features: [Reflect] +features: [new.target, Reflect, Reflect.construct] ---*/ var customNewTarget = function() {}; diff --git a/test/language/expressions/new.target/value-via-super-call.js b/test/language/expressions/new.target/value-via-super-call.js index b1a482d3bdb0efb50ad280354aabf568c1448a7a..a582c08d004f7e9fedb2c90a255643c021a7305f 100644 --- a/test/language/expressions/new.target/value-via-super-call.js +++ b/test/language/expressions/new.target/value-via-super-call.js @@ -11,7 +11,7 @@ info: | [...] 6. Let result be ? Construct(func, argList, newTarget). [...] -features: [class] +features: [class, new.target] ---*/ var baseNewTarget, parentNewTarget; diff --git a/test/language/expressions/new.target/value-via-super-property.js b/test/language/expressions/new.target/value-via-super-property.js index 18eaffbe74afbc339e8863a317352676cde87b7f..379c3f0dca40ca48994f8b986ac665f058ad8d09 100644 --- a/test/language/expressions/new.target/value-via-super-property.js +++ b/test/language/expressions/new.target/value-via-super-property.js @@ -11,7 +11,7 @@ info: | [...] 6. Let result be ? Construct(func, argList, newTarget). [...] -features: [class] +features: [class, new.target] ---*/ var newTarget = null; diff --git a/test/language/expressions/new.target/value-via-tagged-template.js b/test/language/expressions/new.target/value-via-tagged-template.js index 62242916b94334a5f1424578acfdba02c3fd4488..61b8a4d52d407ba87cbbd51ce6f361df0344d365 100644 --- a/test/language/expressions/new.target/value-via-tagged-template.js +++ b/test/language/expressions/new.target/value-via-tagged-template.js @@ -9,7 +9,7 @@ info: | [...] 4. Return ? EvaluateCall(tagRef, TemplateLiteral, tailCall). -features: [template] +features: [new.target, template] ---*/ var newTarget = null; diff --git a/test/language/expressions/postfix-decrement/target-cover-newtarget.js b/test/language/expressions/postfix-decrement/target-cover-newtarget.js index c7c3112ecc613bbae70b62ab5bc13fea9324714b..f99504b1598adf058bc70f6fb831a904282df0de 100644 --- a/test/language/expressions/postfix-decrement/target-cover-newtarget.js +++ b/test/language/expressions/postfix-decrement/target-cover-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/postfix-decrement/target-newtarget.js b/test/language/expressions/postfix-decrement/target-newtarget.js index f134d1872b1c46aa622527c885c72329f6db91df..8d3e98b40729cec0cb16e94b4b0348d2545e2278 100644 --- a/test/language/expressions/postfix-decrement/target-newtarget.js +++ b/test/language/expressions/postfix-decrement/target-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/postfix-increment/target-cover-newtarget.js b/test/language/expressions/postfix-increment/target-cover-newtarget.js index 359b0fc4b4cba42176ba0582c7c0fc1aec1027ca..84747a21b40a8f00446a8624708cbc3a87ec993d 100644 --- a/test/language/expressions/postfix-increment/target-cover-newtarget.js +++ b/test/language/expressions/postfix-increment/target-cover-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/postfix-increment/target-newtarget.js b/test/language/expressions/postfix-increment/target-newtarget.js index a84c784e961eceb784115eb60fcbc2bcb62a8165..81db503c0da32433e3a44548c6aeac4fd90c813c 100644 --- a/test/language/expressions/postfix-increment/target-newtarget.js +++ b/test/language/expressions/postfix-increment/target-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/prefix-decrement/target-cover-newtarget.js b/test/language/expressions/prefix-decrement/target-cover-newtarget.js index 40ae5349a62911fd6f89fa96ecd8fdf54abb0893..c67f78771582cdc34d22a7060b6bddd9cb576759 100644 --- a/test/language/expressions/prefix-decrement/target-cover-newtarget.js +++ b/test/language/expressions/prefix-decrement/target-cover-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/prefix-decrement/target-newtarget.js b/test/language/expressions/prefix-decrement/target-newtarget.js index c2dadc17bc9659f4725540915c41ac0471724b43..4d1b8b06d6ea95329b1b4ac735a1f7edad54fa9a 100644 --- a/test/language/expressions/prefix-decrement/target-newtarget.js +++ b/test/language/expressions/prefix-decrement/target-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/prefix-increment/target-cover-newtarget.js b/test/language/expressions/prefix-increment/target-cover-newtarget.js index 0a91e7bd10a8463a8f730c76c0347dd0283bc1d8..fc7295a5e6d40d485fd3989a1aedd90c6b699dca 100644 --- a/test/language/expressions/prefix-increment/target-cover-newtarget.js +++ b/test/language/expressions/prefix-increment/target-cover-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/prefix-increment/target-newtarget.js b/test/language/expressions/prefix-increment/target-newtarget.js index cbf7a4e9c7290b38f79b760018600d54e24e23ee..5bb720df9d4eebde9fc672514b612b8b3e326294 100644 --- a/test/language/expressions/prefix-increment/target-newtarget.js +++ b/test/language/expressions/prefix-increment/target-newtarget.js @@ -22,6 +22,7 @@ info: | negative: phase: parse type: ReferenceError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/expressions/super/call-construct-invocation.js b/test/language/expressions/super/call-construct-invocation.js index 4b31ec43fca1532abfdcf668dee4006432f97a77..7a3f8bffa3a43c8bc3d8221b089caea9fe56996a 100644 --- a/test/language/expressions/super/call-construct-invocation.js +++ b/test/language/expressions/super/call-construct-invocation.js @@ -8,7 +8,7 @@ info: | [...] 6. Let result be ? Construct(func, argList, newTarget). [...] -features: [class, Reflect] +features: [class, new.target, Reflect, Reflect.construct] ---*/ var expectedNewTarget = function() {}; diff --git a/test/language/global-code/new.target-arrow.js b/test/language/global-code/new.target-arrow.js index 1c9c7c9bfa008948209c88764af71dbdccff9418..a39139a6aa77ef60e7d705c598c0af8d8f034f1c 100644 --- a/test/language/global-code/new.target-arrow.js +++ b/test/language/global-code/new.target-arrow.js @@ -24,7 +24,7 @@ info: | NOTE Normally, Contains does not look inside most function forms. However, Contains is used to detect new.target, this, and super usage within an ArrowFunction. -features: [arrow-function] +features: [arrow-function, new.target] negative: phase: parse type: SyntaxError diff --git a/test/language/global-code/new.target.js b/test/language/global-code/new.target.js index 85a5fdb71be1d8abe7137212c70cf699ec3c7fa7..881c35a61eb4f47f47b0b4da2d1618cf6cba6422 100644 --- a/test/language/global-code/new.target.js +++ b/test/language/global-code/new.target.js @@ -12,6 +12,7 @@ info: | negative: phase: parse type: SyntaxError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/module-code/early-new-target.js b/test/language/module-code/early-new-target.js index ac47e65b310b8291a42f877d6e809706757a30e7..9acafb7fdc8fb85dac54d65c08179320452bcb9a 100644 --- a/test/language/module-code/early-new-target.js +++ b/test/language/module-code/early-new-target.js @@ -8,6 +8,7 @@ flags: [module] negative: phase: parse type: SyntaxError +features: [new.target] ---*/ throw "Test262: This statement should not be evaluated."; diff --git a/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js b/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js index f78cdd02686f36c21f3219635308fe1bd7534523..e24b3848785051551f5acb5811756e21b0f8bcdb 100644 --- a/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js +++ b/test/language/statements/class/fields-direct-eval-err-contains-newtarget.js @@ -4,7 +4,7 @@ /*--- description: error if `new.target` in StatementList of eval (direct eval) esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public] +features: [class, class-fields-public, new.target] flags: [generated] info: | Additional Early Error Rules for Eval Inside Initializer diff --git a/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js b/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js index 84de701471d30fcc4a328c9a56bdc08cd57812a0..fb408f497d793c672f21cf8665f88228239209ba 100644 --- a/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js +++ b/test/language/statements/class/fields-indirect-eval-err-contains-newtarget.js @@ -4,7 +4,7 @@ /*--- description: error if `new.target` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer -features: [class, class-fields-public] +features: [class, class-fields-public, new.target] flags: [generated] info: | Additional Early Error Rules for Eval Inside Initializer