diff --git a/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000000000000000000000000000000000..17351e3ac109429e7586af74d1fdaced9b998b2c --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-1.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000000000000000000000000000000000..6c079ff81e4818b4bac1b19e9fde7b67f1df6955 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-2.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000000000000000000000000000000000..5e4364c58cd5e7c8d5e2b81f5dee46b6934bc53a --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-eval.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js new file mode 100644 index 0000000000000000000000000000000000000000..9bcac948c18c461d17e33c92ade2c429ceb7f73c --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-1.case +// - src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template +/*--- +description: error if `super.x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super.x;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js new file mode 100644 index 0000000000000000000000000000000000000000..0afe73ea33ddc80899f484589e3831ac10f986b9 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-2.case +// - src/class-fields/initializer-eval-super-property/cls-expr-private-fields-eval.template +/*--- +description: error if super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super["x"];'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000000000000000000000000000000000..f4532dc6ac5bea7efeb648c1d6a0b649367d0019 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-1.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000000000000000000000000000000000..cb9d794e6e4f2cd36e30715b95b3bb01c21ca4e6 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-2.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000000000000000000000000000000000..9727b8b82e0ad999e2cac779ca97f293411596a7 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall.case +// - src/class-fields/initializer-eval-super-call/cls-expr-private-fields-indirect-eval.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js new file mode 100644 index 0000000000000000000000000000000000000000..91ea12f15bd23db416ba129213d5589b3c186e73 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-1.case +// - src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template +/*--- +description: error if `super.x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super.x;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js new file mode 100644 index 0000000000000000000000000000000000000000..680bba0434496b06e4b46157c8473490a1129c76 --- /dev/null +++ b/test/language/expressions/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-2.case +// - src/class-fields/initializer-eval-super-property/cls-expr-private-fields-indirect-eval.template +/*--- +description: error if super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super["x"];'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js index a8375776cefdf77981daaf635751a81d6d51ef1f..899f3e41b3141af8646238685ae5e238a037dce5 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-1.case -// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- description: error if `super()['x']` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -26,7 +26,7 @@ info: | var executed = false; class A {} class C extends A { - #x = (0, eval)('executed = true; super()["x"];'); + x = (0, eval)('executed = true; super()["x"];'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js index 586a59e3b0a43f53e19ddfb4821e25966cd5ac9a..157a843836feb595b1e1f32db9b74e828fd1eaf8 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall-2.case -// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- description: error if `super().x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -19,7 +19,7 @@ info: | var executed = false; class A {} class C extends A { - #x = (0, eval)('executed = true; super().x;'); + x = (0, eval)('executed = true; super().x;'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js index d4999d75dfd597042a43abdb70132543b9ba56b4..605c574ec3cf56956d73028d561a696f9851cb70 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-supercall.case -// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-call/cls-decl-fields-indirect-eval.template /*--- description: error if `super()` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -26,7 +26,7 @@ info: | var executed = false; class A {} class C extends A { - #x = (0, eval)('executed = true; super();'); + x = (0, eval)('executed = true; super();'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js index ddeafb7253201841e93eef563a3c8acbf3231bba..222abc22f6ec520a5832a90e0b994c9a85750cd9 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-1.case -// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template /*--- description: error if `super.x` in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -26,7 +26,7 @@ info: | var executed = false; class A {} class C extends A { - #x = (0, eval)('executed = true; super.x;'); + x = (0, eval)('executed = true; super.x;'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js index 2ed9f8c6a1a158ba01c4737a942c0f75842dc8cd..cb54407062b210f5b8c55c7c31712246776729ca 100644 --- a/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js +++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/class-fields/eval-err-contains-superproperty-2.case -// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template +// - src/class-fields/initializer-eval-super-property/cls-decl-fields-indirect-eval.template /*--- description: error if super['x'] in StatementList of eval (indirect eval) esid: sec-performeval-rules-in-initializer @@ -23,7 +23,7 @@ info: | var executed = false; class A {} class C extends A { - #x = (0, eval)('executed = true; super["x"];'); + x = (0, eval)('executed = true; super["x"];'); } assert.throws(SyntaxError, function() { diff --git a/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000000000000000000000000000000000..5c6f0e3d4c20a245aed2ca4f6bfd53f3ce572edf --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-1.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000000000000000000000000000000000..200f61f7197d43e7d85970c8f2b66db7a4a44c4c --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-2.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000000000000000000000000000000000..b539515995e3d744e7fda93870d1ec715194794f --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-eval.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js new file mode 100644 index 0000000000000000000000000000000000000000..f649a7460ef7898874ee205aedb26df0c34339d6 --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-1.case +// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template +/*--- +description: error if `super.x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super.x;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js new file mode 100644 index 0000000000000000000000000000000000000000..5247e1b4a2e1a9d05ffebd620e939f62ce53bc04 --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-direct-eval-err-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-2.case +// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-eval.template +/*--- +description: error if super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super["x"];'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000000000000000000000000000000000..a8375776cefdf77981daaf635751a81d6d51ef1f --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-1.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000000000000000000000000000000000..586a59e3b0a43f53e19ddfb4821e25966cd5ac9a --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall-2.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000000000000000000000000000000000..d4999d75dfd597042a43abdb70132543b9ba56b4 --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-supercall.case +// - src/class-fields/initializer-eval-super-call/cls-decl-private-fields-indirect-eval.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js new file mode 100644 index 0000000000000000000000000000000000000000..ddeafb7253201841e93eef563a3c8acbf3231bba --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-1.case +// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template +/*--- +description: error if `super.x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super.x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js new file mode 100644 index 0000000000000000000000000000000000000000..2ed9f8c6a1a158ba01c4737a942c0f75842dc8cd --- /dev/null +++ b/test/language/statements/class/fields-private-derived-cls-indirect-eval-err-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-fields/eval-err-contains-superproperty-2.case +// - src/class-fields/initializer-eval-super-property/cls-decl-private-fields-indirect-eval.template +/*--- +description: error if super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false);