From 21cdcb85d1714cdb31ec6f7c51e2766c67838009 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 11 Sep 2020 14:48:08 -0400 Subject: [PATCH] Generate tests --- ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 34 +++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 27 ++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 34 +++++++++++++++ ...body-direct-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...body-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...dy-indirect-eval-err-contains-arguments.js | 33 +++++++++++++++ ...dy-indirect-eval-err-contains-newtarget.js | 33 +++++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 37 ++++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 34 +++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 34 +++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 27 ++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 34 +++++++++++++++ ...vate-direct-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...vate-direct-eval-err-contains-newtarget.js | 37 ++++++++++++++++ ...te-indirect-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...te-indirect-eval-err-contains-newtarget.js | 33 +++++++++++++++ ...d-arrow-fnc-init-err-contains-arguments.js | 36 ++++++++++++++++ ...ested-arrow-fnc-init-err-contains-super.js | 29 +++++++++++++ ...d-comp-name-init-err-contains-arguments.js | 34 +++++++++++++++ ...ested-comp-name-init-err-contains-super.js | 27 ++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 33 +++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...sted-direct-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...sted-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...ed-equality-init-err-contains-arguments.js | 33 +++++++++++++++ ...nested-equality-init-err-contains-super.js | 26 ++++++++++++ ...ed-indirect-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...ed-indirect-eval-err-contains-newtarget.js | 35 ++++++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ed-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...e-arrow-fnc-init-err-contains-arguments.js | 36 ++++++++++++++++ ...ivate-arrow-fnc-init-err-contains-super.js | 29 +++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 33 +++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...vate-direct-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...vate-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...te-indirect-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...te-indirect-eval-err-contains-newtarget.js | 35 ++++++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...te-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...ate-ternary-init-err-contains-arguments.js | 33 +++++++++++++++ ...private-ternary-init-err-contains-super.js | 26 ++++++++++++ ...vate-typeof-init-err-contains-arguments.js | 33 +++++++++++++++ ...-private-typeof-init-err-contains-super.js | 26 ++++++++++++ ...c-comp-name-init-err-contains-arguments.js | 34 +++++++++++++++ ...tatic-comp-name-init-err-contains-super.js | 27 ++++++++++++ ...tic-literal-init-err-contains-arguments.js | 33 +++++++++++++++ ...-static-literal-init-err-contains-super.js | 26 ++++++++++++ ...tic-private-init-err-contains-arguments.js | 33 +++++++++++++++ ...-static-private-init-err-contains-super.js | 26 ++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ng-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ng-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...ted-ternary-init-err-contains-arguments.js | 33 +++++++++++++++ .../nested-ternary-init-err-contains-super.js | 26 ++++++++++++ ...sted-typeof-init-err-contains-arguments.js | 33 +++++++++++++++ .../nested-typeof-init-err-contains-super.js | 26 ++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 34 +++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 27 ++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 34 +++++++++++++++ ...body-direct-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...body-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...dy-indirect-eval-err-contains-arguments.js | 34 +++++++++++++++ ...dy-indirect-eval-err-contains-newtarget.js | 33 +++++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 37 ++++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 34 +++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 34 +++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 27 ++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 34 +++++++++++++++ ...vate-direct-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...vate-direct-eval-err-contains-newtarget.js | 37 ++++++++++++++++ ...te-indirect-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...te-indirect-eval-err-contains-newtarget.js | 33 +++++++++++++++ ...d-arrow-fnc-init-err-contains-arguments.js | 36 ++++++++++++++++ ...ested-arrow-fnc-init-err-contains-super.js | 29 +++++++++++++ ...d-comp-name-init-err-contains-arguments.js | 34 +++++++++++++++ ...ested-comp-name-init-err-contains-super.js | 27 ++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 33 +++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...sted-direct-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...sted-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...ed-equality-init-err-contains-arguments.js | 33 +++++++++++++++ ...nested-equality-init-err-contains-super.js | 26 ++++++++++++ ...ed-indirect-eval-err-contains-arguments.js | 39 +++++++++++++++++ ...ed-indirect-eval-err-contains-newtarget.js | 35 ++++++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ed-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...e-arrow-fnc-init-err-contains-arguments.js | 38 +++++++++++++++++ ...ivate-arrow-fnc-init-err-contains-super.js | 31 ++++++++++++++ ...ls-direct-eval-contains-superproperty-1.js | 34 +++++++++++++++ ...ls-direct-eval-contains-superproperty-2.js | 31 ++++++++++++++ ...ls-direct-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...ls-direct-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...-cls-direct-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-1.js | 36 ++++++++++++++++ ...-indirect-eval-contains-superproperty-2.js | 33 +++++++++++++++ ...-indirect-eval-err-contains-supercall-1.js | 36 ++++++++++++++++ ...-indirect-eval-err-contains-supercall-2.js | 29 +++++++++++++ ...ls-indirect-eval-err-contains-supercall.js | 36 ++++++++++++++++ ...vate-direct-eval-err-contains-arguments.js | 42 +++++++++++++++++++ ...vate-direct-eval-err-contains-newtarget.js | 34 +++++++++++++++ ...te-indirect-eval-err-contains-arguments.js | 36 ++++++++++++++++ ...te-indirect-eval-err-contains-newtarget.js | 35 ++++++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...te-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...ate-ternary-init-err-contains-arguments.js | 33 +++++++++++++++ ...private-ternary-init-err-contains-super.js | 26 ++++++++++++ ...vate-typeof-init-err-contains-arguments.js | 33 +++++++++++++++ ...-private-typeof-init-err-contains-super.js | 26 ++++++++++++ ...c-comp-name-init-err-contains-arguments.js | 34 +++++++++++++++ ...tatic-comp-name-init-err-contains-super.js | 27 ++++++++++++ ...tic-literal-init-err-contains-arguments.js | 33 +++++++++++++++ ...-static-literal-init-err-contains-super.js | 26 ++++++++++++ ...tic-private-init-err-contains-arguments.js | 33 +++++++++++++++ ...-static-private-init-err-contains-super.js | 26 ++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ng-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...iteral-name-init-err-contains-arguments.js | 33 +++++++++++++++ ...ng-literal-name-init-err-contains-super.js | 26 ++++++++++++ ...ted-ternary-init-err-contains-arguments.js | 33 +++++++++++++++ .../nested-ternary-init-err-contains-super.js | 26 ++++++++++++ ...sted-typeof-init-err-contains-arguments.js | 33 +++++++++++++++ .../nested-typeof-init-err-contains-super.js | 26 ++++++++++++ 172 files changed, 5611 insertions(+) create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-equality-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js create mode 100644 test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js create mode 100644 test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-equality-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js create mode 100644 test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js create mode 100644 test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js create mode 100644 test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-static-private-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-ternary-init-err-contains-super.js create mode 100644 test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js create mode 100644 test/language/statements/class/elements/nested-typeof-init-err-contains-super.js diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..72f0e75f1d --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; () => super.x;'); +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..6a48ac28ab --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; () => super["x"];'); +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..b794bfd9b3 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; () => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..44f7506bb4 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; () => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..582e6434d0 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; () => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..e523f36437 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var A = class {} +var C = class extends A { + x = (0, eval)('() => super.x;'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..be773cfb17 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var A = class {} +var C = class extends A { + x = (0, eval)('() => super["x"];'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..9de46aaa6a --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + x = (0, eval)('() => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..b7e3bb6daf --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + x = (0, eval)('() => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..f337a1a534 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + x = (0, eval)('() => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js b/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..7a76c8bb7b --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +let executed = false; +let C = class { + x = eval('executed = true; () => arguments;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..67de684b71 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + x = eval('executed = true; () => new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..d096d25ecc --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var C = class { + x = (0, eval)('() => arguments;'); +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); diff --git a/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..6c1ba58d70 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var C = class { + x = (0, eval)('() => new.target;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..2bab1b5367 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,37 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; () => super.x;'); + x() { + this.#x(); + } +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..c0d28ac2a4 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; () => super["x"];'); + x() { + this.#x(); + } +}; + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..6c8057c4b0 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; () => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..37fe854199 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; () => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..e4f274a8fa --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; () => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..538aa22437 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var A = class {} +var C = class extends A { + #x = (0, eval)('() => super.x;'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..372913b0f4 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var A = class {} +var C = class extends A { + #x = (0, eval)('() => super["x"];'); +}; + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..e925b92017 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + #x = (0, eval)('() => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..d868d420a6 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + #x = (0, eval)('() => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..3b4a10fce6 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var A = class {} +var C = class extends A { + #x = (0, eval)('() => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js b/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..ce6c619359 --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var C = class { + #x = eval('() => arguments;'); + x() { + this.#x(); + } +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); diff --git a/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..376c5d55dc --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js @@ -0,0 +1,37 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + #x = eval('executed = true; () => new.target;'); + x() { + this.#x(); + } +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..7b1ff0d49f --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var C = class { + #x = (0, eval)('() => arguments;'); + x() { + this.#x(); + } +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); diff --git a/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..61819563ef --- /dev/null +++ b/test/language/expressions/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var C = class { + #x = (0, eval)('() => new.target;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js new file mode 100644 index 0000000000..081119ab89 --- /dev/null +++ b/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template +/*--- +description: Syntax error if `arguments` used in class field (arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +$DONOTEVALUATE(); + +var C = class { + x = () => { + var t = () => arguments; + } +} diff --git a/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js b/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js new file mode 100644 index 0000000000..c6172aec02 --- /dev/null +++ b/test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-arrow-fnc-nested.template +/*--- +description: Syntax error if `super()` used in class field (arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + + +$DONOTEVALUATE(); + +var C = class { + x = () => { + var t = () => super(); + } +} diff --git a/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..9055ba9c96 --- /dev/null +++ b/test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + [x] = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js new file mode 100644 index 0000000000..2e2e2a4c51 --- /dev/null +++ b/test/language/expressions/class/elements/nested-comp-name-init-err-contains-super.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-comp-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + [x] = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..493903e5c9 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; super.x;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..e9d4bf9fc2 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; super["x"];'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..88157d5df9 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..94012ed258 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..2b76da852d --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..531c4a59ff --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; super.x;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..3333bd5f5a --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-fields-indirect-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; super["x"];'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..b728d960f2 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..6858800a14 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..650ff73c88 --- /dev/null +++ b/test/language/expressions/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-fields-indirect-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js b/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..686c5aefa2 --- /dev/null +++ b/test/language/expressions/class/elements/nested-direct-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-fields-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +let executed = false; +let C = class { + x = () => { + let f = eval('executed = true; arguments;'); + f(); + } +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..bcf70619e1 --- /dev/null +++ b/test/language/expressions/class/elements/nested-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + x = eval('executed = true; new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js new file mode 100644 index 0000000000..3c2b49b3f2 --- /dev/null +++ b/test/language/expressions/class/elements/nested-equality-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-equality-nested.template +/*--- +description: Syntax error if `arguments` used in class field (equality expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => {} == arguments; +} diff --git a/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js b/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js new file mode 100644 index 0000000000..f89f0d950d --- /dev/null +++ b/test/language/expressions/class/elements/nested-equality-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-equality-nested.template +/*--- +description: Syntax error if `super()` used in class field (equality expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => {} == super(); +} diff --git a/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..c485d1e00f --- /dev/null +++ b/test/language/expressions/class/elements/nested-indirect-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-fields-indirect-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +var C = class { + x = () => (0, eval)('executed = true; arguments;'); +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..3f19849099 --- /dev/null +++ b/test/language/expressions/class/elements/nested-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,35 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-fields-indirect-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + x = (0, eval)('executed = true; new.target;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..0cf3fae854 --- /dev/null +++ b/test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..946b3a5fb9 --- /dev/null +++ b/test/language/expressions/class/elements/nested-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js new file mode 100644 index 0000000000..32fde6eae6 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +$DONOTEVALUATE(); + +var C = class { + #x = () => { + var t = () => arguments; + } +} diff --git a/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js b/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js new file mode 100644 index 0000000000..2bb202cd8d --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-private-arrow-fnc-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + + +$DONOTEVALUATE(); + +var C = class { + #x = () => { + var t = () => super(); + } +} diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..81ce4ab100 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super.x;'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..ed6b58d216 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super["x"];'); +}; + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..65def27720 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..551a2ade9c --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..777a4935cd --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..1a2dee09ee --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super.x;'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..6a8af65784 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super["x"];'); +}; + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..edec9543d3 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..1f3a45ac26 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..5e8d45b337 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +var A = class {} +var C = class extends A { + #x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..42a8b97e8d --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +var C = class { + #x = () => eval('executed = true; arguments;'); + x() { + this.#x(); + } +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..23a1b78c3f --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + #x = eval('executed = true; new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..64e85d6856 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +var C = class { + #x = () => (0, eval)('executed = true; arguments;'); + x() { + this.#x(); + } +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); + +assert.sameValue(executed, true); diff --git a/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js b/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..11116d8dab --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,35 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-expr-private-fields-indirect-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +var C = class { + #x = (0, eval)('executed = true; new.target;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..73c832eb96 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (ClassElementName PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..ca6375aa8a --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-private-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (ClassElementName PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js new file mode 100644 index 0000000000..2794d87f21 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => true ? {} : arguments; +} diff --git a/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js b/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js new file mode 100644 index 0000000000..3e278973a0 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-ternary-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-private-ternary-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => true ? {} : super(); +} diff --git a/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js new file mode 100644 index 0000000000..8c4b53f737 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => typeof arguments; +} diff --git a/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js b/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js new file mode 100644 index 0000000000..df6cc11d17 --- /dev/null +++ b/test/language/expressions/class/elements/nested-private-typeof-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-private-typeof-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + #x = () => typeof super(); +} diff --git a/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..496640f891 --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-arguments.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + static [x] = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js new file mode 100644 index 0000000000..dc2217de7d --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-comp-name-init-err-contains-super.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-static-comp-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +var C = class { + static [x] = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js new file mode 100644 index 0000000000..51c1924880 --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-literal-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static x = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js b/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js new file mode 100644 index 0000000000..0688c5d9d2 --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-literal-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-static-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static x = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js new file mode 100644 index 0000000000..ba98f8961f --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-private-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static #x = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js b/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js new file mode 100644 index 0000000000..acd4e1e433 --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-private-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-static-private-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static #x = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..36cd3ec416 --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static 'x' = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..28c8da09fd --- /dev/null +++ b/test/language/expressions/class/elements/nested-static-string-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-static-string-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + static 'x' = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..43d80b3362 --- /dev/null +++ b/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + 'x' = () => arguments; +} diff --git a/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js b/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..ffef0598c1 --- /dev/null +++ b/test/language/expressions/class/elements/nested-string-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-string-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + 'x' = () => super(); +} diff --git a/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js new file mode 100644 index 0000000000..68ea1ddfef --- /dev/null +++ b/test/language/expressions/class/elements/nested-ternary-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template +/*--- +description: Syntax error if `arguments` used in class field (ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => true ? {} : arguments; +} diff --git a/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js b/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js new file mode 100644 index 0000000000..7d365a86c8 --- /dev/null +++ b/test/language/expressions/class/elements/nested-ternary-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-ternary-nested.template +/*--- +description: Syntax error if `super()` used in class field (ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => true ? {} : super(); +} diff --git a/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js b/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js new file mode 100644 index 0000000000..027a56390b --- /dev/null +++ b/test/language/expressions/class/elements/nested-typeof-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template +/*--- +description: Syntax error if `arguments` used in class field (typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => typeof arguments; +} diff --git a/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js b/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js new file mode 100644 index 0000000000..f36c306cbd --- /dev/null +++ b/test/language/expressions/class/elements/nested-typeof-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-expr-fields-typeof-nested.template +/*--- +description: Syntax error if `super()` used in class field (typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var C = class { + x = () => typeof super(); +} diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..bbe1a4ee21 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; () => super.x;'); +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..19716c911c --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; () => super["x"];'); +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..9fc933f8fa --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; () => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..7b8acdbb22 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; () => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..94b210fd41 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; () => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..34746207b0 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +class A {} +class C extends A { + x = (0, eval)('() => super.x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..a300b114ff --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +class A {} +class C extends A { + x = (0, eval)('() => super["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..dc9a08a4f2 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + x = (0, eval)('() => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..a73d1f2959 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + x = (0, eval)('() => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..1c4ce74748 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + x = (0, eval)('() => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js b/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..92ace77361 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + x = eval('executed = true; () => arguments;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js b/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..350453b8f2 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + x = eval('executed = true; () => new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js b/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..9efee68248 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-arguments.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +class C { + x = (0, eval)('() => arguments;'); +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js b/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..c6df6418e5 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +class C { + x = (0, eval)('() => new.target;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..7f70d0649f --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,37 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; () => super.x;'); + x() { + this.#x(); + } +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..63cbf97957 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; () => super["x"];'); + x() { + this.#x(); + } +} + +new C().x(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..7815c26204 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; () => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..a451d75a43 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; () => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..eeea688e2e --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; () => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..f36b517723 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +class A {} +class C extends A { + #x = (0, eval)('() => super.x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..447d804800 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +class A {} +class C extends A { + #x = (0, eval)('() => super["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..5682f5eeaf --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + #x = (0, eval)('() => super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..39bf7617c8 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + #x = (0, eval)('() => super().x;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..ebfe2bf196 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +class A {} +class C extends A { + #x = (0, eval)('() => super();'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js b/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..35cda00172 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + #x = eval('executed = true; () => arguments;'); + constructor() { + this.#x(); + } +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js b/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..32a25913fe --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-direct-eval-err-contains-newtarget.js @@ -0,0 +1,37 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + #x = eval('executed = true; () => new.target;'); + x() { + this.#x(); + } +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x(), undefined); diff --git a/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js b/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..8773bb9ef2 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +class C { + #x = (0, eval)('() => arguments;'); + x() { + this.#x(); + } +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); diff --git a/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js b/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..11e24c0db1 --- /dev/null +++ b/test/language/statements/class/elements/arrow-body-private-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-arrow-body.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +class C { + #x = (0, eval)('() => new.target;'); +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + diff --git a/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js new file mode 100644 index 0000000000..9ff614ec89 --- /dev/null +++ b/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template +/*--- +description: Syntax error if `arguments` used in class field (arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +$DONOTEVALUATE(); + +class C { + x = () => { + var t = () => arguments; + } +} diff --git a/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js b/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js new file mode 100644 index 0000000000..0bd1f1c35d --- /dev/null +++ b/test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-arrow-fnc-nested.template +/*--- +description: Syntax error if `super()` used in class field (arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + + +$DONOTEVALUATE(); + +class C { + x = () => { + var t = () => super(); + } +} diff --git a/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..1b031723b0 --- /dev/null +++ b/test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +class C { + [x] = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js new file mode 100644 index 0000000000..5872fbef52 --- /dev/null +++ b/test/language/statements/class/elements/nested-comp-name-init-err-contains-super.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-comp-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +class C { + [x] = () => super(); +} diff --git a/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..f919e3a865 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; super.x;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..217ee47ad7 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; super["x"];'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..3feefdb539 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..c02130da22 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..4962a95f97 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..8510c3ba09 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; super.x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..a507b145d1 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-fields-indirect-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; super["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..0a671adf98 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..e0975297d2 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..7a1db11227 --- /dev/null +++ b/test/language/statements/class/elements/nested-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-fields-indirect-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js b/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..592ff91c0a --- /dev/null +++ b/test/language/statements/class/elements/nested-direct-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-fields-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + x = () => { + var t = () => { eval('executed = true; arguments;'); }; + t(); + } +} + +assert.throws(SyntaxError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js b/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..843e13481f --- /dev/null +++ b/test/language/statements/class/elements/nested-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + x = eval('executed = true; new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js new file mode 100644 index 0000000000..abd33bfa26 --- /dev/null +++ b/test/language/statements/class/elements/nested-equality-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-equality-nested.template +/*--- +description: Syntax error if `arguments` used in class field (equality expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => {} == arguments; +} diff --git a/test/language/statements/class/elements/nested-equality-init-err-contains-super.js b/test/language/statements/class/elements/nested-equality-init-err-contains-super.js new file mode 100644 index 0000000000..a83ad4955f --- /dev/null +++ b/test/language/statements/class/elements/nested-equality-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-equality-nested.template +/*--- +description: Syntax error if `super()` used in class field (equality expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => {} == super(); +} diff --git a/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js b/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..cdb7e4d4f6 --- /dev/null +++ b/test/language/statements/class/elements/nested-indirect-eval-err-contains-arguments.js @@ -0,0 +1,39 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-fields-indirect-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + x = () => { + var t = () => { (0, eval)('executed = true; arguments;'); }; + t(); + } +} + +assert.throws(ReferenceError, function() { + new C().x(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js b/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..74428c19c7 --- /dev/null +++ b/test/language/statements/class/elements/nested-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,35 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-fields-indirect-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-public] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + x = (0, eval)('executed = true; new.target;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..3db862caff --- /dev/null +++ b/test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..041efe9965 --- /dev/null +++ b/test/language/statements/class/elements/nested-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => super(); +} diff --git a/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js new file mode 100644 index 0000000000..bdd6ae0ac7 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js @@ -0,0 +1,38 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +$DONOTEVALUATE(); + +class C { + #x = () => { + var t = () => arguments; + t(); + } +} + diff --git a/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js b/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js new file mode 100644 index 0000000000..221c988d81 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-private-arrow-fnc-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, arrow function expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, arrow-function, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + + +$DONOTEVALUATE(); + +class C { + #x = () => { + var t = () => super(); + t(); + } +} + diff --git a/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..50617dfa6d --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-1.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template +/*--- +description: super.x in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super.x;'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..3ba143f5a7 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-contains-superproperty-2.js @@ -0,0 +1,31 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super["x"];'); +} + +new C(); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..5830dd2f60 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..3a5a995a87 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js new file mode 100644 index 0000000000..a37e352660 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-direct-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = eval('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js new file mode 100644 index 0000000000..644a508df0 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-1.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: super.x in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super.x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js new file mode 100644 index 0000000000..83570fe08a --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-contains-superproperty-2.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-contains-superproperty-2.case +// - src/class-elements/initializer-eval-super-property/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: super['x'] in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Methods + + These static semantics are applied by PerformEval when a direct eval call occurs outside of a MethodDefinition. + + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperProperty. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js new file mode 100644 index 0000000000..d356a089a9 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-1.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-1.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: error if `super()['x']` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super()["x"];'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js new file mode 100644 index 0000000000..2082351245 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall-2.js @@ -0,0 +1,29 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall-2.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: error if `super().x` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super().x;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js new file mode 100644 index 0000000000..0d3e51f86f --- /dev/null +++ b/test/language/statements/class/elements/nested-private-derived-cls-indirect-eval-err-contains-supercall.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-supercall.case +// - src/class-elements/initializer-eval-super-call/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: error if `super()` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Constructor Methods + These static semantics are applied by PerformEval when a direct eval call occurs outside of the constructor method of a ClassDeclaration or ClassExpression. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains SuperCall. + +---*/ + + +var executed = false; +class A {} +class C extends A { + #x = (0, eval)('executed = true; super();'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js new file mode 100644 index 0000000000..348280e8ad --- /dev/null +++ b/test/language/statements/class/elements/nested-private-direct-eval-err-contains-arguments.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + #x = () => { + var t = () => { eval('executed = true; arguments;'); }; + t(); + } + constructor() { + this.#x(); + } +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js b/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..df27a39726 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-direct-eval-err-contains-newtarget.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (direct eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + #x = eval('executed = true; new.target;'); +} + +var c = new C(); + +assert.sameValue(executed, true); +assert.sameValue(c.x, undefined); diff --git a/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js new file mode 100644 index 0000000000..fbcfc71441 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-arguments.js @@ -0,0 +1,36 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-arguments.case +// - src/class-elements/initializer-eval-arguments/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: error if `arguments` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, class-fields-public, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + It is a Syntax Error if ContainsArguments of StatementList is true. + ... + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + + +var executed = false; +class C { + #x = (0, eval)('executed = true; arguments;'); +} + +assert.throws(ReferenceError, function() { + new C(); +}); + +assert.sameValue(executed, true); diff --git a/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js b/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js new file mode 100644 index 0000000000..9558216770 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-indirect-eval-err-contains-newtarget.js @@ -0,0 +1,35 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/eval-err-contains-newtarget.case +// - src/class-elements/initializer-eval-newtarget/cls-decl-private-fields-indirect-eval-nested.template +/*--- +description: error if `new.target` in StatementList of eval (indirect eval) +esid: sec-performeval-rules-in-initializer +features: [class, new.target, class-fields-private] +flags: [generated] +info: | + Additional Early Error Rules for Eval Inside Initializer + These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer. + ScriptBody : StatementList + + ... + The remaining eval rules apply as outside a constructor, inside a method, and inside a function. + + Additional Early Error Rules for Eval Outside Functions + These static semantics are applied by PerformEval when a direct eval call occurs outside of any function. + ScriptBody : StatementList + + It is a Syntax Error if StatementList Contains NewTarget. + +---*/ + + +var executed = false; +class C { + #x = (0, eval)('executed = true; new.target;'); +} + +assert.throws(SyntaxError, function() { + new C(); +}); + +assert.sameValue(executed, false); diff --git a/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..07bae178ab --- /dev/null +++ b/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (ClassElementName PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..3471ba453a --- /dev/null +++ b/test/language/statements/class/elements/nested-private-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-private-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (ClassElementName PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => super(); +} diff --git a/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js new file mode 100644 index 0000000000..d38d1c3b96 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => false ? {} : arguments; +} diff --git a/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js b/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js new file mode 100644 index 0000000000..ef2ed844f7 --- /dev/null +++ b/test/language/statements/class/elements/nested-private-ternary-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-private-ternary-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => false ? {} : super(); +} diff --git a/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js new file mode 100644 index 0000000000..524839e09b --- /dev/null +++ b/test/language/statements/class/elements/nested-private-typeof-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template +/*--- +description: Syntax error if `arguments` used in class field (private field, typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => typeof arguments; +} diff --git a/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js b/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js new file mode 100644 index 0000000000..8e41221b2f --- /dev/null +++ b/test/language/statements/class/elements/nested-private-typeof-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-private-typeof-nested.template +/*--- +description: Syntax error if `super()` used in class field (private field, typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + #x = () => typeof super(); +} diff --git a/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..6b8dca8da9 --- /dev/null +++ b/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-arguments.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +class C { + static [x] = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js new file mode 100644 index 0000000000..7b4bae8d76 --- /dev/null +++ b/test/language/statements/class/elements/nested-static-comp-name-init-err-contains-super.js @@ -0,0 +1,27 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-static-comp-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static computed ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public, computed-property-names] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +var x = "string"; +class C { + static [x] = () => super(); +} diff --git a/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js new file mode 100644 index 0000000000..42941ccad3 --- /dev/null +++ b/test/language/statements/class/elements/nested-static-literal-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + static x = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js b/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js new file mode 100644 index 0000000000..197045b12b --- /dev/null +++ b/test/language/statements/class/elements/nested-static-literal-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-static-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + static x = () => super(); +} diff --git a/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js new file mode 100644 index 0000000000..77bd3af8c1 --- /dev/null +++ b/test/language/statements/class/elements/nested-static-private-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + static #x = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js b/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js new file mode 100644 index 0000000000..fc766f7682 --- /dev/null +++ b/test/language/statements/class/elements/nested-static-private-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-static-private-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static PrivateName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-private] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + static #x = () => super(); +} diff --git a/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..5567c0139f --- /dev/null +++ b/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (static string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + static 'x' = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..18ce9fc4ea --- /dev/null +++ b/test/language/statements/class/elements/nested-static-string-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-static-string-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (static string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public, class-static-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + static 'x' = () => super(); +} diff --git a/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js new file mode 100644 index 0000000000..630a9e9215 --- /dev/null +++ b/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template +/*--- +description: Syntax error if `arguments` used in class field (string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + 'x' = () => arguments; +} diff --git a/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js b/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js new file mode 100644 index 0000000000..a02443404c --- /dev/null +++ b/test/language/statements/class/elements/nested-string-literal-name-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-string-literal-name-nested.template +/*--- +description: Syntax error if `super()` used in class field (string literal ClassElementName) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + 'x' = () => super(); +} diff --git a/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js new file mode 100644 index 0000000000..96632028f2 --- /dev/null +++ b/test/language/statements/class/elements/nested-ternary-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template +/*--- +description: Syntax error if `arguments` used in class field (ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => false ? {} : arguments; +} diff --git a/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js b/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js new file mode 100644 index 0000000000..2fabefd6c3 --- /dev/null +++ b/test/language/statements/class/elements/nested-ternary-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-ternary-nested.template +/*--- +description: Syntax error if `super()` used in class field (ternary expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => false ? {} : super(); +} diff --git a/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js b/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js new file mode 100644 index 0000000000..284521f27f --- /dev/null +++ b/test/language/statements/class/elements/nested-typeof-init-err-contains-arguments.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-arguments.case +// - src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template +/*--- +description: Syntax error if `arguments` used in class field (typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if ContainsArguments of Initializer is true. + + Static Semantics: ContainsArguments + IdentifierReference : Identifier + + 1. If the StringValue of Identifier is "arguments", return true. + ... + For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => typeof arguments; +} diff --git a/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js b/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js new file mode 100644 index 0000000000..a7d13ccd96 --- /dev/null +++ b/test/language/statements/class/elements/nested-typeof-init-err-contains-super.js @@ -0,0 +1,26 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/init-err-contains-super.case +// - src/class-elements/initializer-error/cls-decl-fields-typeof-nested.template +/*--- +description: Syntax error if `super()` used in class field (typeof expression) +esid: sec-class-definitions-static-semantics-early-errors +features: [class, class-fields-public] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Static Semantics: Early Errors + + FieldDefinition: + PropertyNameInitializeropt + + - It is a Syntax Error if Initializer is present and Initializer Contains SuperCall is true. + +---*/ + +$DONOTEVALUATE(); + +class C { + x = () => typeof super(); +}