added check to disallow super.private variable access and test case added (#10472)
* 🚀 added check to disallow super.private variable access and test case added * ♻️ change the other linting change back to how it was * ♻️ change the other linting change back to how it was * ♻️ added newline at the end test output.json file * ♻️ changed the linting style to the way it was * ♻️ updated error message, removed super private member access test cases from whitelist of flow and test 262 suite * ♻️ added newline in output.json
This commit is contained in:
parent
46c70ad734
commit
b7333ea97a
@ -655,6 +655,12 @@ export default class ExpressionParser extends LValParser {
|
|||||||
node.object = base;
|
node.object = base;
|
||||||
node.property = this.parseMaybePrivateName();
|
node.property = this.parseMaybePrivateName();
|
||||||
node.computed = false;
|
node.computed = false;
|
||||||
|
if (
|
||||||
|
node.property.type === "PrivateName" &&
|
||||||
|
node.object.type === "Super"
|
||||||
|
) {
|
||||||
|
this.raise(startPos, "Private fields can't be accessed on super");
|
||||||
|
}
|
||||||
if (state.optionalChainMember) {
|
if (state.optionalChainMember) {
|
||||||
node.optional = false;
|
node.optional = false;
|
||||||
return this.finishNode(node, "OptionalMemberExpression");
|
return this.finishNode(node, "OptionalMemberExpression");
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
class A extends B {
|
||||||
|
#x;
|
||||||
|
|
||||||
|
method() {
|
||||||
|
super.#x;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"plugins": [
|
||||||
|
"classPrivateProperties"
|
||||||
|
],
|
||||||
|
"throws": "Private fields can't be accessed on super (5:4)"
|
||||||
|
}
|
||||||
@ -19,7 +19,6 @@ class_properties/migrated_0021.js
|
|||||||
class_properties/migrated_0026.js
|
class_properties/migrated_0026.js
|
||||||
decorators/migrated_0003.js
|
decorators/migrated_0003.js
|
||||||
private_class_properties/multiple.js
|
private_class_properties/multiple.js
|
||||||
private_class_properties/super.js
|
|
||||||
private_class_properties/getter_and_field.js
|
private_class_properties/getter_and_field.js
|
||||||
private_class_properties/getter_duplicate.js
|
private_class_properties/getter_duplicate.js
|
||||||
private_class_properties/setter_and_field.js
|
private_class_properties/setter_and_field.js
|
||||||
|
|||||||
@ -98,8 +98,6 @@ language/expressions/class/elements/syntax/early-errors/invalid-names/method-out
|
|||||||
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode)
|
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode)
|
||||||
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default)
|
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default)
|
||||||
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode)
|
language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode)
|
||||||
language/expressions/class/elements/syntax/early-errors/super-private-access-invalid.js(default)
|
|
||||||
language/expressions/class/elements/syntax/early-errors/super-private-access-invalid.js(strict mode)
|
|
||||||
language/expressions/object/method-definition/private-name-early-error-async-gen-inside-class.js(default)
|
language/expressions/object/method-definition/private-name-early-error-async-gen-inside-class.js(default)
|
||||||
language/expressions/object/method-definition/private-name-early-error-async-gen-inside-class.js(strict mode)
|
language/expressions/object/method-definition/private-name-early-error-async-gen-inside-class.js(strict mode)
|
||||||
language/expressions/object/method-definition/private-name-early-error-gen-inside-class.js(default)
|
language/expressions/object/method-definition/private-name-early-error-gen-inside-class.js(default)
|
||||||
@ -282,8 +280,6 @@ language/statements/class/elements/syntax/early-errors/invalid-names/method-outt
|
|||||||
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode)
|
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode)
|
||||||
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default)
|
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default)
|
||||||
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode)
|
language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode)
|
||||||
language/statements/class/elements/syntax/early-errors/super-private-access-invalid.js(default)
|
|
||||||
language/statements/class/elements/syntax/early-errors/super-private-access-invalid.js(strict mode)
|
|
||||||
language/statements/for-in/dstr/array-rest-before-elision.js(default)
|
language/statements/for-in/dstr/array-rest-before-elision.js(default)
|
||||||
language/statements/for-in/dstr/array-rest-before-elision.js(strict mode)
|
language/statements/for-in/dstr/array-rest-before-elision.js(strict mode)
|
||||||
language/statements/for-in/dstr/array-rest-elision-invalid.js(default)
|
language/statements/for-in/dstr/array-rest-elision-invalid.js(default)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user