Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(912)

Unified Diff: pkg/analyzer_experimental/lib/src/generated/ast.dart

Issue 23080005: New analysis_experimental snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_experimental/lib/src/generated/ast.dart
diff --git a/pkg/analyzer_experimental/lib/src/generated/ast.dart b/pkg/analyzer_experimental/lib/src/generated/ast.dart
index 8fc097efddcc2e554754eb3f768ad42007d82e42..f92e16f7ec4161b5599cf1b3c9391377a2e0676f 100644
--- a/pkg/analyzer_experimental/lib/src/generated/ast.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/ast.dart
@@ -5833,7 +5833,7 @@ class FieldDeclaration extends ClassMember {
/**
* The token representing the 'static' keyword, or `null` if the fields are not static.
*/
- Token _keyword;
+ Token _staticKeyword;
/**
* The fields being declared.
@@ -5850,12 +5850,12 @@ class FieldDeclaration extends ClassMember {
*
* @param comment the documentation comment associated with this field
* @param metadata the annotations associated with this field
- * @param keyword the token representing the 'static' keyword
+ * @param staticKeyword the token representing the 'static' keyword
* @param fieldList the fields being declared
* @param semicolon the semicolon terminating the declaration
*/
- FieldDeclaration.full(Comment comment, List<Annotation> metadata, Token keyword, VariableDeclarationList fieldList, Token semicolon) : super.full(comment, metadata) {
- this._keyword = keyword;
+ FieldDeclaration.full(Comment comment, List<Annotation> metadata, Token staticKeyword, VariableDeclarationList fieldList, Token semicolon) : super.full(comment, metadata) {
+ this._staticKeyword = staticKeyword;
this._fieldList = becomeParentOf(fieldList);
this._semicolon = semicolon;
}
@@ -5865,11 +5865,11 @@ class FieldDeclaration extends ClassMember {
*
* @param comment the documentation comment associated with this field
* @param metadata the annotations associated with this field
- * @param keyword the token representing the 'static' keyword
+ * @param staticKeyword the token representing the 'static' keyword
* @param fieldList the fields being declared
* @param semicolon the semicolon terminating the declaration
*/
- FieldDeclaration({Comment comment, List<Annotation> metadata, Token keyword, VariableDeclarationList fieldList, Token semicolon}) : this.full(comment, metadata, keyword, fieldList, semicolon);
+ FieldDeclaration({Comment comment, List<Annotation> metadata, Token staticKeyword, VariableDeclarationList fieldList, Token semicolon}) : this.full(comment, metadata, staticKeyword, fieldList, semicolon);
accept(ASTVisitor visitor) => visitor.visitFieldDeclaration(this);
Element get element => null;
Token get endToken => _semicolon;
@@ -5887,7 +5887,7 @@ class FieldDeclaration extends ClassMember {
*
* @return the token representing the 'static' keyword
*/
- Token get keyword => _keyword;
+ Token get staticKeyword => _staticKeyword;
/**
* Return the semicolon terminating the declaration.
@@ -5901,7 +5901,7 @@ class FieldDeclaration extends ClassMember {
*
* @return `true` if the fields are declared to be static
*/
- bool get isStatic => _keyword != null;
+ bool get isStatic => _staticKeyword != null;
/**
* Set the fields being declared to the given list of variables.
@@ -5917,8 +5917,8 @@ class FieldDeclaration extends ClassMember {
*
* @param keyword the token representing the 'static' keyword
*/
- void set keyword(Token keyword2) {
- this._keyword = keyword2;
+ void set staticKeyword(Token keyword) {
+ this._staticKeyword = keyword;
}
/**
@@ -5934,8 +5934,8 @@ class FieldDeclaration extends ClassMember {
safelyVisitChild(_fieldList, visitor);
}
Token get firstTokenAfterCommentAndMetadata {
- if (_keyword != null) {
- return _keyword;
+ if (_staticKeyword != null) {
+ return _staticKeyword;
}
return _fieldList.beginToken;
}
@@ -9412,14 +9412,14 @@ class ListLiteral extends TypedLiteral {
/**
* Initialize a newly created list literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
* @param leftBracket the left square bracket
* @param elements the expressions used to compute the elements of the list
* @param rightBracket the right square bracket
*/
- ListLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBracket, List<Expression> elements, Token rightBracket) : super.full(modifier, typeArguments) {
+ ListLiteral.full(Token constKeyword, TypeArgumentList typeArguments, Token leftBracket, List<Expression> elements, Token rightBracket) : super.full(constKeyword, typeArguments) {
this._elements = new NodeList<Expression>(this);
this._leftBracket = leftBracket;
this._elements.addAll(elements);
@@ -9429,17 +9429,17 @@ class ListLiteral extends TypedLiteral {
/**
* Initialize a newly created list literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
* @param leftBracket the left square bracket
* @param elements the expressions used to compute the elements of the list
* @param rightBracket the right square bracket
*/
- ListLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket, List<Expression> elements, Token rightBracket}) : this.full(modifier, typeArguments, leftBracket, elements, rightBracket);
+ ListLiteral({Token constKeyword, TypeArgumentList typeArguments, Token leftBracket, List<Expression> elements, Token rightBracket}) : this.full(constKeyword, typeArguments, leftBracket, elements, rightBracket);
accept(ASTVisitor visitor) => visitor.visitListLiteral(this);
Token get beginToken {
- Token token = modifier;
+ Token token = constKeyword;
if (token != null) {
return token;
}
@@ -9543,14 +9543,14 @@ class MapLiteral extends TypedLiteral {
/**
* Initialize a newly created map literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
* @param leftBracket the left curly bracket
* @param entries the entries in the map
* @param rightBracket the right curly bracket
*/
- MapLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBracket, List<MapLiteralEntry> entries, Token rightBracket) : super.full(modifier, typeArguments) {
+ MapLiteral.full(Token constKeyword, TypeArgumentList typeArguments, Token leftBracket, List<MapLiteralEntry> entries, Token rightBracket) : super.full(constKeyword, typeArguments) {
this._entries = new NodeList<MapLiteralEntry>(this);
this._leftBracket = leftBracket;
this._entries.addAll(entries);
@@ -9560,17 +9560,17 @@ class MapLiteral extends TypedLiteral {
/**
* Initialize a newly created map literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
* @param leftBracket the left curly bracket
* @param entries the entries in the map
* @param rightBracket the right curly bracket
*/
- MapLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket, List<MapLiteralEntry> entries, Token rightBracket}) : this.full(modifier, typeArguments, leftBracket, entries, rightBracket);
+ MapLiteral({Token constKeyword, TypeArgumentList typeArguments, Token leftBracket, List<MapLiteralEntry> entries, Token rightBracket}) : this.full(constKeyword, typeArguments, leftBracket, entries, rightBracket);
accept(ASTVisitor visitor) => visitor.visitMapLiteral(this);
Token get beginToken {
- Token token = modifier;
+ Token token = constKeyword;
if (token != null) {
return token;
}
@@ -12455,7 +12455,7 @@ class SimpleIdentifier extends Identifier {
* @param element the element to be associated with this identifier
*/
void set element(Element element2) {
- _propagatedElement = element2;
+ _propagatedElement = validateElement2(element2);
}
/**
@@ -12465,7 +12465,7 @@ class SimpleIdentifier extends Identifier {
* @param element the element to be associated with this identifier
*/
void set staticElement(Element element) {
- _staticElement = element;
+ _staticElement = validateElement2(element);
}
/**
@@ -12478,6 +12478,55 @@ class SimpleIdentifier extends Identifier {
}
void visitChildren(ASTVisitor<Object> visitor) {
}
+
+ /**
+ * Return the given element if it is an appropriate element based on the parent of this
+ * identifier, or `null` if it is not appropriate.
+ *
+ * @param element the element to be associated with this identifier
+ * @return the element to be associated with this identifier
+ */
+ Element validateElement(ASTNode parent, Type expectedClass, Element element) {
+ if (!isInstanceOf(element, expectedClass)) {
+ AnalysisEngine.instance.logger.logInformation2("Internal error: attempting to set the name of a ${parent.runtimeType.toString()} to a ${element.runtimeType.toString()}", new JavaException());
+ return null;
+ }
+ return element;
+ }
+
+ /**
+ * Return the given element if it is an appropriate element based on the parent of this
+ * identifier, or `null` if it is not appropriate.
+ *
+ * @param element the element to be associated with this identifier
+ * @return the element to be associated with this identifier
+ */
+ Element validateElement2(Element element) {
+ if (element == null) {
+ return null;
+ }
+ ASTNode parent = this.parent;
+ if (parent is ClassDeclaration && identical(((parent as ClassDeclaration)).name, this)) {
+ return validateElement(parent, ClassElement, element);
+ } else if (parent is ClassTypeAlias && identical(((parent as ClassTypeAlias)).name, this)) {
+ return validateElement(parent, ClassElement, element);
+ } else if (parent is DeclaredIdentifier && identical(((parent as DeclaredIdentifier)).identifier, this)) {
+ return validateElement(parent, LocalVariableElement, element);
+ } else if (parent is FormalParameter && identical(((parent as FormalParameter)).identifier, this)) {
+ return validateElement(parent, ParameterElement, element);
+ } else if (parent is FunctionDeclaration && identical(((parent as FunctionDeclaration)).name, this)) {
+ return validateElement(parent, ExecutableElement, element);
+ } else if (parent is FunctionTypeAlias && identical(((parent as FunctionTypeAlias)).name, this)) {
+ return validateElement(parent, FunctionTypeAliasElement, element);
+ } else if (parent is MethodDeclaration && identical(((parent as MethodDeclaration)).name, this)) {
+ return validateElement(parent, ExecutableElement, element);
+ } else if (parent is TypeParameter && identical(((parent as TypeParameter)).name, this)) {
+ return validateElement(parent, TypeVariableElement, element);
+ } else if (parent is VariableDeclaration && identical(((parent as VariableDeclaration)).name, this)) {
+ return validateElement(parent, VariableElement, element);
+ }
+ return element;
+ }
}
/**
* Instances of the class `SimpleStringLiteral` represent a string literal expression that
@@ -13696,10 +13745,10 @@ class TryStatement extends Statement {
Token _finallyKeyword;
/**
- * The finally clause contained in the try statement, or `null` if the statement does not
+ * The finally block contained in the try statement, or `null` if the statement does not
* contain a finally clause.
*/
- Block _finallyClause;
+ Block _finallyBlock;
/**
* Initialize a newly created try statement.
@@ -13708,15 +13757,15 @@ class TryStatement extends Statement {
* @param body the body of the statement
* @param catchClauses the catch clauses contained in the try statement
* @param finallyKeyword the token representing the 'finally' keyword
- * @param finallyClause the finally clause contained in the try statement
+ * @param finallyBlock the finally block contained in the try statement
*/
- TryStatement.full(Token tryKeyword, Block body, List<CatchClause> catchClauses, Token finallyKeyword, Block finallyClause) {
+ TryStatement.full(Token tryKeyword, Block body, List<CatchClause> catchClauses, Token finallyKeyword, Block finallyBlock) {
this._catchClauses = new NodeList<CatchClause>(this);
this._tryKeyword = tryKeyword;
this._body = becomeParentOf(body);
this._catchClauses.addAll(catchClauses);
this._finallyKeyword = finallyKeyword;
- this._finallyClause = becomeParentOf(finallyClause);
+ this._finallyBlock = becomeParentOf(finallyBlock);
}
/**
@@ -13726,9 +13775,9 @@ class TryStatement extends Statement {
* @param body the body of the statement
* @param catchClauses the catch clauses contained in the try statement
* @param finallyKeyword the token representing the 'finally' keyword
- * @param finallyClause the finally clause contained in the try statement
+ * @param finallyBlock the finally block contained in the try statement
*/
- TryStatement({Token tryKeyword, Block body, List<CatchClause> catchClauses, Token finallyKeyword, Block finallyClause}) : this.full(tryKeyword, body, catchClauses, finallyKeyword, finallyClause);
+ TryStatement({Token tryKeyword, Block body, List<CatchClause> catchClauses, Token finallyKeyword, Block finallyBlock}) : this.full(tryKeyword, body, catchClauses, finallyKeyword, finallyBlock);
accept(ASTVisitor visitor) => visitor.visitTryStatement(this);
Token get beginToken => _tryKeyword;
@@ -13746,8 +13795,8 @@ class TryStatement extends Statement {
*/
NodeList<CatchClause> get catchClauses => _catchClauses;
Token get endToken {
- if (_finallyClause != null) {
- return _finallyClause.endToken;
+ if (_finallyBlock != null) {
+ return _finallyBlock.endToken;
} else if (_finallyKeyword != null) {
return _finallyKeyword;
} else if (!_catchClauses.isEmpty) {
@@ -13757,12 +13806,12 @@ class TryStatement extends Statement {
}
/**
- * Return the finally clause contained in the try statement, or `null` if the statement does
+ * Return the finally block contained in the try statement, or `null` if the statement does
* not contain a finally clause.
*
- * @return the finally clause contained in the try statement
+ * @return the finally block contained in the try statement
*/
- Block get finallyClause => _finallyClause;
+ Block get finallyBlock => _finallyBlock;
/**
* Return the token representing the 'finally' keyword, or `null` if the statement does not
@@ -13789,12 +13838,12 @@ class TryStatement extends Statement {
}
/**
- * Set the finally clause contained in the try statement to the given block.
+ * Set the finally block contained in the try statement to the given block.
*
- * @param block the finally clause contained in the try statement
+ * @param block the finally block contained in the try statement
*/
- void set finallyClause(Block block) {
- _finallyClause = becomeParentOf(block);
+ void set finallyBlock(Block block) {
+ _finallyBlock = becomeParentOf(block);
}
/**
@@ -13817,7 +13866,7 @@ class TryStatement extends Statement {
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_body, visitor);
_catchClauses.accept(visitor);
- safelyVisitChild(_finallyClause, visitor);
+ safelyVisitChild(_finallyBlock, visitor);
}
}
/**
@@ -14320,10 +14369,9 @@ class TypeParameterList extends ASTNode {
abstract class TypedLiteral extends Literal {
/**
- * The const modifier associated with this literal, or `null` if the literal is not a
- * constant.
+ * The token representing the 'const' keyword, or `null` if the literal is not a constant.
*/
- Token _modifier;
+ Token _constKeyword;
/**
* The type argument associated with this literal, or `null` if no type arguments were
@@ -14334,30 +14382,30 @@ abstract class TypedLiteral extends Literal {
/**
* Initialize a newly created typed literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
*/
- TypedLiteral.full(Token modifier, TypeArgumentList typeArguments) {
- this._modifier = modifier;
+ TypedLiteral.full(Token constKeyword, TypeArgumentList typeArguments) {
+ this._constKeyword = constKeyword;
this._typeArguments = becomeParentOf(typeArguments);
}
/**
* Initialize a newly created typed literal.
*
- * @param modifier the const modifier associated with this literal
+ * @param constKeyword the token representing the 'const' keyword
* @param typeArguments the type argument associated with this literal, or `null` if no type
* arguments were declared
*/
- TypedLiteral({Token modifier, TypeArgumentList typeArguments}) : this.full(modifier, typeArguments);
+ TypedLiteral({Token constKeyword, TypeArgumentList typeArguments}) : this.full(constKeyword, typeArguments);
/**
- * Return the const modifier associated with this literal.
+ * Return the token representing the 'const' keyword.
*
- * @return the const modifier associated with this literal
+ * @return the token representing the 'const' keyword
*/
- Token get modifier => _modifier;
+ Token get constKeyword => _constKeyword;
/**
* Return the type argument associated with this literal, or `null` if no type arguments
@@ -14368,12 +14416,12 @@ abstract class TypedLiteral extends Literal {
TypeArgumentList get typeArguments => _typeArguments;
/**
- * Set the modifiers associated with this literal to the given modifiers.
+ * Set the token representing the 'const' keyword to the given keyword.
*
- * @param modifiers the modifiers associated with this literal
+ * @param keyword the token representing the 'const' keyword
*/
- void set modifier(Token modifier2) {
- this._modifier = modifier2;
+ void set constKeyword(Token keyword) {
+ this._constKeyword = keyword;
}
/**
@@ -16530,7 +16578,7 @@ class ToSourceVisitor implements ASTVisitor<Object> {
return null;
}
Object visitFieldDeclaration(FieldDeclaration node) {
- visit5(node.keyword, " ");
+ visit5(node.staticKeyword, " ");
visit(node.fields);
_writer.print(";");
return null;
@@ -16726,8 +16774,8 @@ class ToSourceVisitor implements ASTVisitor<Object> {
return null;
}
Object visitListLiteral(ListLiteral node) {
- if (node.modifier != null) {
- _writer.print(node.modifier.lexeme);
+ if (node.constKeyword != null) {
+ _writer.print(node.constKeyword.lexeme);
_writer.print(' ');
}
visit2(node.typeArguments, " ");
@@ -16737,8 +16785,8 @@ class ToSourceVisitor implements ASTVisitor<Object> {
return null;
}
Object visitMapLiteral(MapLiteral node) {
- if (node.modifier != null) {
- _writer.print(node.modifier.lexeme);
+ if (node.constKeyword != null) {
+ _writer.print(node.constKeyword.lexeme);
_writer.print(' ');
}
visit2(node.typeArguments, " ");
@@ -16948,7 +16996,7 @@ class ToSourceVisitor implements ASTVisitor<Object> {
_writer.print("try ");
visit(node.body);
visitList4(" ", node.catchClauses, " ");
- visit3(" finally ", node.finallyClause);
+ visit3(" finally ", node.finallyBlock);
return null;
}
Object visitTypeArgumentList(TypeArgumentList node) {
@@ -17194,7 +17242,7 @@ class ASTCloner implements ASTVisitor<ASTNode> {
ExpressionFunctionBody visitExpressionFunctionBody(ExpressionFunctionBody node) => new ExpressionFunctionBody.full(node.functionDefinition, clone2(node.expression), node.semicolon);
ExpressionStatement visitExpressionStatement(ExpressionStatement node) => new ExpressionStatement.full(clone2(node.expression), node.semicolon);
ExtendsClause visitExtendsClause(ExtendsClause node) => new ExtendsClause.full(node.keyword, clone2(node.superclass));
- FieldDeclaration visitFieldDeclaration(FieldDeclaration node) => new FieldDeclaration.full(clone2(node.documentationComment), clone3(node.metadata), node.keyword, clone2(node.fields), node.semicolon);
+ FieldDeclaration visitFieldDeclaration(FieldDeclaration node) => new FieldDeclaration.full(clone2(node.documentationComment), clone3(node.metadata), node.staticKeyword, clone2(node.fields), node.semicolon);
FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) => new FieldFormalParameter.full(clone2(node.documentationComment), clone3(node.metadata), node.keyword, clone2(node.type), node.thisToken, node.period, clone2(node.identifier), clone2(node.parameters));
ForEachStatement visitForEachStatement(ForEachStatement node) => new ForEachStatement.full(node.forKeyword, node.leftParenthesis, clone2(node.loopVariable), node.inKeyword, clone2(node.iterator), node.rightParenthesis, clone2(node.body));
FormalParameterList visitFormalParameterList(FormalParameterList node) => new FormalParameterList.full(node.leftParenthesis, clone3(node.parameters), node.leftDelimiter, node.rightDelimiter, node.rightParenthesis);
@@ -17226,8 +17274,8 @@ class ASTCloner implements ASTVisitor<ASTNode> {
LabeledStatement visitLabeledStatement(LabeledStatement node) => new LabeledStatement.full(clone3(node.labels), clone2(node.statement));
LibraryDirective visitLibraryDirective(LibraryDirective node) => new LibraryDirective.full(clone2(node.documentationComment), clone3(node.metadata), node.libraryToken, clone2(node.name), node.semicolon);
LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node) => new LibraryIdentifier.full(clone3(node.components));
- ListLiteral visitListLiteral(ListLiteral node) => new ListLiteral.full(node.modifier, clone2(node.typeArguments), node.leftBracket, clone3(node.elements), node.rightBracket);
- MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral.full(node.modifier, clone2(node.typeArguments), node.leftBracket, clone3(node.entries), node.rightBracket);
+ ListLiteral visitListLiteral(ListLiteral node) => new ListLiteral.full(node.constKeyword, clone2(node.typeArguments), node.leftBracket, clone3(node.elements), node.rightBracket);
+ MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral.full(node.constKeyword, clone2(node.typeArguments), node.leftBracket, clone3(node.entries), node.rightBracket);
MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node) => new MapLiteralEntry.full(clone2(node.key), node.separator, clone2(node.value));
MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => new MethodDeclaration.full(clone2(node.documentationComment), clone3(node.metadata), node.externalKeyword, node.modifierKeyword, clone2(node.returnType), node.propertyKeyword, node.operatorKeyword, clone2(node.name), clone2(node.parameters), clone2(node.body));
MethodInvocation visitMethodInvocation(MethodInvocation node) => new MethodInvocation.full(clone2(node.target), node.period, clone2(node.methodName), clone2(node.argumentList));
@@ -17260,7 +17308,7 @@ class ASTCloner implements ASTVisitor<ASTNode> {
ThisExpression visitThisExpression(ThisExpression node) => new ThisExpression.full(node.keyword);
ThrowExpression visitThrowExpression(ThrowExpression node) => new ThrowExpression.full(node.keyword, clone2(node.expression));
TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => new TopLevelVariableDeclaration.full(clone2(node.documentationComment), clone3(node.metadata), clone2(node.variables), node.semicolon);
- TryStatement visitTryStatement(TryStatement node) => new TryStatement.full(node.tryKeyword, clone2(node.body), clone3(node.catchClauses), node.finallyKeyword, clone2(node.finallyClause));
+ TryStatement visitTryStatement(TryStatement node) => new TryStatement.full(node.tryKeyword, clone2(node.body), clone3(node.catchClauses), node.finallyKeyword, clone2(node.finallyBlock));
TypeArgumentList visitTypeArgumentList(TypeArgumentList node) => new TypeArgumentList.full(node.leftBracket, clone3(node.arguments), node.rightBracket);
TypeName visitTypeName(TypeName node) => new TypeName.full(clone2(node.name), clone2(node.typeArguments));
TypeParameter visitTypeParameter(TypeParameter node) => new TypeParameter.full(clone2(node.documentationComment), clone3(node.metadata), clone2(node.name), node.keyword, clone2(node.bound));
@@ -17347,7 +17395,7 @@ class ScopedNameFinder extends GeneralizingASTVisitor<Object> {
return super.visitFunctionDeclarationStatement(node);
}
Object visitFunctionExpression(FunctionExpression node) {
- if (_immediateChild != node.parameters) {
+ if (node.parameters != null && _immediateChild != node.parameters) {
addParameters(node.parameters.parameters);
}
return super.visitFunctionExpression(node);

Powered by Google App Engine
This is Rietveld 408576698