Chromium Code Reviews| Index: pkg/analyzer/lib/src/generated/parser.dart |
| diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart |
| index d537f0c43f02738e2a1f869f0ec0b0d664442445..010901226c40337b672c73e583c42f47a54b3e79 100644 |
| --- a/pkg/analyzer/lib/src/generated/parser.dart |
| +++ b/pkg/analyzer/lib/src/generated/parser.dart |
| @@ -678,9 +678,9 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| if (identical(_oldNode, node.exceptionType)) { |
| return _parser.parseTypeName(); |
| } else if (identical(_oldNode, node.exceptionParameter)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.stackTraceParameter)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.body)) { |
| return _parser.parseBlock(); |
| } |
| @@ -722,7 +722,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (node.metadata.contains(_oldNode)) { |
| return _parser.parseAnnotation(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.typeParameters)) { |
| return _parser.parseTypeParameterList(); |
| } else if (identical(_oldNode, node.superclass)) { |
| @@ -885,7 +885,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (node.metadata.contains(_oldNode)) { |
| return _parser.parseAnnotation(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } |
| return _notAChild(node); |
| } |
| @@ -897,7 +897,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (node.metadata.contains(_oldNode)) { |
| return _parser.parseAnnotation(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (node.constants.contains(_oldNode)) { |
| throw new InsufficientContextException(); |
| } |
| @@ -977,7 +977,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| throw new InsufficientContextException(); |
| //return parser.parseDeclaredIdentifier(); |
| } else if (identical(_oldNode, node.identifier)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.body)) { |
| return _parser.parseStatement2(); |
| } |
| @@ -1015,7 +1015,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (identical(_oldNode, node.returnType)) { |
| return _parser.parseReturnType(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.functionExpression)) { |
| throw new InsufficientContextException(); |
| } |
| @@ -1059,7 +1059,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (identical(_oldNode, node.returnType)) { |
| return _parser.parseReturnType(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.typeParameters)) { |
| return _parser.parseTypeParameterList(); |
| } else if (identical(_oldNode, node.parameters)) { |
| @@ -1077,7 +1077,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (identical(_oldNode, node.returnType)) { |
| return _parser.parseReturnType(); |
| } else if (identical(_oldNode, node.identifier)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.parameters)) { |
| return _parser.parseFormalParameterList(); |
| } |
| @@ -1121,7 +1121,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (identical(_oldNode, node.uri)) { |
| return _parser.parseStringLiteral(); |
| } else if (identical(_oldNode, node.prefix)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (node.combinators.contains(_oldNode)) { |
| return _parser.parseCombinator(); |
| } |
| @@ -1181,7 +1181,8 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| @override |
| AstNode visitLabel(Label node) { |
| if (identical(_oldNode, node.label)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier( |
| + isDeclaration: node.parent is LabeledStatement); |
| } |
| return _notAChild(node); |
| } |
| @@ -1189,7 +1190,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| @override |
| AstNode visitLabeledStatement(LabeledStatement node) { |
| if (node.labels.contains(_oldNode)) { |
| - return _parser.parseLabel(); |
| + return _parser.parseLabel(isDeclaration: true); |
| } else if (identical(_oldNode, node.statement)) { |
| return _parser.parseStatement2(); |
| } |
| @@ -1260,7 +1261,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| if (node.operatorKeyword != null) { |
| throw new InsufficientContextException(); |
| } |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.body)) { |
| //return parser.parseFunctionBody(); |
| throw new InsufficientContextException(); |
| @@ -1555,7 +1556,7 @@ class IncrementalParseDispatcher implements AstVisitor<AstNode> { |
| } else if (node.metadata.contains(_oldNode)) { |
| return _parser.parseAnnotation(); |
| } else if (identical(_oldNode, node.name)) { |
| - return _parser.parseSimpleIdentifier(); |
| + return _parser.parseSimpleIdentifier(isDeclaration: true); |
| } else if (identical(_oldNode, node.bound)) { |
| return _parser.parseTypeName(); |
| } |
| @@ -2539,10 +2540,10 @@ class Parser { |
| null, |
| null, |
| null, |
| - _createSyntheticIdentifier(), |
| + _createSyntheticIdentifier(isDeclaration: true), |
| null, |
| new FormalParameterList( |
| - null, new List<FormalParameter>(), null, null, null), |
| + null, <FormalParameter>[], null, null, null), |
| new EmptyFunctionBody(_createSyntheticToken(TokenType.SEMICOLON))); |
| } |
| return null; |
| @@ -2556,11 +2557,11 @@ class Parser { |
| modifiers.factoryKeyword, |
| parseSimpleIdentifier(), |
| getAndAdvance(), |
| - parseSimpleIdentifier(), |
| + parseSimpleIdentifier(isDeclaration: true), |
| parseFormalParameterList()); |
| } else if (_tokenMatches(_peek(), TokenType.OPEN_PAREN)) { |
| TypeName returnType = _parseOptionalTypeNameComment(); |
| - SimpleIdentifier methodName = parseSimpleIdentifier(); |
| + SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = _parseGenericCommentTypeParameters(); |
| FormalParameterList parameters = parseFormalParameterList(); |
| if (_matches(TokenType.COLON) || |
| @@ -2571,7 +2572,7 @@ class Parser { |
| modifiers.externalKeyword, |
| _validateModifiersForConstructor(modifiers), |
| modifiers.factoryKeyword, |
| - methodName, |
| + new SimpleIdentifier(methodName.token, isDeclaration: false), |
|
Brian Wilkerson
2016/03/25 15:37:31
Why do we need to create a different node? We pass
Bob Nystrom
2016/03/28 16:09:16
Great question. It's because the methodName parsed
|
| null, |
| null, |
| parameters); |
| @@ -2663,7 +2664,7 @@ class Parser { |
| _unlockErrorListener(); |
| } |
| } else if (_tokenMatches(_peek(), TokenType.OPEN_PAREN)) { |
| - SimpleIdentifier methodName = parseSimpleIdentifier(); |
| + SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = _parseGenericCommentTypeParameters(); |
| FormalParameterList parameters = parseFormalParameterList(); |
| if (methodName.name == className) { |
| @@ -2673,7 +2674,7 @@ class Parser { |
| modifiers.externalKeyword, |
| _validateModifiersForConstructor(modifiers), |
| modifiers.factoryKeyword, |
| - methodName, |
| + new SimpleIdentifier(methodName.token, isDeclaration: true), |
| null, |
| null, |
| parameters); |
| @@ -3229,8 +3230,9 @@ class Parser { |
| * label ::= |
| * identifier ':' |
| */ |
| - Label parseLabel() { |
| - SimpleIdentifier label = parseSimpleIdentifier(); |
| + Label parseLabel({bool isDeclaration: false}) { |
| + SimpleIdentifier label = |
| + parseSimpleIdentifier(isDeclaration: isDeclaration); |
| Token colon = _expect(TokenType.COLON); |
| return new Label(label, colon); |
| } |
| @@ -3322,7 +3324,7 @@ class Parser { |
| commentAndMetadata.comment, |
| commentAndMetadata.metadata, |
| holder.type, |
| - identifier, |
| + new SimpleIdentifier(identifier.token, isDeclaration: true), |
| typeParameters, |
| parameters); |
| } else { |
| @@ -3367,8 +3369,12 @@ class Parser { |
| null, |
| null); |
| } |
| - return new SimpleFormalParameter(commentAndMetadata.comment, |
| - commentAndMetadata.metadata, holder.keyword, holder.type, identifier); |
| + return new SimpleFormalParameter( |
| + commentAndMetadata.comment, |
| + commentAndMetadata.metadata, |
| + holder.keyword, |
| + holder.type, |
| + new SimpleIdentifier(identifier.token, isDeclaration: true)); |
| } |
| /** |
| @@ -3409,7 +3415,7 @@ class Parser { |
| * identifier ::= |
| * IDENTIFIER |
| */ |
| - SimpleIdentifier parseSimpleIdentifier() { |
| + SimpleIdentifier parseSimpleIdentifier({bool isDeclaration: false}) { |
| if (_matchesIdentifier()) { |
| String lexeme = _currentToken.lexeme; |
| if ((_inAsync || _inGenerator) && |
| @@ -3417,10 +3423,11 @@ class Parser { |
| _reportErrorForCurrentToken( |
| ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER); |
| } |
| - return new SimpleIdentifier(getAndAdvance()); |
| + return new SimpleIdentifier(getAndAdvance(), |
| + isDeclaration: isDeclaration); |
| } |
| _reportErrorForCurrentToken(ParserErrorCode.MISSING_IDENTIFIER); |
| - return _createSyntheticIdentifier(); |
| + return _createSyntheticIdentifier(isDeclaration: isDeclaration); |
| } |
| /** |
| @@ -3535,7 +3542,7 @@ class Parser { |
| */ |
| TypeParameter parseTypeParameter() { |
| CommentAndMetadata commentAndMetadata = _parseCommentAndMetadata(); |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| if (_matchesKeyword(Keyword.EXTENDS)) { |
| Token keyword = getAndAdvance(); |
| TypeName bound = parseTypeName(); |
| @@ -3705,7 +3712,7 @@ class Parser { |
| /** |
| * Return a synthetic identifier. |
| */ |
| - SimpleIdentifier _createSyntheticIdentifier() { |
| + SimpleIdentifier _createSyntheticIdentifier({bool isDeclaration: false}) { |
| Token syntheticToken; |
| if (_currentToken.type == TokenType.KEYWORD) { |
| // Consider current keyword token as an identifier. |
| @@ -3718,7 +3725,7 @@ class Parser { |
| } else { |
| syntheticToken = _createSyntheticToken(TokenType.IDENTIFIER); |
| } |
| - return new SimpleIdentifier(syntheticToken); |
| + return new SimpleIdentifier(syntheticToken, isDeclaration: isDeclaration); |
| } |
| /** |
| @@ -4746,7 +4753,7 @@ class Parser { |
| commentAndMetadata, abstractKeyword, keyword); |
| } |
| } |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| String className = name.name; |
| TypeParameterList typeParameters = null; |
| if (_matches(TokenType.LT)) { |
| @@ -4899,7 +4906,7 @@ class Parser { |
| */ |
| ClassTypeAlias _parseClassTypeAlias(CommentAndMetadata commentAndMetadata, |
| Token abstractKeyword, Token classKeyword) { |
| - SimpleIdentifier className = parseSimpleIdentifier(); |
| + SimpleIdentifier className = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = null; |
| if (_matches(TokenType.LT)) { |
| typeParameters = parseTypeParameterList(); |
| @@ -5708,7 +5715,7 @@ class Parser { |
| CommentAndMetadata commentAndMetadata = _parseCommentAndMetadata(); |
| SimpleIdentifier name; |
| if (_matchesIdentifier()) { |
| - name = parseSimpleIdentifier(); |
| + name = parseSimpleIdentifier(isDeclaration: true); |
| } else { |
| name = _createSyntheticIdentifier(); |
| } |
| @@ -5729,7 +5736,7 @@ class Parser { |
| */ |
| EnumDeclaration _parseEnumDeclaration(CommentAndMetadata commentAndMetadata) { |
| Token keyword = _expectKeyword(Keyword.ENUM); |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| Token leftBracket = null; |
| List<EnumConstantDeclaration> constants = |
| new List<EnumConstantDeclaration>(); |
| @@ -5992,8 +5999,13 @@ class Parser { |
| Token keyword = variableList.keyword; |
| TypeName type = variableList.type; |
| if (keyword != null || type != null) { |
| - loopVariable = new DeclaredIdentifier(commentAndMetadata.comment, |
| - commentAndMetadata.metadata, keyword, type, variable.name); |
| + loopVariable = new DeclaredIdentifier( |
| + commentAndMetadata.comment, |
| + commentAndMetadata.metadata, |
| + keyword, |
| + type, |
| + new SimpleIdentifier(variable.name.token, |
| + isDeclaration: true)); |
| } else { |
| if (!commentAndMetadata.metadata.isEmpty) { |
| // TODO(jwren) metadata isn't allowed before the identifier in |
| @@ -6204,7 +6216,7 @@ class Parser { |
| !_tokenMatches(_peek(), TokenType.OPEN_PAREN)) { |
| keyword = getAndAdvance(); |
| } |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = _parseGenericMethodTypeParameters(); |
| FormalParameterList parameters = null; |
| if (!isGetter) { |
| @@ -6304,7 +6316,7 @@ class Parser { |
| if (hasReturnTypeInTypeAlias) { |
| returnType = parseReturnType(); |
| } |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = null; |
| if (_matches(TokenType.LT)) { |
| typeParameters = parseTypeParameterList(); |
| @@ -6406,7 +6418,7 @@ class Parser { |
| MethodDeclaration _parseGetter(CommentAndMetadata commentAndMetadata, |
| Token externalKeyword, Token staticKeyword, TypeName returnType) { |
| Token propertyKeyword = _expectKeyword(Keyword.GET); |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| if (_matches(TokenType.OPEN_PAREN) && |
| _tokenMatches(_peek(), TokenType.CLOSE_PAREN)) { |
| _reportErrorForCurrentToken(ParserErrorCode.GETTER_WITH_PARAMETERS); |
| @@ -6492,7 +6504,7 @@ class Parser { |
| } |
| if (_matchesKeyword(Keyword.AS)) { |
| asToken = getAndAdvance(); |
| - prefix = parseSimpleIdentifier(); |
| + prefix = parseSimpleIdentifier(isDeclaration: true); |
| } else if (deferredToken != null) { |
| _reportErrorForCurrentToken( |
| ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT); |
| @@ -6508,7 +6520,7 @@ class Parser { |
| _advance(); |
| if (_matchesKeyword(Keyword.AS)) { |
| asToken = getAndAdvance(); |
| - prefix = parseSimpleIdentifier(); |
| + prefix = parseSimpleIdentifier(isDeclaration: true); |
| } |
| } |
| } |
| @@ -6816,7 +6828,7 @@ class Parser { |
| Token externalKeyword, |
| Token staticKeyword, |
| TypeName returnType) { |
| - SimpleIdentifier methodName = parseSimpleIdentifier(); |
| + SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true); |
| TypeParameterList typeParameters = _parseGenericMethodTypeParameters(); |
| FormalParameterList parameters; |
| if (!_matches(TokenType.OPEN_PAREN) && |
| @@ -7179,7 +7191,8 @@ class Parser { |
| _reportErrorForCurrentToken( |
| ParserErrorCode.NON_USER_DEFINABLE_OPERATOR, [_currentToken.lexeme]); |
| } |
| - SimpleIdentifier name = new SimpleIdentifier(getAndAdvance()); |
| + SimpleIdentifier name = |
| + new SimpleIdentifier(getAndAdvance(), isDeclaration: true); |
| if (_matches(TokenType.EQ)) { |
| Token previous = _currentToken.previous; |
| if ((_tokenMatches(previous, TokenType.EQ_EQ) || |
| @@ -7564,7 +7577,7 @@ class Parser { |
| MethodDeclaration _parseSetter(CommentAndMetadata commentAndMetadata, |
| Token externalKeyword, Token staticKeyword, TypeName returnType) { |
| Token propertyKeyword = _expectKeyword(Keyword.SET); |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| FormalParameterList parameters = parseFormalParameterList(); |
| _validateFormalParameterList(parameters); |
| FunctionBody body = _parseFunctionBody( |
| @@ -7886,10 +7899,10 @@ class Parser { |
| if (_matchesKeyword(Keyword.CATCH)) { |
| catchKeyword = getAndAdvance(); |
| leftParenthesis = _expect(TokenType.OPEN_PAREN); |
| - exceptionParameter = parseSimpleIdentifier(); |
| + exceptionParameter = parseSimpleIdentifier(isDeclaration: true); |
| if (_matches(TokenType.COMMA)) { |
| comma = getAndAdvance(); |
| - stackTraceParameter = parseSimpleIdentifier(); |
| + stackTraceParameter = parseSimpleIdentifier(isDeclaration: true); |
| } |
| rightParenthesis = _expect(TokenType.CLOSE_PAREN); |
| } |
| @@ -8122,7 +8135,7 @@ class Parser { |
| // of a construct like "class C { int @deprecated foo() {} }" (i.e. the |
| // user is in the middle of inserting "int bar;" prior to |
| // "@deprecated foo() {}"). |
| - SimpleIdentifier name = parseSimpleIdentifier(); |
| + SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true); |
| Token equals = null; |
| Expression initializer = null; |
| if (_matches(TokenType.EQ)) { |