Skip to content

Commit

Permalink
Remove redundant feature detection in Parser. These features are alre…
Browse files Browse the repository at this point in the history
…ady detected in IRFactory.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160658161
  • Loading branch information
tbreisacher authored and brad4d committed Jul 5, 2017
1 parent cd1dd52 commit 67a1a64
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 97 deletions.
1 change: 1 addition & 0 deletions src/com/google/javascript/jscomp/parsing/IRFactory.java
Expand Up @@ -1021,6 +1021,7 @@ Node processObjectPattern(ObjectPatternTree tree) {
}

Node processAssignmentRestElement(AssignmentRestElementTree tree) {
maybeWarnForFeature(tree, Feature.ARRAY_PATTERN_REST);
return newNode(Token.REST, transformNodeWithInlineJsDoc(tree.assignmentTarget));
}

Expand Down
34 changes: 5 additions & 29 deletions src/com/google/javascript/jscomp/parsing/parser/Parser.java
Expand Up @@ -948,7 +948,6 @@ private ParseTree parseAsyncMethod() {
}

private ParseTree parseAsyncMethod(PartialClassElement partial) {
features = features.with(Feature.ASYNC_FUNCTIONS);
eatPredefinedString(ASYNC);
if (peekIdOrKeyword()) {
IdentifierToken name = eatIdOrKeywordAsId();
Expand Down Expand Up @@ -1214,7 +1213,6 @@ private ParseTree parseFunctionExpression() {

private ParseTree parseAsyncFunctionDeclaration() {
SourcePosition start = getTreeStartLocation();
features = features.with(Feature.ASYNC_FUNCTIONS);
eatAsyncFunctionStart();

if (peek(TokenType.STAR)) {
Expand All @@ -1234,7 +1232,6 @@ private ParseTree parseAsyncFunctionDeclaration() {

private ParseTree parseAsyncFunctionExpression() {
SourcePosition start = getTreeStartLocation();
features = features.with(Feature.ASYNC_FUNCTIONS);
eatAsyncFunctionStart();

if (peek(TokenType.STAR)) {
Expand Down Expand Up @@ -1314,7 +1311,6 @@ private ParseTree parseParameter(ParamContext context) {
if (context == ParamContext.IMPLEMENTATION
&& !parameter.isRestParameter()
&& peek(TokenType.EQUAL)) {
features = features.with(Feature.DEFAULT_PARAMETERS);
eat(TokenType.EQUAL);
ParseTree defaultValue = parseAssignmentExpression();
parameter = new DefaultParameterTree(getTreeLocation(start), parameter, defaultValue);
Expand All @@ -1329,7 +1325,6 @@ && peek(TokenType.EQUAL)) {
}

private ParseTree parseRestParameter() {
features = features.with(Feature.REST_PARAMETERS);
SourcePosition start = getTreeStartLocation();
eat(TokenType.SPREAD);
return new RestParameterTree(
Expand Down Expand Up @@ -1709,17 +1704,11 @@ private VariableDeclarationListTree parseVariableDeclarationList(
TokenType token = peekType();

switch (token) {
case CONST:
features = features.with(Feature.CONST_DECLARATIONS);
eat(token);
break;
case LET:
features = features.with(Feature.LET_DECLARATIONS);
eat(token);
break;
case VAR:
eat(token);
break;
case CONST:
case LET:
case VAR:
eat(token);
break;
default:
reportError(peekToken(), "expected declaration");
return null;
Expand Down Expand Up @@ -1926,10 +1915,8 @@ private void checkVanillaForInitializers(VariableDeclarationListTree variables)
/** Reports if declaration requires an initializer, assuming initializer is absent. */
private void maybeReportNoInitializer(TokenType token, ParseTree lvalue) {
if (token == TokenType.CONST) {
features = features.with(Feature.CONST_DECLARATIONS);
reportError("const variables must have an initializer");
} else if (lvalue.isPattern()) {
features = features.with(Feature.DESTRUCTURING);
reportError("destructuring must have an initializer");
}
}
Expand Down Expand Up @@ -2828,9 +2815,6 @@ private ParseTree parseAssignment(Expression expressionIn) {
reportError("invalid assignment target");
}
Token operator = nextToken();
if (TokenType.STAR_STAR_EQUAL.equals(operator.type)) {
features = features.with(Feature.EXPONENT_OP);
}
ParseTree right = parseAssignment(expressionIn);
return new BinaryOperatorTree(getTreeLocation(start), left, operator, right);
}
Expand Down Expand Up @@ -2877,7 +2861,6 @@ private ParseTree completeAssignmentExpressionParseAtArrow(

private ParseTree completeArrowFunctionParseAtArrow(
ParseTree leftOfArrow, Expression expressionIn) {
features = features.with(Feature.ARROW_FUNCTIONS);
FormalParameterListTree arrowFormalParameters = transformToArrowFormalParameters(leftOfArrow);
if (peekImplicitSemiColon()) {
reportError("No newline allowed before '=>'");
Expand Down Expand Up @@ -2939,7 +2922,6 @@ private ParseTree completeAssignmentExpressionParseAtArrow(CallExpressionTree ca

private ParseTree parseAsyncArrowFunction(Expression expressionIn) {
SourcePosition start = getTreeStartLocation();
features = features.with(Feature.ARROW_FUNCTIONS, Feature.ASYNC_FUNCTIONS);
eatPredefinedString(ASYNC);
if (peekImplicitSemiColon()) {
reportError("No newline allowed between `async` and arrow function parameter list");
Expand Down Expand Up @@ -3275,7 +3257,6 @@ private ParseTree parseExponentiationExpression() {
"Unary operator '%s' requires parentheses before '**'",
left.asUnaryExpression().operator);
}
features = features.with(Feature.EXPONENT_OP);
Token operator = nextToken();
ParseTree right = parseExponentiationExpression();
return new BinaryOperatorTree(getTreeLocation(start), left, operator, right);
Expand Down Expand Up @@ -3471,7 +3452,6 @@ private ParseTree parseNewExpression() {

private ParseTree parseNewDotSomething() {
// currently only "target" is valid after "new."
features = features.with(Feature.NEW_TARGET);
SourcePosition start = getTreeStartLocation();
eat(TokenType.NEW);
eat(TokenType.PERIOD);
Expand Down Expand Up @@ -3540,7 +3520,6 @@ private boolean peekPatternStart() {
}

private ParseTree parsePattern(PatternKind kind) {
features = features.with(Feature.DESTRUCTURING);
switch (peekType()) {
case OPEN_SQUARE:
return parseArrayPattern(kind);
Expand All @@ -3566,7 +3545,6 @@ private ParseTree parseArrayPatternElement(PatternKind patternKind) {
}

private ParseTree parseArrayPatternRest(PatternKind patternKind) {
features = features.with(Feature.ARRAY_PATTERN_REST);
SourcePosition start = getTreeStartLocation();
eat(TokenType.SPREAD);
ParseTree patternAssignmentTarget = parseRestAssignmentTarget(patternKind);
Expand All @@ -3583,7 +3561,6 @@ private ParseTree parseRestAssignmentTarget(PatternKind patternKind) {

// Pattern ::= ... | "[" Element? ("," Element?)* "]"
private ParseTree parseArrayPattern(PatternKind kind) {
features = features.with(Feature.DESTRUCTURING);
SourcePosition start = getTreeStartLocation();
ImmutableList.Builder<ParseTree> elements = ImmutableList.builder();
eat(TokenType.OPEN_SQUARE);
Expand Down Expand Up @@ -3613,7 +3590,6 @@ private ParseTree parseArrayPattern(PatternKind kind) {

// Pattern ::= "{" (Field ("," Field)* ","?)? "}" | ...
private ParseTree parseObjectPattern(PatternKind kind) {
features = features.with(Feature.DESTRUCTURING);
SourcePosition start = getTreeStartLocation();
ImmutableList.Builder<ParseTree> fields = ImmutableList.builder();
eat(TokenType.OPEN_CURLY);
Expand Down

0 comments on commit 67a1a64

Please sign in to comment.