diff options
Diffstat (limited to 'js/src/tests/test262/language/statements/class/elements/fields-anonymous-function-length.js')
-rw-r--r-- | js/src/tests/test262/language/statements/class/elements/fields-anonymous-function-length.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/statements/class/elements/fields-anonymous-function-length.js b/js/src/tests/test262/language/statements/class/elements/fields-anonymous-function-length.js new file mode 100644 index 0000000000..38280bdfca --- /dev/null +++ b/js/src/tests/test262/language/statements/class/elements/fields-anonymous-function-length.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/fields-anonymous-function-length.case +// - src/class-elements/default/cls-decl.template +/*--- +description: Anonymous functions in field initializer have length properly set (field definitions in a class declaration) +esid: prod-FieldDefinition +features: [class-fields-private, class-fields-public, class] +flags: [generated] +info: | + Updated Productions + + FieldDefinition : + ClassElementName Initializer_opt + + InitializeInstanceFields ( O, constructor ) + 1. Assert: Type ( O ) is Object. + 2. Assert: constructor is an ECMAScript function object. + 3. Let fields be the value of constructor.[[Fields]]. + 4. For each item fieldRecord in order from fields, + a. Perform ? DefineField(O, fieldRecord). + 5. Return. + + DefineField(receiver, fieldRecord) + 1. Assert: Type(receiver) is Object. + 2. Assert: fieldRecord is a Record as created by ClassFieldDefinitionEvaluation. + 3. Let name be fieldRecord.[[Name]]. + 4. Let initializer be fieldRecord.[[Initializer]]. + 5. If initializer is not empty, then + a. Let initValue be ? Call(initializer, receiver). + ... + +---*/ + + +class C { + field = function() {}; + #field = (a, b, c, d) => undefined; + + accessPrivateField() { + return this.#field; + } +} + +let c = new C(); +assert.sameValue(c.accessPrivateField().length, 4); +assert.sameValue(c.field.length, 0); + +reportCompare(0, 0); |