From 9ccf0a822fa8d5856f94843a66efdd02e556fa67 Mon Sep 17 00:00:00 2001 From: Katie Broida <kbroida@gmail.com> Date: Tue, 14 Aug 2018 15:44:31 -0400 Subject: [PATCH] Generate tests --- .../private-accessor-name-inst-computed.js | 57 +++++++++++++++++++ ...cessor-name-inst-literal-numeric-binary.js | 55 ++++++++++++++++++ ...ssor-name-inst-literal-numeric-exponent.js | 55 ++++++++++++++++++ ...-accessor-name-inst-literal-numeric-hex.js | 55 ++++++++++++++++++ ...me-inst-literal-numeric-leading-decimal.js | 55 ++++++++++++++++++ ...name-inst-literal-numeric-non-canonical.js | 55 ++++++++++++++++++ ...ccessor-name-inst-literal-numeric-octal.js | 55 ++++++++++++++++++ ...accessor-name-inst-literal-numeric-zero.js | 55 ++++++++++++++++++ ...or-name-inst-literal-string-char-escape.js | 55 ++++++++++++++++++ ...r-name-inst-literal-string-double-quote.js | 55 ++++++++++++++++++ ...accessor-name-inst-literal-string-empty.js | 55 ++++++++++++++++++ ...sor-name-inst-literal-string-hex-escape.js | 55 ++++++++++++++++++ ...e-inst-literal-string-line-continuation.js | 57 +++++++++++++++++++ ...r-name-inst-literal-string-single-quote.js | 55 ++++++++++++++++++ ...name-inst-literal-string-unicode-escape.js | 55 ++++++++++++++++++ .../private-accessor-name-static-computed.js | 56 ++++++++++++++++++ ...ssor-name-static-literal-numeric-binary.js | 54 ++++++++++++++++++ ...or-name-static-literal-numeric-exponent.js | 54 ++++++++++++++++++ ...ccessor-name-static-literal-numeric-hex.js | 54 ++++++++++++++++++ ...-static-literal-numeric-leading-decimal.js | 54 ++++++++++++++++++ ...me-static-literal-numeric-non-canonical.js | 54 ++++++++++++++++++ ...essor-name-static-literal-numeric-octal.js | 54 ++++++++++++++++++ ...cessor-name-static-literal-numeric-zero.js | 54 ++++++++++++++++++ ...-name-static-literal-string-char-escape.js | 54 ++++++++++++++++++ ...name-static-literal-string-double-quote.js | 54 ++++++++++++++++++ ...cessor-name-static-literal-string-empty.js | 54 ++++++++++++++++++ ...r-name-static-literal-string-hex-escape.js | 54 ++++++++++++++++++ ...static-literal-string-line-continuation.js | 56 ++++++++++++++++++ ...name-static-literal-string-single-quote.js | 54 ++++++++++++++++++ ...me-static-literal-string-unicode-escape.js | 54 ++++++++++++++++++ .../private-accessor-name-inst-computed.js | 57 +++++++++++++++++++ ...cessor-name-inst-literal-numeric-binary.js | 55 ++++++++++++++++++ ...ssor-name-inst-literal-numeric-exponent.js | 55 ++++++++++++++++++ ...-accessor-name-inst-literal-numeric-hex.js | 55 ++++++++++++++++++ ...me-inst-literal-numeric-leading-decimal.js | 55 ++++++++++++++++++ ...name-inst-literal-numeric-non-canonical.js | 55 ++++++++++++++++++ ...ccessor-name-inst-literal-numeric-octal.js | 55 ++++++++++++++++++ ...accessor-name-inst-literal-numeric-zero.js | 55 ++++++++++++++++++ ...or-name-inst-literal-string-char-escape.js | 55 ++++++++++++++++++ ...r-name-inst-literal-string-double-quote.js | 55 ++++++++++++++++++ ...accessor-name-inst-literal-string-empty.js | 55 ++++++++++++++++++ ...sor-name-inst-literal-string-hex-escape.js | 55 ++++++++++++++++++ ...e-inst-literal-string-line-continuation.js | 57 +++++++++++++++++++ ...r-name-inst-literal-string-single-quote.js | 55 ++++++++++++++++++ ...name-inst-literal-string-unicode-escape.js | 55 ++++++++++++++++++ .../private-accessor-name-static-computed.js | 56 ++++++++++++++++++ ...ssor-name-static-literal-numeric-binary.js | 54 ++++++++++++++++++ ...or-name-static-literal-numeric-exponent.js | 54 ++++++++++++++++++ ...ccessor-name-static-literal-numeric-hex.js | 54 ++++++++++++++++++ ...-static-literal-numeric-leading-decimal.js | 54 ++++++++++++++++++ ...me-static-literal-numeric-non-canonical.js | 54 ++++++++++++++++++ ...essor-name-static-literal-numeric-octal.js | 54 ++++++++++++++++++ ...cessor-name-static-literal-numeric-zero.js | 54 ++++++++++++++++++ ...-name-static-literal-string-char-escape.js | 54 ++++++++++++++++++ ...name-static-literal-string-double-quote.js | 54 ++++++++++++++++++ ...cessor-name-static-literal-string-empty.js | 54 ++++++++++++++++++ ...r-name-static-literal-string-hex-escape.js | 54 ++++++++++++++++++ ...static-literal-string-line-continuation.js | 56 ++++++++++++++++++ ...name-static-literal-string-single-quote.js | 54 ++++++++++++++++++ ...me-static-literal-string-unicode-escape.js | 54 ++++++++++++++++++ 60 files changed, 3286 insertions(+) create mode 100644 test/language/expressions/class/private-accessor-name-inst-computed.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-binary.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-exponent.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-hex.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-leading-decimal.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-non-canonical.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-octal.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-numeric-zero.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-char-escape.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-double-quote.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-empty.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-hex-escape.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-line-continuation.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-single-quote.js create mode 100644 test/language/expressions/class/private-accessor-name-inst-literal-string-unicode-escape.js create mode 100644 test/language/expressions/class/private-accessor-name-static-computed.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-binary.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-exponent.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-hex.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-leading-decimal.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-non-canonical.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-octal.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-numeric-zero.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-char-escape.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-double-quote.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-empty.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-hex-escape.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-line-continuation.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-single-quote.js create mode 100644 test/language/expressions/class/private-accessor-name-static-literal-string-unicode-escape.js create mode 100644 test/language/statements/class/private-accessor-name-inst-computed.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-binary.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-exponent.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-hex.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-leading-decimal.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-non-canonical.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-octal.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-numeric-zero.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-char-escape.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-double-quote.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-empty.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-hex-escape.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-line-continuation.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-single-quote.js create mode 100644 test/language/statements/class/private-accessor-name-inst-literal-string-unicode-escape.js create mode 100644 test/language/statements/class/private-accessor-name-static-computed.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-binary.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-exponent.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-hex.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-leading-decimal.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-non-canonical.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-octal.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-numeric-zero.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-char-escape.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-double-quote.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-empty.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-hex-escape.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-line-continuation.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-single-quote.js create mode 100644 test/language/statements/class/private-accessor-name-static-literal-string-unicode-escape.js diff --git a/test/language/expressions/class/private-accessor-name-inst-computed.js b/test/language/expressions/class/private-accessor-name-inst-computed.js new file mode 100644 index 0000000000..047c43379f --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-computed.js @@ -0,0 +1,57 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/computed.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (AssignmentExpression) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ +var _; + + +var stringSet; + +var C = class { + get #[_ = 'str' + 'ing']() { return 'get string'; } + set #[_ = 'str' + 'ing'](param) { stringSet = param; } + + getPrivateReference() { + return this.#'string'; + } + + setPrivateReference(value) { + this.#'string' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-binary.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-binary.js new file mode 100644 index 0000000000..a496ace6de --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-binary.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-binary.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in binary notation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #0b10() { return 'get string'; } + set #0b10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'2'; + } + + setPrivateReference(value) { + this.#'2' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-exponent.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-exponent.js new file mode 100644 index 0000000000..6146216b64 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-exponent.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-exponent.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in exponent notation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #1E+9() { return 'get string'; } + set #1E+9(param) { stringSet = param; } + + getPrivateReference() { + return this.#'1000000000'; + } + + setPrivateReference(value) { + this.#'1000000000' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-hex.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-hex.js new file mode 100644 index 0000000000..e050cb43be --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-hex.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-hex.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in hexadecimal notation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #0x10() { return 'get string'; } + set #0x10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'16'; + } + + setPrivateReference(value) { + this.#'16' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-leading-decimal.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-leading-decimal.js new file mode 100644 index 0000000000..2f7f6d3673 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-leading-decimal.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-leading-decimal.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal with leading decimal point) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #.1() { return 'get string'; } + set #.1(param) { stringSet = param; } + + getPrivateReference() { + return this.#'0.1'; + } + + setPrivateReference(value) { + this.#'0.1' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-non-canonical.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-non-canonical.js new file mode 100644 index 0000000000..132610dfab --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-non-canonical.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-non-canonical.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal with non-canonical representation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #0.0000001() { return 'get string'; } + set #0.0000001(param) { stringSet = param; } + + getPrivateReference() { + return this.#'1e-7'; + } + + setPrivateReference(value) { + this.#'1e-7' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-octal.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-octal.js new file mode 100644 index 0000000000..f596661f23 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-octal.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-octal.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in octal notation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #0o10() { return 'get string'; } + set #0o10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'8'; + } + + setPrivateReference(value) { + this.#'8' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-numeric-zero.js b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-zero.js new file mode 100644 index 0000000000..c2bf877474 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-numeric-zero.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-zero.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (numeric literal zero) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #0() { return 'get string'; } + set #0(param) { stringSet = param; } + + getPrivateReference() { + return this.#'0'; + } + + setPrivateReference(value) { + this.#'0' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-char-escape.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-char-escape.js new file mode 100644 index 0000000000..41f8837ee1 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-char-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-char-escape.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a character escape sequence) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #'character\tescape'() { return 'get string'; } + set #'character\tescape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'character escape'; + } + + setPrivateReference(value) { + this.#'character escape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-double-quote.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-double-quote.js new file mode 100644 index 0000000000..78fe6d4411 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-double-quote.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-double-quote.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal using double quotes) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #"doubleQuote"() { return 'get string'; } + set #"doubleQuote"(param) { stringSet = param; } + + getPrivateReference() { + return this.#"doubleQuote"; + } + + setPrivateReference(value) { + this.#"doubleQuote" = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-empty.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-empty.js new file mode 100644 index 0000000000..ce8a38e085 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-empty.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-empty.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal, the empty string) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #''() { return 'get string'; } + set #''(param) { stringSet = param; } + + getPrivateReference() { + return this.#''; + } + + setPrivateReference(value) { + this.#'' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-hex-escape.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-hex-escape.js new file mode 100644 index 0000000000..511fb13614 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-hex-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-hex-escape.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a hexadecimal escape sequence) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #'hex\x45scape'() { return 'get string'; } + set #'hex\x45scape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'hexEscape'; + } + + setPrivateReference(value) { + this.#'hexEscape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-line-continuation.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-line-continuation.js new file mode 100644 index 0000000000..a0986b5d6e --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-line-continuation.js @@ -0,0 +1,57 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-line-continuation.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal containing LineContinuation) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #'line\ +Continuation'() { return 'get string'; } + set #'line\ +Continuation'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'lineContinuation'; + } + + setPrivateReference(value) { + this.#'lineContinuation' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-single-quote.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-single-quote.js new file mode 100644 index 0000000000..9f8c958ded --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-single-quote.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-single-quote.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal using single quotes) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #'singleQuote'() { return 'get string'; } + set #'singleQuote'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'singleQuote'; + } + + setPrivateReference(value) { + this.#'singleQuote' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-inst-literal-string-unicode-escape.js b/test/language/expressions/class/private-accessor-name-inst-literal-string-unicode-escape.js new file mode 100644 index 0000000000..cae2c6f4c1 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-inst-literal-string-unicode-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-unicode-escape.case +// - src/accessor-names/default/cls-private-expr-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a Unicode escape sequence) (Class expression, instance private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + get #'unicod\u{000065}Escape'() { return 'get string'; } + set #'unicod\u{000065}Escape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'unicodeEscape'; + } + + setPrivateReference(value) { + this.#'unicodeEscape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-computed.js b/test/language/expressions/class/private-accessor-name-static-computed.js new file mode 100644 index 0000000000..a5785dd034 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-computed.js @@ -0,0 +1,56 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/computed.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (AssignmentExpression) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ +var _; + + +var stringSet; + +var C = class { + static get #[_ = 'str' + 'ing']() { return 'get string'; } + static set #[_ = 'str' + 'ing'](param) { stringSet = param; } + + static getPrivateReference() { + return this.#'string'; + } + + static setPrivateReference(value) { + this.#'string' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-binary.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-binary.js new file mode 100644 index 0000000000..605f84fec4 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-binary.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-binary.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal in binary notation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #0b10() { return 'get string'; } + static set #0b10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'2'; + } + + static setPrivateReference(value) { + this.#'2' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-exponent.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-exponent.js new file mode 100644 index 0000000000..eae37f8a90 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-exponent.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-exponent.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal in exponent notation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #1E+9() { return 'get string'; } + static set #1E+9(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'1000000000'; + } + + static setPrivateReference(value) { + this.#'1000000000' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-hex.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-hex.js new file mode 100644 index 0000000000..d065233f7b --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-hex.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-hex.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal in hexadecimal notation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #0x10() { return 'get string'; } + static set #0x10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'16'; + } + + static setPrivateReference(value) { + this.#'16' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-leading-decimal.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-leading-decimal.js new file mode 100644 index 0000000000..4c4323baf1 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-leading-decimal.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-leading-decimal.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal with leading decimal point) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #.1() { return 'get string'; } + static set #.1(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'0.1'; + } + + static setPrivateReference(value) { + this.#'0.1' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-non-canonical.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-non-canonical.js new file mode 100644 index 0000000000..3900a516a7 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-non-canonical.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-non-canonical.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal with non-canonical representation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #0.0000001() { return 'get string'; } + static set #0.0000001(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'1e-7'; + } + + static setPrivateReference(value) { + this.#'1e-7' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-octal.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-octal.js new file mode 100644 index 0000000000..2eac03f682 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-octal.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-octal.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal in octal notation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #0o10() { return 'get string'; } + static set #0o10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'8'; + } + + static setPrivateReference(value) { + this.#'8' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-numeric-zero.js b/test/language/expressions/class/private-accessor-name-static-literal-numeric-zero.js new file mode 100644 index 0000000000..1f998ccc98 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-numeric-zero.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-zero.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (numeric literal zero) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #0() { return 'get string'; } + static set #0(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'0'; + } + + static setPrivateReference(value) { + this.#'0' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-char-escape.js b/test/language/expressions/class/private-accessor-name-static-literal-string-char-escape.js new file mode 100644 index 0000000000..f4e5ed9011 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-char-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-char-escape.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal containing a character escape sequence) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #'character\tescape'() { return 'get string'; } + static set #'character\tescape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'character escape'; + } + + static setPrivateReference(value) { + this.#'character escape' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-double-quote.js b/test/language/expressions/class/private-accessor-name-static-literal-string-double-quote.js new file mode 100644 index 0000000000..bc4e2ada3f --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-double-quote.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-double-quote.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal using double quotes) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #"doubleQuote"() { return 'get string'; } + static set #"doubleQuote"(param) { stringSet = param; } + + static getPrivateReference() { + return this.#"doubleQuote"; + } + + static setPrivateReference(value) { + this.#"doubleQuote" = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-empty.js b/test/language/expressions/class/private-accessor-name-static-literal-string-empty.js new file mode 100644 index 0000000000..7f01c1f53a --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-empty.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-empty.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal, the empty string) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #''() { return 'get string'; } + static set #''(param) { stringSet = param; } + + static getPrivateReference() { + return this.#''; + } + + static setPrivateReference(value) { + this.#'' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-hex-escape.js b/test/language/expressions/class/private-accessor-name-static-literal-string-hex-escape.js new file mode 100644 index 0000000000..1f05c8192f --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-hex-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-hex-escape.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal containing a hexadecimal escape sequence) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #'hex\x45scape'() { return 'get string'; } + static set #'hex\x45scape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'hexEscape'; + } + + static setPrivateReference(value) { + this.#'hexEscape' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-line-continuation.js b/test/language/expressions/class/private-accessor-name-static-literal-string-line-continuation.js new file mode 100644 index 0000000000..529c685268 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-line-continuation.js @@ -0,0 +1,56 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-line-continuation.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal containing LineContinuation) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #'line\ +Continuation'() { return 'get string'; } + static set #'line\ +Continuation'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'lineContinuation'; + } + + static setPrivateReference(value) { + this.#'lineContinuation' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-single-quote.js b/test/language/expressions/class/private-accessor-name-static-literal-string-single-quote.js new file mode 100644 index 0000000000..a6eed4e540 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-single-quote.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-single-quote.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal using single quotes) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #'singleQuote'() { return 'get string'; } + static set #'singleQuote'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'singleQuote'; + } + + static setPrivateReference(value) { + this.#'singleQuote' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/expressions/class/private-accessor-name-static-literal-string-unicode-escape.js b/test/language/expressions/class/private-accessor-name-static-literal-string-unicode-escape.js new file mode 100644 index 0000000000..ca79684757 --- /dev/null +++ b/test/language/expressions/class/private-accessor-name-static-literal-string-unicode-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-unicode-escape.case +// - src/accessor-names/default/cls-private-expr-static.template +/*--- +description: Computed values as accessor property names (string literal containing a Unicode escape sequence) (Class expression, static private method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +var C = class { + static get #'unicod\u{000065}Escape'() { return 'get string'; } + static set #'unicod\u{000065}Escape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'unicodeEscape'; + } + + static setPrivateReference(value) { + this.#'unicodeEscape' = value; + } +}; + + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-computed.js b/test/language/statements/class/private-accessor-name-inst-computed.js new file mode 100644 index 0000000000..8a05c51118 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-computed.js @@ -0,0 +1,57 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/computed.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (AssignmentExpression) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ +var _; + + +var stringSet; + +class C { + get #[_ = 'str' + 'ing']() { return 'get string'; } + set #[_ = 'str' + 'ing'](param) { stringSet = param; } + + getPrivateReference() { + return this.#'string'; + } + + setPrivateReference(value) { + this.#'string' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-binary.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-binary.js new file mode 100644 index 0000000000..97262ec65f --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-binary.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-binary.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in binary notation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #0b10() { return 'get string'; } + set #0b10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'2'; + } + + setPrivateReference(value) { + this.#'2' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-exponent.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-exponent.js new file mode 100644 index 0000000000..5865c87e21 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-exponent.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-exponent.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in exponent notation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #1E+9() { return 'get string'; } + set #1E+9(param) { stringSet = param; } + + getPrivateReference() { + return this.#'1000000000'; + } + + setPrivateReference(value) { + this.#'1000000000' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-hex.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-hex.js new file mode 100644 index 0000000000..6f63591d09 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-hex.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-hex.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in hexadecimal notation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #0x10() { return 'get string'; } + set #0x10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'16'; + } + + setPrivateReference(value) { + this.#'16' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-leading-decimal.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-leading-decimal.js new file mode 100644 index 0000000000..89f2753d7c --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-leading-decimal.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-leading-decimal.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal with leading decimal point) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #.1() { return 'get string'; } + set #.1(param) { stringSet = param; } + + getPrivateReference() { + return this.#'0.1'; + } + + setPrivateReference(value) { + this.#'0.1' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-non-canonical.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-non-canonical.js new file mode 100644 index 0000000000..f6c02364fe --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-non-canonical.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-non-canonical.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal with non-canonical representation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #0.0000001() { return 'get string'; } + set #0.0000001(param) { stringSet = param; } + + getPrivateReference() { + return this.#'1e-7'; + } + + setPrivateReference(value) { + this.#'1e-7' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-octal.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-octal.js new file mode 100644 index 0000000000..52e4806c1d --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-octal.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-octal.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal in octal notation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #0o10() { return 'get string'; } + set #0o10(param) { stringSet = param; } + + getPrivateReference() { + return this.#'8'; + } + + setPrivateReference(value) { + this.#'8' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-numeric-zero.js b/test/language/statements/class/private-accessor-name-inst-literal-numeric-zero.js new file mode 100644 index 0000000000..7bfd4fef8c --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-numeric-zero.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-zero.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (numeric literal zero) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #0() { return 'get string'; } + set #0(param) { stringSet = param; } + + getPrivateReference() { + return this.#'0'; + } + + setPrivateReference(value) { + this.#'0' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-char-escape.js b/test/language/statements/class/private-accessor-name-inst-literal-string-char-escape.js new file mode 100644 index 0000000000..e4a810139a --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-char-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-char-escape.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a character escape sequence) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #'character\tescape'() { return 'get string'; } + set #'character\tescape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'character escape'; + } + + setPrivateReference(value) { + this.#'character escape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-double-quote.js b/test/language/statements/class/private-accessor-name-inst-literal-string-double-quote.js new file mode 100644 index 0000000000..f1cf39b1e7 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-double-quote.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-double-quote.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal using double quotes) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #"doubleQuote"() { return 'get string'; } + set #"doubleQuote"(param) { stringSet = param; } + + getPrivateReference() { + return this.#"doubleQuote"; + } + + setPrivateReference(value) { + this.#"doubleQuote" = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-empty.js b/test/language/statements/class/private-accessor-name-inst-literal-string-empty.js new file mode 100644 index 0000000000..53e5ab0f01 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-empty.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-empty.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal, the empty string) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #''() { return 'get string'; } + set #''(param) { stringSet = param; } + + getPrivateReference() { + return this.#''; + } + + setPrivateReference(value) { + this.#'' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-hex-escape.js b/test/language/statements/class/private-accessor-name-inst-literal-string-hex-escape.js new file mode 100644 index 0000000000..dc7644731b --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-hex-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-hex-escape.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a hexadecimal escape sequence) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #'hex\x45scape'() { return 'get string'; } + set #'hex\x45scape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'hexEscape'; + } + + setPrivateReference(value) { + this.#'hexEscape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-line-continuation.js b/test/language/statements/class/private-accessor-name-inst-literal-string-line-continuation.js new file mode 100644 index 0000000000..0b912b14f7 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-line-continuation.js @@ -0,0 +1,57 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-line-continuation.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal containing LineContinuation) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #'line\ +Continuation'() { return 'get string'; } + set #'line\ +Continuation'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'lineContinuation'; + } + + setPrivateReference(value) { + this.#'lineContinuation' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-single-quote.js b/test/language/statements/class/private-accessor-name-inst-literal-string-single-quote.js new file mode 100644 index 0000000000..bb777f094a --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-single-quote.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-single-quote.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal using single quotes) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #'singleQuote'() { return 'get string'; } + set #'singleQuote'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'singleQuote'; + } + + setPrivateReference(value) { + this.#'singleQuote' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-inst-literal-string-unicode-escape.js b/test/language/statements/class/private-accessor-name-inst-literal-string-unicode-escape.js new file mode 100644 index 0000000000..85a86c060c --- /dev/null +++ b/test/language/statements/class/private-accessor-name-inst-literal-string-unicode-escape.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-unicode-escape.case +// - src/accessor-names/default/cls-private-decl-inst.template +/*--- +description: Computed values as accessor property names (string literal containing a Unicode escape sequence) (Class declaration, private instance method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + get #'unicod\u{000065}Escape'() { return 'get string'; } + set #'unicod\u{000065}Escape'(param) { stringSet = param; } + + getPrivateReference() { + return this.#'unicodeEscape'; + } + + setPrivateReference(value) { + this.#'unicodeEscape' = value; + } +}; + +var inst = C(); + +assert.sameValue(inst.getPrivateReference(), 'get string'); + +inst.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); diff --git a/test/language/statements/class/private-accessor-name-static-computed.js b/test/language/statements/class/private-accessor-name-static-computed.js new file mode 100644 index 0000000000..cc1ee76271 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-computed.js @@ -0,0 +1,56 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/computed.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (AssignmentExpression) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ +var _; + + +var stringSet; + +class C { + static get #[_ = 'str' + 'ing']() { return 'get string'; } + static set #[_ = 'str' + 'ing'](param) { stringSet = param; } + + static getPrivateReference() { + return this.#'string'; + } + + static setPrivateReference(value) { + this.#'string' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-binary.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-binary.js new file mode 100644 index 0000000000..73ec719709 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-binary.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-binary.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal in binary notation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #0b10() { return 'get string'; } + static set #0b10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'2'; + } + + static setPrivateReference(value) { + this.#'2' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-exponent.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-exponent.js new file mode 100644 index 0000000000..da00fbd9b7 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-exponent.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-exponent.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal in exponent notation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #1E+9() { return 'get string'; } + static set #1E+9(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'1000000000'; + } + + static setPrivateReference(value) { + this.#'1000000000' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-hex.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-hex.js new file mode 100644 index 0000000000..0ded49ec41 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-hex.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-hex.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal in hexadecimal notation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #0x10() { return 'get string'; } + static set #0x10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'16'; + } + + static setPrivateReference(value) { + this.#'16' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-leading-decimal.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-leading-decimal.js new file mode 100644 index 0000000000..75f8fe5611 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-leading-decimal.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-leading-decimal.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal with leading decimal point) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #.1() { return 'get string'; } + static set #.1(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'0.1'; + } + + static setPrivateReference(value) { + this.#'0.1' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-non-canonical.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-non-canonical.js new file mode 100644 index 0000000000..875f44d79a --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-non-canonical.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-non-canonical.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal with non-canonical representation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #0.0000001() { return 'get string'; } + static set #0.0000001(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'1e-7'; + } + + static setPrivateReference(value) { + this.#'1e-7' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-octal.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-octal.js new file mode 100644 index 0000000000..6cb02d8529 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-octal.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-octal.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal in octal notation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #0o10() { return 'get string'; } + static set #0o10(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'8'; + } + + static setPrivateReference(value) { + this.#'8' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-numeric-zero.js b/test/language/statements/class/private-accessor-name-static-literal-numeric-zero.js new file mode 100644 index 0000000000..de6eef3f9b --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-numeric-zero.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-numeric-zero.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (numeric literal zero) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #0() { return 'get string'; } + static set #0(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'0'; + } + + static setPrivateReference(value) { + this.#'0' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-char-escape.js b/test/language/statements/class/private-accessor-name-static-literal-string-char-escape.js new file mode 100644 index 0000000000..9b06eeb7bc --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-char-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-char-escape.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal containing a character escape sequence) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #'character\tescape'() { return 'get string'; } + static set #'character\tescape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'character escape'; + } + + static setPrivateReference(value) { + this.#'character escape' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-double-quote.js b/test/language/statements/class/private-accessor-name-static-literal-string-double-quote.js new file mode 100644 index 0000000000..adb81a73b2 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-double-quote.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-double-quote.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal using double quotes) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #"doubleQuote"() { return 'get string'; } + static set #"doubleQuote"(param) { stringSet = param; } + + static getPrivateReference() { + return this.#"doubleQuote"; + } + + static setPrivateReference(value) { + this.#"doubleQuote" = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-empty.js b/test/language/statements/class/private-accessor-name-static-literal-string-empty.js new file mode 100644 index 0000000000..2266bb5ef5 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-empty.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-empty.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal, the empty string) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #''() { return 'get string'; } + static set #''(param) { stringSet = param; } + + static getPrivateReference() { + return this.#''; + } + + static setPrivateReference(value) { + this.#'' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-hex-escape.js b/test/language/statements/class/private-accessor-name-static-literal-string-hex-escape.js new file mode 100644 index 0000000000..43c38a57a9 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-hex-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-hex-escape.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal containing a hexadecimal escape sequence) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #'hex\x45scape'() { return 'get string'; } + static set #'hex\x45scape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'hexEscape'; + } + + static setPrivateReference(value) { + this.#'hexEscape' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-line-continuation.js b/test/language/statements/class/private-accessor-name-static-literal-string-line-continuation.js new file mode 100644 index 0000000000..3bf84cfe6e --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-line-continuation.js @@ -0,0 +1,56 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-line-continuation.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal containing LineContinuation) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #'line\ +Continuation'() { return 'get string'; } + static set #'line\ +Continuation'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'lineContinuation'; + } + + static setPrivateReference(value) { + this.#'lineContinuation' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-single-quote.js b/test/language/statements/class/private-accessor-name-static-literal-string-single-quote.js new file mode 100644 index 0000000000..e0d83ed6ad --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-single-quote.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-single-quote.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal using single quotes) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #'singleQuote'() { return 'get string'; } + static set #'singleQuote'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'singleQuote'; + } + + static setPrivateReference(value) { + this.#'singleQuote' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + diff --git a/test/language/statements/class/private-accessor-name-static-literal-string-unicode-escape.js b/test/language/statements/class/private-accessor-name-static-literal-string-unicode-escape.js new file mode 100644 index 0000000000..6c39464db7 --- /dev/null +++ b/test/language/statements/class/private-accessor-name-static-literal-string-unicode-escape.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/accessor-names/literal-string-unicode-escape.case +// - src/accessor-names/default/cls-private-decl-static.template +/*--- +description: Computed values as accessor property names (string literal containing a Unicode escape sequence) (Class declaration, static method) +flags: [generated] +info: | + [...] + MethodDefinition[Yield, Await]: + PropertyNameClassElementName [?Yield, ?Await]( + UniqueFormalParameters [~Yield, ~Await] ) { + FunctionBody [~Yield, ~Await] } + AsyncMethod[?Yield, ?Await] + get PropertyName ClassElementName [?Yield, ?Await] (){ + FunctionBody [~Yield, ~Await] } + set PropertyNameClassElementName [?Yield, ?Await] ( + PropertySetParameterList ) { FunctionBody [~Yield, ~Await] } + AsyncMethod [Yield, Await]: + async [no LineTerminator here] PropertyName + ClassElementName[?Yield, ?Await]( + UniqueFormalParameters[~Yield, +Await] ) { AsyncFunctionBody } + + + 12.2.6.7 Runtime Semantics: Evaluation + + [...] + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be the result of evaluating AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var stringSet; + +class C { + static get #'unicod\u{000065}Escape'() { return 'get string'; } + static set #'unicod\u{000065}Escape'(param) { stringSet = param; } + + static getPrivateReference() { + return this.#'unicodeEscape'; + } + + static setPrivateReference(value) { + this.#'unicodeEscape' = value; + } +} + +assert.sameValue(C.getPrivateReference(), 'get string'); + +C.setPrivateReference('set string'); +assert.sameValue(stringSet, 'set string'); + -- GitLab