summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/class-fields/eval-err-contains-arguments.case29
-rw-r--r--src/class-fields/eval-err-contains-newcall.case28
-rw-r--r--src/class-fields/eval-err-contains-supercall-1.case28
-rw-r--r--src/class-fields/eval-err-contains-supercall-2.case28
-rw-r--r--src/class-fields/eval-err-contains-supercall.case28
-rw-r--r--src/class-fields/eval-err-contains-superproperty-1.case28
-rw-r--r--src/class-fields/eval-err-contains-superproperty-2.case28
-rw-r--r--src/class-fields/initializer-eval-super/cls-decl-fields-eval.template21
-rw-r--r--src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template21
-rw-r--r--src/class-fields/initializer-eval-super/cls-expr-fields-eval.template21
-rw-r--r--src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template21
-rw-r--r--src/class-fields/initializer-eval/cls-decl-fields-eval.template19
-rw-r--r--src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template19
-rw-r--r--src/class-fields/initializer-eval/cls-expr-fields-eval.template19
-rw-r--r--src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template19
-rw-r--r--test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js37
-rw-r--r--test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js37
-rw-r--r--test/language/expressions/class/fields-direct-eval-err-contains-arguments.js36
-rw-r--r--test/language/expressions/class/fields-direct-eval-err-contains-newcall.js35
-rw-r--r--test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js36
-rw-r--r--test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js35
-rw-r--r--test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js37
-rw-r--r--test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js37
-rw-r--r--test/language/statements/class/fields-direct-eval-err-contains-arguments.js36
-rw-r--r--test/language/statements/class/fields-direct-eval-err-contains-newcall.js35
-rw-r--r--test/language/statements/class/fields-indirect-eval-err-contains-arguments.js36
-rw-r--r--test/language/statements/class/fields-indirect-eval-err-contains-newcall.js35
43 files changed, 1381 insertions, 0 deletions
diff --git a/src/class-fields/eval-err-contains-arguments.case b/src/class-fields/eval-err-contains-arguments.case
new file mode 100644
index 000000000..7cf7fd2c6
--- /dev/null
+++ b/src/class-fields/eval-err-contains-arguments.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `arguments` in StatementList of eval
+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
+
+ It is a Syntax Error if ContainsArguments of StatementList is true.
+ ...
+
+ Static Semantics: ContainsArguments
+ IdentifierReference : Identifier
+
+ 1. If the StringValue of Identifier is "arguments", return true.
+ ...
+ For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+features: [class-fields]
+template: initializer-eval
+---*/
+
+//- initializer
+arguments
+//- earlyerror
+SyntaxError
+//- executionerror
+ReferenceError
diff --git a/src/class-fields/eval-err-contains-newcall.case b/src/class-fields/eval-err-contains-newcall.case
new file mode 100644
index 000000000..3b8eed5bc
--- /dev/null
+++ b/src/class-fields/eval-err-contains-newcall.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `new.call` in StatementList of eval
+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 Functions
+ These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+ ScriptBody:StatementList
+
+ It is a Syntax Error if StatementList Contains NewTarget.
+features: [class-fields]
+template: initializer-eval
+---*/
+
+//- initializer
+new.call
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/eval-err-contains-supercall-1.case b/src/class-fields/eval-err-contains-supercall-1.case
new file mode 100644
index 000000000..eaabad6eb
--- /dev/null
+++ b/src/class-fields/eval-err-contains-supercall-1.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `super()` in StatementList of eval
+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.
+features: [class-fields]
+template: initializer-eval-super
+---*/
+
+//- initializer
+super()
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/eval-err-contains-supercall-2.case b/src/class-fields/eval-err-contains-supercall-2.case
new file mode 100644
index 000000000..45166f164
--- /dev/null
+++ b/src/class-fields/eval-err-contains-supercall-2.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `super().x` in StatementList of eval
+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 SuperCall.
+features: [class-fields]
+template: initializer-eval-super
+---*/
+
+//- initializer
+super().x
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/eval-err-contains-supercall.case b/src/class-fields/eval-err-contains-supercall.case
new file mode 100644
index 000000000..eaabad6eb
--- /dev/null
+++ b/src/class-fields/eval-err-contains-supercall.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `super()` in StatementList of eval
+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.
+features: [class-fields]
+template: initializer-eval-super
+---*/
+
+//- initializer
+super()
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/eval-err-contains-superproperty-1.case b/src/class-fields/eval-err-contains-superproperty-1.case
new file mode 100644
index 000000000..7af5c8144
--- /dev/null
+++ b/src/class-fields/eval-err-contains-superproperty-1.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `super().x` in StatementList of eval
+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.
+features: [class-fields]
+template: initializer-eval-super
+---*/
+
+//- initializer
+super.x
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/eval-err-contains-superproperty-2.case b/src/class-fields/eval-err-contains-superproperty-2.case
new file mode 100644
index 000000000..21a3db544
--- /dev/null
+++ b/src/class-fields/eval-err-contains-superproperty-2.case
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+desc: error if `super().x` in StatementList of eval
+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.
+features: [class-fields]
+template: initializer-eval-super
+---*/
+
+//- initializer
+super['x']
+//- earlyerror
+SyntaxError
+//- executionerror
+SyntaxError
diff --git a/src/class-fields/initializer-eval-super/cls-decl-fields-eval.template b/src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
new file mode 100644
index 000000000..101cf30b3
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = eval('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
new file mode 100644
index 000000000..9d77186bf
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval-super/cls-expr-fields-eval.template b/src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
new file mode 100644
index 000000000..39597e880
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-direct-
+name: direct eval
+---*/
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = eval('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
new file mode 100644
index 000000000..86db54edb
--- /dev/null
+++ b/src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-derived-cls-indirect-
+name: indirect eval
+---*/
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; /*{ initializer }*/;';
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval/cls-decl-fields-eval.template b/src/class-fields/initializer-eval/cls-decl-fields-eval.template
new file mode 100644
index 000000000..ed721afeb
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-decl-fields-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-direct-
+name: direct eval
+---*/
+
+var executed = false;
+class C = {
+ x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template
new file mode 100644
index 000000000..11aa34d0d
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/statements/class/fields-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+class C = {
+ x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/src/class-fields/initializer-eval/cls-expr-fields-eval.template b/src/class-fields/initializer-eval/cls-expr-fields-eval.template
new file mode 100644
index 000000000..9915d0d09
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-expr-fields-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-direct-
+name: direct eval
+---*/
+
+var executed = false;
+C = class {
+ x = eval('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ earlyerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template b/src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template
new file mode 100644
index 000000000..d04a83dfb
--- /dev/null
+++ b/src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 Valerie Young. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-performeval-rules-in-initializer
+path: language/expressions/class/fields-indirect-
+name: indirect eval
+---*/
+
+var executed = false;
+C = class {
+ x = (0, eval)('executed = true; /*{ initializer }*/;');
+}
+
+assert.throws(/*{ executionerror }*/, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 000000000..2ac84d65d
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-1.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 000000000..ba1add291
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-2.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 SuperCall.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 000000000..4b756296a
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js
new file mode 100644
index 000000000..123a7ecf7
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-1.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js
new file mode 100644
index 000000000..7292046b2
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-2.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+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-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 000000000..32f015132
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-1.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; super();';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js
new file mode 100644
index 000000000..26e1d6702
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-2.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 SuperCall.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; super().x;';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js
new file mode 100644
index 000000000..b7f6593de
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; super();';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js
new file mode 100644
index 000000000..86e433818
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-1.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; super.x;';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js
new file mode 100644
index 000000000..51c2fdec2
--- /dev/null
+++ b/test/language/expressions/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-2.case
+// - src/class-fields/initializer-eval-super/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+A = class {}
+
+var executed = false;
+C = class extends A {
+ x = (0, eval)('executed = true; super["x"];';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js b/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js
new file mode 100644
index 000000000..605db5f14
--- /dev/null
+++ b/test/language/expressions/class/fields-direct-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-arguments.case
+// - src/class-fields/initializer-eval/cls-expr-fields-eval.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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
+
+ It is a Syntax Error if ContainsArguments of StatementList is true.
+ ...
+
+ Static Semantics: ContainsArguments
+ IdentifierReference : Identifier
+
+ 1. If the StringValue of Identifier is "arguments", return true.
+ ...
+ For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+C = class {
+ x = eval('executed = true; arguments;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/test/language/expressions/class/fields-direct-eval-err-contains-newcall.js b/test/language/expressions/class/fields-direct-eval-err-contains-newcall.js
new file mode 100644
index 000000000..95409dabd
--- /dev/null
+++ b/test/language/expressions/class/fields-direct-eval-err-contains-newcall.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-newcall.case
+// - src/class-fields/initializer-eval/cls-expr-fields-eval.template
+/*---
+description: error if `new.call` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 Functions
+ These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+ ScriptBody:StatementList
+
+ It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+C = class {
+ x = eval('executed = true; new.call;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js
new file mode 100644
index 000000000..6840d4d44
--- /dev/null
+++ b/test/language/expressions/class/fields-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-arguments.case
+// - src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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
+
+ It is a Syntax Error if ContainsArguments of StatementList is true.
+ ...
+
+ Static Semantics: ContainsArguments
+ IdentifierReference : Identifier
+
+ 1. If the StringValue of Identifier is "arguments", return true.
+ ...
+ For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+C = class {
+ x = (0, eval)('executed = true; arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js b/test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js
new file mode 100644
index 000000000..6ed17f4b5
--- /dev/null
+++ b/test/language/expressions/class/fields-indirect-eval-err-contains-newcall.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-newcall.case
+// - src/class-fields/initializer-eval/cls-expr-fields-indirect-eval.template
+/*---
+description: error if `new.call` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 Functions
+ These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+ ScriptBody:StatementList
+
+ It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+C = class {
+ x = (0, eval)('executed = true; new.call;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js
new file mode 100644
index 000000000..b31233318
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-1.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js
new file mode 100644
index 000000000..b969e3860
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-2.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 SuperCall.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js
new file mode 100644
index 000000000..bfd7dce28
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-supercall.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
+/*---
+description: error if `super()` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-superproperty-1.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js
new file mode 100644
index 000000000..d9b803b3e
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-1.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+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-derived-cls-direct-eval-err-contains-superproperty-2.js b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js
new file mode 100644
index 000000000..bd0e0509b
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-direct-eval-err-contains-superproperty-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-2.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+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-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js
new file mode 100644
index 000000000..27887d1f0
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-1.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; super();';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
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
new file mode 100644
index 000000000..8e6957dc2
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall-2.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 SuperCall.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; super().x;';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
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
new file mode 100644
index 000000000..047c0b95c
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-supercall.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-supercall.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `super()` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; super();';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
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
new file mode 100644
index 000000000..b701e5f70
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-1.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-1.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; super.x;';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
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
new file mode 100644
index 000000000..5d35bff3e
--- /dev/null
+++ b/test/language/statements/class/fields-derived-cls-indirect-eval-err-contains-superproperty-2.js
@@ -0,0 +1,37 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-superproperty-2.case
+// - src/class-fields/initializer-eval-super/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `super().x` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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.
+
+---*/
+
+
+class A = {}
+
+var executed = false;
+class C extends A = {
+ x = (0, eval)('executed = true; super["x"];';
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/statements/class/fields-direct-eval-err-contains-arguments.js b/test/language/statements/class/fields-direct-eval-err-contains-arguments.js
new file mode 100644
index 000000000..1c231db01
--- /dev/null
+++ b/test/language/statements/class/fields-direct-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-arguments.case
+// - src/class-fields/initializer-eval/cls-decl-fields-eval.template
+/*---
+description: error if `arguments` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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
+
+ It is a Syntax Error if ContainsArguments of StatementList is true.
+ ...
+
+ Static Semantics: ContainsArguments
+ IdentifierReference : Identifier
+
+ 1. If the StringValue of Identifier is "arguments", return true.
+ ...
+ For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C = {
+ x = eval('executed = true; arguments;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/test/language/statements/class/fields-direct-eval-err-contains-newcall.js b/test/language/statements/class/fields-direct-eval-err-contains-newcall.js
new file mode 100644
index 000000000..ebdac9dfd
--- /dev/null
+++ b/test/language/statements/class/fields-direct-eval-err-contains-newcall.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-newcall.case
+// - src/class-fields/initializer-eval/cls-decl-fields-eval.template
+/*---
+description: error if `new.call` in StatementList of eval (direct eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 Functions
+ These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+ ScriptBody:StatementList
+
+ It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C = {
+ x = eval('executed = true; new.call;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, false);
diff --git a/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js b/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js
new file mode 100644
index 000000000..49a050456
--- /dev/null
+++ b/test/language/statements/class/fields-indirect-eval-err-contains-arguments.js
@@ -0,0 +1,36 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-arguments.case
+// - src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `arguments` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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
+
+ It is a Syntax Error if ContainsArguments of StatementList is true.
+ ...
+
+ Static Semantics: ContainsArguments
+ IdentifierReference : Identifier
+
+ 1. If the StringValue of Identifier is "arguments", return true.
+ ...
+ For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
+
+---*/
+
+
+var executed = false;
+class C = {
+ x = (0, eval)('executed = true; arguments;');
+}
+
+assert.throws(ReferenceError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);
diff --git a/test/language/statements/class/fields-indirect-eval-err-contains-newcall.js b/test/language/statements/class/fields-indirect-eval-err-contains-newcall.js
new file mode 100644
index 000000000..af595ddd1
--- /dev/null
+++ b/test/language/statements/class/fields-indirect-eval-err-contains-newcall.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/class-fields/eval-err-contains-newcall.case
+// - src/class-fields/initializer-eval/cls-decl-fields-indirect-eval.template
+/*---
+description: error if `new.call` in StatementList of eval (indirect eval)
+esid: sec-performeval-rules-in-initializer
+features: [class-fields]
+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 Functions
+ These static semantics are applied by PerformEval when a direct eval call occurs outside of any function.
+ ScriptBody:StatementList
+
+ It is a Syntax Error if StatementList Contains NewTarget.
+
+---*/
+
+
+var executed = false;
+class C = {
+ x = (0, eval)('executed = true; new.call;');
+}
+
+assert.throws(SyntaxError, function() {
+ new C();
+});
+
+assert.sameValue(executed, true);