From dd80cd2ea931f5af7acdeb8caaeb651bf1a666d5 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Thu, 10 Sep 2020 15:02:55 -0400 Subject: [PATCH] Fixup Class Elements: make templates from custom V8 tests --- .../eval-contains-superproperty-1.case | 2 ++ .../eval-contains-superproperty-2.case | 2 ++ .../eval-err-contains-arguments.case | 2 ++ .../eval-err-contains-newtarget.case | 2 ++ .../eval-err-contains-supercall-1.case | 2 ++ .../eval-err-contains-supercall-2.case | 2 ++ .../eval-err-contains-supercall.case | 2 ++ .../cls-decl-fields-arrow-fnc-nested.template | 20 ++++++++++++++ .../cls-decl-fields-comp-name-nested.template | 18 +++++++++++++ .../cls-decl-fields-equality-nested.template | 17 ++++++++++++ ...s-decl-fields-literal-name-nested.template | 17 ++++++++++++ ...l-fields-private-arrow-fnc-nested.template | 22 ++++++++++++++++ ...s-decl-fields-private-name-nested.template | 17 ++++++++++++ ...ecl-fields-private-ternary-nested.template | 17 ++++++++++++ ...decl-fields-private-typeof-nested.template | 17 ++++++++++++ ...cl-fields-static-comp-name-nested.template | 18 +++++++++++++ ...fields-static-literal-name-nested.template | 17 ++++++++++++ ...fields-static-private-name-nested.template | 17 ++++++++++++ ...static-string-literal-name-nested.template | 17 ++++++++++++ ...fields-string-literal-name-nested.template | 17 ++++++++++++ .../cls-decl-fields-ternary-nested.template | 17 ++++++++++++ .../cls-decl-fields-typeof-nested.template | 17 ++++++++++++ .../cls-expr-fields-arrow-fnc-nested.template | 20 ++++++++++++++ .../cls-expr-fields-comp-name-nested.template | 18 +++++++++++++ .../cls-expr-fields-equality-nested.template | 17 ++++++++++++ ...s-expr-fields-literal-name-nested.template | 17 ++++++++++++ ...r-fields-private-arrow-fnc-nested.template | 20 ++++++++++++++ ...s-expr-fields-private-name-nested.template | 17 ++++++++++++ ...xpr-fields-private-ternary-nested.template | 17 ++++++++++++ ...expr-fields-private-typeof-nested.template | 17 ++++++++++++ ...pr-fields-static-comp-name-nested.template | 18 +++++++++++++ ...fields-static-literal-name-nested.template | 17 ++++++++++++ ...fields-static-private-name-nested.template | 17 ++++++++++++ ...static-string-literal-name-nested.template | 17 ++++++++++++ ...fields-string-literal-name-nested.template | 17 ++++++++++++ .../cls-expr-fields-ternary-nested.template | 17 ++++++++++++ .../cls-expr-fields-typeof-nested.template | 17 ++++++++++++ .../cls-decl-fields-eval-arrow-body.template | 20 ++++++++++++++ .../cls-decl-fields-eval-nested.template | 23 ++++++++++++++++ ...l-fields-indirect-eval-arrow-body.template | 18 +++++++++++++ ...-decl-fields-indirect-eval-nested.template | 23 ++++++++++++++++ ...cl-private-fields-eval-arrow-body.template | 23 ++++++++++++++++ ...s-decl-private-fields-eval-nested.template | 26 +++++++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 20 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 20 ++++++++++++++ .../cls-expr-fields-eval-arrow-body.template | 20 ++++++++++++++ .../cls-expr-fields-eval-nested.template | 23 ++++++++++++++++ ...r-fields-indirect-eval-arrow-body.template | 17 ++++++++++++ ...-expr-fields-indirect-eval-nested.template | 20 ++++++++++++++ ...pr-private-fields-eval-arrow-body.template | 20 ++++++++++++++ ...s-expr-private-fields-eval-nested.template | 23 ++++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 20 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 23 ++++++++++++++++ .../cls-decl-fields-eval-arrow-body.template | 19 ++++++++++++++ .../cls-decl-fields-eval-nested.template | 19 ++++++++++++++ ...l-fields-indirect-eval-arrow-body.template | 18 +++++++++++++ ...-decl-fields-indirect-eval-nested.template | 20 ++++++++++++++ ...cl-private-fields-eval-arrow-body.template | 22 ++++++++++++++++ ...s-decl-private-fields-eval-nested.template | 19 ++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 18 +++++++++++++ ...ivate-fields-indirect-eval-nested.template | 20 ++++++++++++++ .../cls-expr-fields-eval-arrow-body.template | 19 ++++++++++++++ .../cls-expr-fields-eval-nested.template | 19 ++++++++++++++ ...r-fields-indirect-eval-arrow-body.template | 18 +++++++++++++ ...-expr-fields-indirect-eval-nested.template | 20 ++++++++++++++ ...pr-private-fields-eval-arrow-body.template | 22 ++++++++++++++++ ...s-expr-private-fields-eval-nested.template | 19 ++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 18 +++++++++++++ ...ivate-fields-indirect-eval-nested.template | 20 ++++++++++++++ .../cls-decl-fields-eval-arrow-body.template | 21 +++++++++++++++ .../cls-decl-fields-eval-nested.template | 21 +++++++++++++++ ...l-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...-decl-fields-indirect-eval-nested.template | 21 +++++++++++++++ ...cl-private-fields-eval-arrow-body.template | 21 +++++++++++++++ ...s-decl-private-fields-eval-nested.template | 21 +++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 21 +++++++++++++++ .../cls-expr-fields-eval-arrow-body.template | 21 +++++++++++++++ .../cls-expr-fields-eval-nested.template | 21 +++++++++++++++ ...r-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...-expr-fields-indirect-eval-nested.template | 21 +++++++++++++++ ...pr-private-fields-eval-arrow-body.template | 21 +++++++++++++++ ...s-expr-private-fields-eval-nested.template | 21 +++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 21 +++++++++++++++ .../cls-decl-fields-eval-arrow-body.template | 18 +++++++++++++ .../cls-decl-fields-eval-nested.template | 18 +++++++++++++ ...l-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...-decl-fields-indirect-eval-nested.template | 21 +++++++++++++++ ...cl-private-fields-eval-arrow-body.template | 22 ++++++++++++++++ ...s-decl-private-fields-eval-nested.template | 19 ++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 21 +++++++++++++++ .../cls-expr-fields-eval-arrow-body.template | 19 ++++++++++++++ .../cls-expr-fields-eval-nested.template | 19 ++++++++++++++ ...r-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...-expr-fields-indirect-eval-nested.template | 21 +++++++++++++++ ...pr-private-fields-eval-arrow-body.template | 22 ++++++++++++++++ ...s-expr-private-fields-eval-nested.template | 19 ++++++++++++++ ...e-fields-indirect-eval-arrow-body.template | 19 ++++++++++++++ ...ivate-fields-indirect-eval-nested.template | 21 +++++++++++++++ 101 files changed, 1835 insertions(+) create mode 100644 src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-equality-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template create mode 100644 src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-equality-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template create mode 100644 src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template create mode 100644 src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template diff --git a/src/class-elements/eval-contains-superproperty-1.case b/src/class-elements/eval-contains-superproperty-1.case index d48cb06b70..17e55b119c 100644 --- a/src/class-elements/eval-contains-superproperty-1.case +++ b/src/class-elements/eval-contains-superproperty-1.case @@ -22,3 +22,5 @@ template: initializer-eval-super-property //- initializer super.x +//- arrow-body +() => super.x diff --git a/src/class-elements/eval-contains-superproperty-2.case b/src/class-elements/eval-contains-superproperty-2.case index 90de48b115..5b8591be51 100644 --- a/src/class-elements/eval-contains-superproperty-2.case +++ b/src/class-elements/eval-contains-superproperty-2.case @@ -19,3 +19,5 @@ template: initializer-eval-super-property //- initializer super['x'] +//- arrow-body +() => super['x'] diff --git a/src/class-elements/eval-err-contains-arguments.case b/src/class-elements/eval-err-contains-arguments.case index 9f3b661fd5..c20b23f25a 100644 --- a/src/class-elements/eval-err-contains-arguments.case +++ b/src/class-elements/eval-err-contains-arguments.case @@ -23,6 +23,8 @@ template: initializer-eval-arguments //- initializer arguments +//- arrow-body +() => arguments //- earlyerror SyntaxError //- executionerror diff --git a/src/class-elements/eval-err-contains-newtarget.case b/src/class-elements/eval-err-contains-newtarget.case index deb2e6c4f0..3c63791cc8 100644 --- a/src/class-elements/eval-err-contains-newtarget.case +++ b/src/class-elements/eval-err-contains-newtarget.case @@ -23,6 +23,8 @@ template: initializer-eval-newtarget //- initializer new.target +//- arrow-body +() => new.target //- earlyerror SyntaxError //- executionerror diff --git a/src/class-elements/eval-err-contains-supercall-1.case b/src/class-elements/eval-err-contains-supercall-1.case index e1a5370b03..c54080b93b 100644 --- a/src/class-elements/eval-err-contains-supercall-1.case +++ b/src/class-elements/eval-err-contains-supercall-1.case @@ -23,6 +23,8 @@ template: initializer-eval-super-call //- initializer super()['x'] +//- arrow-body +() => super()['x'] //- earlyerror SyntaxError //- executionerror diff --git a/src/class-elements/eval-err-contains-supercall-2.case b/src/class-elements/eval-err-contains-supercall-2.case index 0d0f937089..cc7c2b685f 100644 --- a/src/class-elements/eval-err-contains-supercall-2.case +++ b/src/class-elements/eval-err-contains-supercall-2.case @@ -16,6 +16,8 @@ template: initializer-eval-super-call //- initializer super().x +//- arrow-body +() => super().x //- earlyerror SyntaxError //- executionerror diff --git a/src/class-elements/eval-err-contains-supercall.case b/src/class-elements/eval-err-contains-supercall.case index 89a012780c..bea8b48d9d 100644 --- a/src/class-elements/eval-err-contains-supercall.case +++ b/src/class-elements/eval-err-contains-supercall.case @@ -23,6 +23,8 @@ template: initializer-eval-super-call //- initializer super() +//- arrow-body +() => super() //- earlyerror SyntaxError //- executionerror diff --git a/src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template b/src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template new file mode 100644 index 0000000000..2267edb088 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-arrow-fnc- +name: arrow function expression +features: [arrow-function, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => { + var t = () => /*{ initializer }*/; + } +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template new file mode 100644 index 0000000000..85fbbe1a1a --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-comp-name- +name: computed ClassElementName +features: [class, class-fields-public, computed-property-names] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var x = "string"; +class C { + [x] = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-equality-nested.template b/src/class-elements/initializer-error/cls-decl-fields-equality-nested.template new file mode 100644 index 0000000000..4b733a8775 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-equality-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-equality- +name: equality expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + x = () => {} == /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template new file mode 100644 index 0000000000..95e339d6dc --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-literal-name- +name: literal ClassElementName +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template b/src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template new file mode 100644 index 0000000000..bcb7c7e7ac --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-private-arrow-fnc- +name: private field, arrow function expression +features: [class, arrow-function, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => { + var t = () => /*{ initializer }*/; + t(); + } +} + diff --git a/src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template new file mode 100644 index 0000000000..e922e7fab3 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-private-literal-name- +name: ClassElementName PrivateName +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + #x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template b/src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template new file mode 100644 index 0000000000..0dc1766804 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-private-ternary- +name: private field, ternary expression +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + #x = () => false ? {} : /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template b/src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template new file mode 100644 index 0000000000..dca0fb1b38 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-private-typeof- +name: private field, typeof expression +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + #x = () => typeof /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template new file mode 100644 index 0000000000..acaae51533 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-static-comp-name- +name: static computed ClassElementName +features: [class, class-static-fields-public, computed-property-names] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var x = "string"; +class C { + static [x] = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template new file mode 100644 index 0000000000..6fc8b1674d --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-static-literal- +name: static literal ClassElementName +features: [class, class-static-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + static x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template new file mode 100644 index 0000000000..814456aa79 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-static-private- +name: static PrivateName +features: [class, class-static-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + static #x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template new file mode 100644 index 0000000000..04abead8bb --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-static-string-literal-name- +name: static string literal ClassElementName +features: [class, class-static-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + static 'x' = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template b/src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template new file mode 100644 index 0000000000..c30baae998 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-string-literal-name- +name: string literal ClassElementName +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + 'x' = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template b/src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template new file mode 100644 index 0000000000..bc24c8fd44 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-ternary- +name: ternary expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + x = () => false ? {} : /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template b/src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template new file mode 100644 index 0000000000..e537b55288 --- /dev/null +++ b/src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/statements/class/elements/nested-typeof- +name: typeof expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +class C { + x = () => typeof /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template b/src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template new file mode 100644 index 0000000000..3216da6e2e --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-arrow-fnc- +name: arrow function expression +features: [arrow-function, class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => { + var t = () => /*{ initializer }*/; + } +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template new file mode 100644 index 0000000000..d40f2b4962 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-comp-name- +name: computed ClassElementName +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + [x] = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-equality-nested.template b/src/class-elements/initializer-error/cls-expr-fields-equality-nested.template new file mode 100644 index 0000000000..0785ba5e37 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-equality-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-equality- +name: equality expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + x = () => {} == /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template new file mode 100644 index 0000000000..a075a19cf4 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-literal-name- +name: literal ClassElementName +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template b/src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template new file mode 100644 index 0000000000..aac7604dfa --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-private-arrow-fnc- +name: private field, arrow function expression +features: [class, arrow-function, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => { + var t = () => /*{ initializer }*/; + } +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template new file mode 100644 index 0000000000..807fcd565e --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-private-literal-name- +name: ClassElementName PrivateName +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + #x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template b/src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template new file mode 100644 index 0000000000..3526c0bccd --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-private-ternary- +name: private field, ternary expression +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + #x = () => true ? {} : /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template b/src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template new file mode 100644 index 0000000000..1028b926bd --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-private-typeof- +name: private field, typeof expression +features: [class, class-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + #x = () => typeof /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template new file mode 100644 index 0000000000..1b006f627b --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-static-comp-name- +name: static computed ClassElementName +features: [class, class-static-fields-public, computed-property-names] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + static [x] = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template new file mode 100644 index 0000000000..d0e13c6206 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-static-literal- +name: static literal ClassElementName +features: [class, class-static-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + static x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template new file mode 100644 index 0000000000..a828bb8a51 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-static-private- +name: static PrivateName +features: [class, class-static-fields-private] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + static #x = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template new file mode 100644 index 0000000000..dd57e70598 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-static-string-literal-name- +name: static string literal ClassElementName +features: [class, class-static-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + static 'x' = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template b/src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template new file mode 100644 index 0000000000..b878d66d8a --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-string-literal-name- +name: string literal ClassElementName +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + 'x' = () => /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template b/src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template new file mode 100644 index 0000000000..bcc1471c72 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-ternary- +name: ternary expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + x = () => true ? {} : /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template b/src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template new file mode 100644 index 0000000000..80fbce6ba9 --- /dev/null +++ b/src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-class-definitions-static-semantics-early-errors +path: language/expressions/class/elements/nested-typeof- +name: typeof expression +features: [class, class-fields-public] +negative: + type: SyntaxError + phase: parse +---*/ +$DONOTEVALUATE(); + +var C = class { + x = () => typeof /*{ initializer }*/; +} diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template new file mode 100644 index 0000000000..266d8bd217 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template new file mode 100644 index 0000000000..1ab32c8f0d --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = () => { + var t = () => { eval('executed = true; /*{ initializer }*/;'); }; + t(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..2fc97200de --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +class C { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..fa567964af --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = () => { + var t = () => { (0, eval)('executed = true; /*{ initializer }*/;'); }; + t(); + } +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..7f2849d465 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ arrow-body }*/;'); + constructor() { + this.#x(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template new file mode 100644 index 0000000000..588941001f --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template @@ -0,0 +1,26 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = () => { + var t = () => { eval('executed = true; /*{ initializer }*/;'); }; + t(); + } + constructor() { + this.#x(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..79ce9f5c03 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +class C { + #x = (0, eval)('/*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); diff --git a/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..f5cd0955bf --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +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-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template new file mode 100644 index 0000000000..e5705d0025 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +let executed = false; +let C = class { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template new file mode 100644 index 0000000000..b151383971 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +let executed = false; +let C = class { + x = () => { + let f = eval('executed = true; /*{ initializer }*/;'); + f(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..cefc0fa1ae --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template @@ -0,0 +1,17 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var C = class { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..eb7b280b7d --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var C = class { + x = () => (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..b3ddc1659d --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var C = class { + #x = eval('/*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template new file mode 100644 index 0000000000..a708eb6b26 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = () => eval('executed = true; /*{ initializer }*/;'); + x() { + this.#x(); + } +} + +assert.throws(/*{ earlyerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..32b15b1694 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var C = class { + #x = (0, eval)('/*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); diff --git a/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..c93a76c187 --- /dev/null +++ b/src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template @@ -0,0 +1,23 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = () => (0, eval)('executed = true; /*{ initializer }*/;'); + x() { + this.#x(); + } +} + +assert.throws(/*{ executionerror }*/, function() { + new C().x(); +}); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template new file mode 100644 index 0000000000..e820373055 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template new file mode 100644 index 0000000000..46e0af9987 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..72c0db8aa6 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +class C { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..437f4b9a05 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class C { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..64b7b39349 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template new file mode 100644 index 0000000000..0ad55c47c2 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..a53a68eb3e --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +class C { + #x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..7673ae9740 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class C { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template new file mode 100644 index 0000000000..de40f11e54 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var C = class { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template new file mode 100644 index 0000000000..36ec2dedab --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var C = class { + x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..46724b7d6c --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var C = class { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..9825d40cc5 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var C = class { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..42785dae63 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = eval('executed = true; /*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template new file mode 100644 index 0000000000..388dedd1be --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..24696a4b57 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var C = class { + #x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..34d2ff3913 --- /dev/null +++ b/src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template @@ -0,0 +1,20 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var C = class { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template new file mode 100644 index 0000000000..7d7033aa61 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template new file mode 100644 index 0000000000..985e2e10ce --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..b7b56f4033 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +class A {} +class C extends A { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..46b95435e2 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..5fc855f4df --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template new file mode 100644 index 0000000000..33edfc49da --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..285a225017 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +class A {} +class C extends A { + #x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..296477ce56 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template new file mode 100644 index 0000000000..bdb25ce173 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template new file mode 100644 index 0000000000..1620bee008 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..5cebcc685c --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var A = class {} +var C = class extends A { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..aa640873aa --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..4a793beac2 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template new file mode 100644 index 0000000000..2b430ac402 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..651e3d5069 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var A = class {} +var C = class extends A { + #x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..87744fd383 --- /dev/null +++ b/src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template new file mode 100644 index 0000000000..6645c7d05b --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; /*{ arrow-body }*/;'); +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template new file mode 100644 index 0000000000..9f1bd5c728 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template @@ -0,0 +1,18 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-direct- +name: direct eval +---*/ + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; /*{ initializer }*/;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..b7b56f4033 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +class A {} +class C extends A { + x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..46b95435e2 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..42e6ac8ca5 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ arrow-body }*/;'); + x() { + this.#x(); + } +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template new file mode 100644 index 0000000000..f9c78734a1 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..285a225017 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +class A {} +class C extends A { + #x = (0, eval)('/*{ arrow-body }*/;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..296477ce56 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template new file mode 100644 index 0000000000..e8793bb0c7 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; /*{ arrow-body }*/;'); +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template new file mode 100644 index 0000000000..5cd2ea1d23 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-direct- +name: direct eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; /*{ initializer }*/;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..7c36d7c85e --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var A = class {} +var C = class extends A { + x = (0, eval)('/*{ arrow-body }*/;'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..a85a67c750 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-public] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; /*{ initializer }*/;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template new file mode 100644 index 0000000000..c7b00c62b7 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ arrow-body }*/;'); + x() { + this.#x(); + } +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template new file mode 100644 index 0000000000..5d46fec696 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-direct- +name: direct eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; /*{ initializer }*/;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template new file mode 100644 index 0000000000..2b3a2cb015 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template @@ -0,0 +1,19 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/arrow-body-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var A = class {} +var C = class extends A { + #x = (0, eval)('/*{ arrow-body }*/;'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template new file mode 100644 index 0000000000..bda24bd662 --- /dev/null +++ b/src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template @@ -0,0 +1,21 @@ +// Copyright (C) 2020 Rick Waldron. 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/elements/nested-private-derived-cls-indirect- +name: indirect eval +features: [class, class-fields-private] +---*/ + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; /*{ initializer }*/;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false);