From a18166d2a9a9c5964061f7dae3841fe9b56eb9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 24 Dec 2019 05:43:39 -0500 Subject: [PATCH] refactor: remove inClassProperty parser state (#10906) --- packages/babel-parser/src/parser/expression.js | 2 +- packages/babel-parser/src/parser/statement.js | 9 --------- packages/babel-parser/src/tokenizer/state.js | 1 - 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index e844bb7f91..4660d3cc07 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1389,7 +1389,7 @@ export default class ExpressionParser extends LValParser { if (this.eat(tt.dot)) { const metaProp = this.parseMetaProperty(node, meta, "target"); - if (!this.scope.inNonArrowFunction && !this.state.inClassProperty) { + if (!this.scope.inNonArrowFunction && !this.scope.inClass) { let error = "new.target can only be used in functions"; if (this.hasPlugin("classProperties")) { diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 9c8d1afb48..be090db6ed 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1048,11 +1048,9 @@ export default class StatementParser extends ExpressionParser { } const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - const oldInClassProperty = this.state.inClassProperty; const oldYieldPos = this.state.yieldPos; const oldAwaitPos = this.state.awaitPos; this.state.maybeInArrowParameters = false; - this.state.inClassProperty = false; this.state.yieldPos = -1; this.state.awaitPos = -1; this.scope.enter(functionFlags(node.async, node.generator)); @@ -1084,7 +1082,6 @@ export default class StatementParser extends ExpressionParser { } this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - this.state.inClassProperty = oldInClassProperty; this.state.yieldPos = oldYieldPos; this.state.awaitPos = oldAwaitPos; @@ -1575,13 +1572,10 @@ export default class StatementParser extends ExpressionParser { parseClassPrivateProperty( node: N.ClassPrivateProperty, ): N.ClassPrivateProperty { - this.state.inClassProperty = true; - this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); node.value = this.eat(tt.eq) ? this.parseMaybeAssign() : null; this.semicolon(); - this.state.inClassProperty = false; this.scope.exit(); @@ -1593,8 +1587,6 @@ export default class StatementParser extends ExpressionParser { this.expectPlugin("classProperties"); } - this.state.inClassProperty = true; - this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); if (this.match(tt.eq)) { @@ -1605,7 +1597,6 @@ export default class StatementParser extends ExpressionParser { node.value = null; } this.semicolon(); - this.state.inClassProperty = false; this.scope.exit(); diff --git a/packages/babel-parser/src/tokenizer/state.js b/packages/babel-parser/src/tokenizer/state.js index 6ff711f373..d3f370df14 100644 --- a/packages/babel-parser/src/tokenizer/state.js +++ b/packages/babel-parser/src/tokenizer/state.js @@ -64,7 +64,6 @@ export default class State { inType: boolean = false; noAnonFunctionType: boolean = false; inPropertyName: boolean = false; - inClassProperty: boolean = false; hasFlowComment: boolean = false; isIterator: boolean = false;