mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +02:00
This came up with a V8 bug where private fields weren't resolved properly from nested classes where both the inner and the outer class had private fields.
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
// This file was procedurally generated from the following sources:
|
|
// - src/class-elements/private-field-on-nested-class.case
|
|
// - src/class-elements/default/cls-expr.template
|
|
/*---
|
|
description: PrivateName CallExpression usage (private field) (field definitions in a class expression)
|
|
esid: prod-FieldDefinition
|
|
features: [class-fields-private, class-fields-public, class]
|
|
flags: [generated]
|
|
info: |
|
|
Updated Productions
|
|
|
|
CallExpression[Yield, Await]:
|
|
CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await]
|
|
SuperCall[?Yield, ?Await]
|
|
CallExpression[?Yield, ?Await]Arguments[?Yield, ?Await]
|
|
CallExpression[?Yield, ?Await][Expression[+In, ?Yield, ?Await]]
|
|
CallExpression[?Yield, ?Await].IdentifierName
|
|
CallExpression[?Yield, ?Await]TemplateLiteral[?Yield, ?Await]
|
|
CallExpression[?Yield, ?Await].PrivateName
|
|
|
|
---*/
|
|
|
|
|
|
var C = class {
|
|
#outer = 'test262';
|
|
|
|
B_withoutPrivateField = class {
|
|
method(o) {
|
|
return o.#outer;
|
|
}
|
|
}
|
|
|
|
B_withPrivateField = class {
|
|
#inner = 42;
|
|
method(o) {
|
|
return o.#outer;
|
|
}
|
|
}
|
|
}
|
|
|
|
let c = new C();
|
|
let innerB1 = new c.B_withoutPrivateField();
|
|
assert.sameValue(innerB1.method(c), 'test262');
|
|
let innerB2 = new c.B_withPrivateField();
|
|
assert.sameValue(innerB2.method(c), 'test262');
|