Skip to content

Commit

Permalink
added check to disallow super.private variable access and test case a…
Browse files Browse the repository at this point in the history
…dded (#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
  • Loading branch information
vivek12345 authored and nicolo-ribaudo committed Sep 20, 2019
1 parent 46c70ad commit b7333ea
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 5 deletions.
6 changes: 6 additions & 0 deletions packages/babel-parser/src/parser/expression.js
Expand Up @@ -655,6 +655,12 @@ export default class ExpressionParser extends LValParser {
node.object = base;
node.property = this.parseMaybePrivateName();
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) {
node.optional = false;
return this.finishNode(node, "OptionalMemberExpression");
Expand Down
@@ -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)"
}
1 change: 0 additions & 1 deletion scripts/tests/flow/flow_tests_whitelist.txt
Expand Up @@ -19,7 +19,6 @@ class_properties/migrated_0021.js
class_properties/migrated_0026.js
decorators/migrated_0003.js
private_class_properties/multiple.js
private_class_properties/super.js
private_class_properties/getter_and_field.js
private_class_properties/getter_duplicate.js
private_class_properties/setter_and_field.js
Expand Down
4 changes: 0 additions & 4 deletions scripts/tests/test262/test262_whitelist.txt
Expand Up @@ -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-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/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(strict mode)
language/expressions/object/method-definition/private-name-early-error-gen-inside-class.js(default)
Expand Down Expand Up @@ -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-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/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(strict mode)
language/statements/for-in/dstr/array-rest-elision-invalid.js(default)
Expand Down

0 comments on commit b7333ea

Please sign in to comment.