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

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

Issue 16337007: Version 0.5.13.1 . (Closed) Base URL: http://dart.googlecode.com/svn/trunk/dart/
Patch Set: Created 7 years, 7 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
===================================================================
--- pkg/analyzer_experimental/lib/src/generated/ast.dart (revision 23549)
+++ pkg/analyzer_experimental/lib/src/generated/ast.dart (working copy)
@@ -13,33 +13,39 @@
import 'utilities_dart.dart';
import 'element.dart' hide Annotation;
+
/**
* The abstract class {@code ASTNode} defines the behavior common to all nodes in the AST structure
* for a Dart program.
* @coverage dart.engine.ast
*/
abstract class ASTNode {
+
/**
* The parent of the node, or {@code null} if the node is the root of an AST structure.
*/
ASTNode _parent;
+
/**
* A table mapping the names of properties to their values, or {@code null} if this node does not
* have any properties associated with it.
*/
Map<String, Object> _propertyMap;
+
/**
* A comparator that can be used to sort AST nodes in lexical order. In other words,{@code compare} will return a negative value if the offset of the first node is less than the
* offset of the second node, zero (0) if the nodes have the same offset, and a positive value if
* if the offset of the first node is greater than the offset of the second node.
*/
static Comparator<ASTNode> LEXICAL_ORDER = (ASTNode first, ASTNode second) => second.offset - first.offset;
+
/**
* Use the given visitor to visit this node.
* @param visitor the visitor that will visit this node
* @return the value returned by the visitor as a result of visiting this node
*/
accept(ASTVisitor visitor);
+
/**
* @return the {@link ASTNode} of given {@link Class} which is {@link ASTNode} itself, or one of
* its parents.
@@ -52,11 +58,13 @@
;
return node as ASTNode;
}
+
/**
* Return the first token included in this node's source range.
* @return the first token included in this node's source range
*/
Token get beginToken;
+
/**
* Return the offset of the character immediately following the last character of this node's
* source range. This is equivalent to {@code node.getOffset() + node.getLength()}. For a
@@ -65,11 +73,13 @@
* @return the offset of the character just past the node's source range
*/
int get end => offset + length;
+
/**
* Return the last token included in this node's source range.
* @return the last token included in this node's source range
*/
Token get endToken;
+
/**
* Return the number of characters in the node's source range.
* @return the number of characters in the node's source range
@@ -82,6 +92,7 @@
}
return endToken2.offset + endToken2.length - beginToken2.offset;
}
+
/**
* Return the offset from the beginning of the file to the first character in the node's source
* range.
@@ -95,6 +106,7 @@
}
return beginToken.offset;
}
+
/**
* Return this node's parent node, or {@code null} if this node is the root of an AST structure.
* <p>
@@ -103,6 +115,7 @@
* @return the parent of this node, or {@code null} if none
*/
ASTNode get parent => _parent;
+
/**
* Return the value of the property with the given name, or {@code null} if this node does not
* have a property with the given name.
@@ -114,6 +127,7 @@
}
return _propertyMap[propertyName];
}
+
/**
* Return the node at the root of this node's AST structure. Note that this method's performance
* is linear with respect to the depth of the node in the AST structure (O(depth)).
@@ -128,6 +142,7 @@
}
return root;
}
+
/**
* Return {@code true} if this node is a synthetic node. A synthetic node is a node that was
* introduced by the parser in order to recover from an error in the code. Synthetic nodes always
@@ -135,6 +150,7 @@
* @return {@code true} if this node is a synthetic node
*/
bool isSynthetic() => false;
+
/**
* Set the value of the property with the given name to the given value. If the value is{@code null}, the property will effectively be removed.
* @param propertyName the name of the property whose value is to be set
@@ -155,6 +171,7 @@
_propertyMap[propertyName] = propertyValue;
}
}
+
/**
* Return a textual description of this node in a form approximating valid source. The returned
* string will not be valid source primarily in the case where the node itself is not well-formed.
@@ -166,12 +183,14 @@
return writer.toString();
}
String toString() => toSource();
+
/**
* Use the given visitor to visit all of the children of this node. The children will be visited
* in source order.
* @param visitor the visitor that will be used to visit the children of this node
*/
void visitChildren(ASTVisitor<Object> visitor);
+
/**
* Make this node the parent of the given child node.
* @param child the node that will become a child of this node
@@ -184,6 +203,7 @@
}
return child;
}
+
/**
* If the given child is not {@code null}, use the given visitor to visit it.
* @param child the child to be visited
@@ -194,6 +214,7 @@
child.accept(visitor);
}
}
+
/**
* Set the parent of this node to the given node.
* @param newParent the node that is to be made the parent of this node
@@ -204,6 +225,7 @@
static int _hashCodeGenerator = 0;
final int hashCode = ++_hashCodeGenerator;
}
+
/**
* The interface {@code ASTVisitor} defines the behavior of objects that can be used to visit an AST
* structure.
@@ -312,6 +334,7 @@
R visitWhileStatement(WhileStatement node);
R visitWithClause(WithClause node);
}
+
/**
* Instances of the class {@code AdjacentStrings} represents two or more string literals that are
* implicitly concatenated because of being adjacent (separated only by whitespace).
@@ -324,10 +347,12 @@
* @coverage dart.engine.ast
*/
class AdjacentStrings extends StringLiteral {
+
/**
* The strings that are implicitly concatenated.
*/
NodeList<StringLiteral> _strings;
+
/**
* Initialize a newly created list of adjacent strings.
* @param strings the strings that are implicitly concatenated
@@ -336,6 +361,7 @@
this._strings = new NodeList<StringLiteral>(this);
this._strings.addAll(strings);
}
+
/**
* Initialize a newly created list of adjacent strings.
* @param strings the strings that are implicitly concatenated
@@ -344,6 +370,7 @@
accept(ASTVisitor visitor) => visitor.visitAdjacentStrings(this);
Token get beginToken => _strings.beginToken;
Token get endToken => _strings.endToken;
+
/**
* Return the strings that are implicitly concatenated.
* @return the strings that are implicitly concatenated
@@ -352,22 +379,31 @@
void visitChildren(ASTVisitor<Object> visitor) {
_strings.accept(visitor);
}
+ void appendStringValue(JavaStringBuilder builder) {
+ for (StringLiteral stringLiteral in strings) {
+ stringLiteral.appendStringValue(builder);
+ }
+ }
}
+
/**
* The abstract class {@code AnnotatedNode} defines the behavior of nodes that can be annotated with
* both a comment and metadata.
* @coverage dart.engine.ast
*/
abstract class AnnotatedNode extends ASTNode {
+
/**
* The documentation comment associated with this node, or {@code null} if this node does not have
* a documentation comment associated with it.
*/
Comment _comment;
+
/**
* The annotations associated with this node.
*/
NodeList<Annotation> _metadata;
+
/**
* Initialize a newly created node.
* @param comment the documentation comment associated with this node
@@ -378,6 +414,7 @@
this._comment = becomeParentOf(comment);
this._metadata.addAll(metadata);
}
+
/**
* Initialize a newly created node.
* @param comment the documentation comment associated with this node
@@ -401,17 +438,20 @@
}
return metadataToken;
}
+
/**
* Return the documentation comment associated with this node, or {@code null} if this node does
* not have a documentation comment associated with it.
* @return the documentation comment associated with this node
*/
Comment get documentationComment => _comment;
+
/**
* Return the annotations associated with this node.
* @return the annotations associated with this node
*/
NodeList<Annotation> get metadata => _metadata;
+
/**
* Set the documentation comment associated with this node to the given comment.
* @param comment the documentation comment to be associated with this node
@@ -419,6 +459,7 @@
void set documentationComment(Comment comment2) {
this._comment = becomeParentOf(comment2);
}
+
/**
* Set the metadata associated with this node to the given metadata.
* @param metadata the metadata to be associated with this node
@@ -437,11 +478,13 @@
}
}
}
+
/**
* Return the first token following the comment and metadata.
* @return the first token following the comment and metadata
*/
Token get firstTokenAfterCommentAndMetadata;
+
/**
* Return {@code true} if the comment is lexically before any annotations.
* @return {@code true} if the comment is lexically before any annotations
@@ -453,6 +496,7 @@
Annotation firstAnnotation = _metadata[0];
return _comment.offset < firstAnnotation.offset;
}
+
/**
* Return an array containing the comment and annotations associated with this node, sorted in
* lexical order.
@@ -468,6 +512,7 @@
return children;
}
}
+
/**
* Instances of the class {@code Annotation} represent an annotation that can be associated with an
* AST node.
@@ -480,30 +525,36 @@
* @coverage dart.engine.ast
*/
class Annotation extends ASTNode {
+
/**
* The at sign that introduced the annotation.
*/
Token _atSign;
+
/**
* The name of the class defining the constructor that is being invoked or the name of the field
* that is being referenced.
*/
Identifier _name;
+
/**
* The period before the constructor name, or {@code null} if this annotation is not the
* invocation of a named constructor.
*/
Token _period;
+
/**
* The name of the constructor being invoked, or {@code null} if this annotation is not the
* invocation of a named constructor.
*/
SimpleIdentifier _constructorName;
+
/**
* The arguments to the constructor being invoked, or {@code null} if this annotation is not the
* invocation of a constructor.
*/
ArgumentList _arguments;
+
/**
* Initialize a newly created annotation.
* @param atSign the at sign that introduced the annotation
@@ -523,6 +574,7 @@
this._constructorName = becomeParentOf(constructorName);
this._arguments = becomeParentOf(arguments);
}
+
/**
* Initialize a newly created annotation.
* @param atSign the at sign that introduced the annotation
@@ -537,24 +589,41 @@
*/
Annotation({Token atSign, Identifier name, Token period, SimpleIdentifier constructorName, ArgumentList arguments}) : this.full(atSign, name, period, constructorName, arguments);
accept(ASTVisitor visitor) => visitor.visitAnnotation(this);
+
/**
* Return the arguments to the constructor being invoked, or {@code null} if this annotation is
* not the invocation of a constructor.
* @return the arguments to the constructor being invoked
*/
ArgumentList get arguments => _arguments;
+
/**
* Return the at sign that introduced the annotation.
* @return the at sign that introduced the annotation
*/
Token get atSign => _atSign;
Token get beginToken => _atSign;
+
/**
* Return the name of the constructor being invoked, or {@code null} if this annotation is not the
* invocation of a named constructor.
* @return the name of the constructor being invoked
*/
SimpleIdentifier get constructorName => _constructorName;
+
+ /**
+ * Return the element associated with this annotation, or {@code null} if the AST structure has
+ * not been resolved or if this annotation could not be resolved.
+ * @return the element associated with this annotation
+ */
+ Element get element {
+ if (_constructorName != null) {
+ return _constructorName.element;
+ } else if (_name != null) {
+ return _name.element;
+ }
+ return null;
+ }
Token get endToken {
if (_arguments != null) {
return _arguments.endToken;
@@ -563,18 +632,21 @@
}
return _name.endToken;
}
+
/**
* Return the name of the class defining the constructor that is being invoked or the name of the
* field that is being referenced.
* @return the name of the constructor being invoked or the name of the field being referenced
*/
Identifier get name => _name;
+
/**
* Return the period before the constructor name, or {@code null} if this annotation is not the
* invocation of a named constructor.
* @return the period before the constructor name
*/
Token get period => _period;
+
/**
* Set the arguments to the constructor being invoked to the given arguments.
* @param arguments the arguments to the constructor being invoked
@@ -582,6 +654,7 @@
void set arguments(ArgumentList arguments2) {
this._arguments = becomeParentOf(arguments2);
}
+
/**
* Set the at sign that introduced the annotation to the given token.
* @param atSign the at sign that introduced the annotation
@@ -589,6 +662,7 @@
void set atSign(Token atSign2) {
this._atSign = atSign2;
}
+
/**
* Set the name of the constructor being invoked to the given name.
* @param constructorName the name of the constructor being invoked
@@ -596,6 +670,7 @@
void set constructorName(SimpleIdentifier constructorName2) {
this._constructorName = becomeParentOf(constructorName2);
}
+
/**
* Set the name of the class defining the constructor that is being invoked or the name of the
* field that is being referenced to the given name.
@@ -604,6 +679,7 @@
void set name(Identifier name2) {
this._name = becomeParentOf(name2);
}
+
/**
* Set the period before the constructor name to the given token.
* @param period the period before the constructor name
@@ -617,6 +693,7 @@
safelyVisitChild(_arguments, visitor);
}
}
+
/**
* Instances of the class {@code ArgumentDefinitionTest} represent an argument definition test.
* <pre>
@@ -625,14 +702,17 @@
* @coverage dart.engine.ast
*/
class ArgumentDefinitionTest extends Expression {
+
/**
* The token representing the question mark.
*/
Token _question;
+
/**
* The identifier representing the argument being tested.
*/
SimpleIdentifier _identifier;
+
/**
* Initialize a newly created argument definition test.
* @param question the token representing the question mark
@@ -642,6 +722,7 @@
this._question = question;
this._identifier = becomeParentOf(identifier);
}
+
/**
* Initialize a newly created argument definition test.
* @param question the token representing the question mark
@@ -651,16 +732,19 @@
accept(ASTVisitor visitor) => visitor.visitArgumentDefinitionTest(this);
Token get beginToken => _question;
Token get endToken => _identifier.endToken;
+
/**
* Return the identifier representing the argument being tested.
* @return the identifier representing the argument being tested
*/
SimpleIdentifier get identifier => _identifier;
+
/**
* Return the token representing the question mark.
* @return the token representing the question mark
*/
Token get question => _question;
+
/**
* Set the identifier representing the argument being tested to the given identifier.
* @param identifier the identifier representing the argument being tested
@@ -668,6 +752,7 @@
void set identifier(SimpleIdentifier identifier2) {
this._identifier = becomeParentOf(identifier2);
}
+
/**
* Set the token representing the question mark to the given token.
* @param question the token representing the question mark
@@ -679,6 +764,7 @@
safelyVisitChild(_identifier, visitor);
}
}
+
/**
* Instances of the class {@code ArgumentList} represent a list of arguments in the invocation of a
* executable element: a function, method, or constructor.
@@ -691,18 +777,22 @@
* @coverage dart.engine.ast
*/
class ArgumentList extends ASTNode {
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The expressions producing the values of the arguments.
*/
NodeList<Expression> _arguments;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* An array containing the elements representing the parameters corresponding to each of the
* arguments in this list, or {@code null} if the AST has not been resolved or if the function or
@@ -711,6 +801,7 @@
* formal parameter.
*/
List<ParameterElement> _correspondingParameters;
+
/**
* Initialize a newly created list of arguments.
* @param leftParenthesis the left parenthesis
@@ -723,6 +814,7 @@
this._arguments.addAll(arguments);
this._rightParenthesis = rightParenthesis;
}
+
/**
* Initialize a newly created list of arguments.
* @param leftParenthesis the left parenthesis
@@ -731,6 +823,7 @@
*/
ArgumentList({Token leftParenthesis, List<Expression> arguments, Token rightParenthesis}) : this.full(leftParenthesis, arguments, rightParenthesis);
accept(ASTVisitor visitor) => visitor.visitArgumentList(this);
+
/**
* Return the expressions producing the values of the arguments. Although the language requires
* that positional arguments appear before named arguments, this class allows them to be
@@ -740,16 +833,19 @@
NodeList<Expression> get arguments => _arguments;
Token get beginToken => _leftParenthesis;
Token get endToken => _rightParenthesis;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the parameter elements corresponding to each of the arguments in this list to the given
* array of parameters. The array of parameters must be the same length as the number of
@@ -763,6 +859,7 @@
}
_correspondingParameters = parameters;
}
+
/**
* Set the left parenthesis to the given token.
* @param parenthesis the left parenthesis
@@ -770,6 +867,7 @@
void set leftParenthesis(Token parenthesis) {
_leftParenthesis = parenthesis;
}
+
/**
* Set the right parenthesis to the given token.
* @param parenthesis the right parenthesis
@@ -780,6 +878,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
_arguments.accept(visitor);
}
+
/**
* If the given expression is a child of this list, and the AST structure has been resolved, and
* the function being invoked is known, and the expression corresponds to one of the parameters of
@@ -802,6 +901,7 @@
return _correspondingParameters[index];
}
}
+
/**
* Instances of the class {@code AsExpression} represent an 'as' expression.
* <pre>
@@ -809,18 +909,22 @@
* @coverage dart.engine.ast
*/
class AsExpression extends Expression {
+
/**
* The expression used to compute the value being cast.
*/
Expression _expression;
+
/**
* The as operator.
*/
Token _asOperator;
+
/**
* The name of the type being cast to.
*/
TypeName _type;
+
/**
* Initialize a newly created as expression.
* @param expression the expression used to compute the value being cast
@@ -832,6 +936,7 @@
this._asOperator = isOperator;
this._type = becomeParentOf(type);
}
+
/**
* Initialize a newly created as expression.
* @param expression the expression used to compute the value being cast
@@ -840,6 +945,7 @@
*/
AsExpression({Expression expression, Token isOperator, TypeName type}) : this.full(expression, isOperator, type);
accept(ASTVisitor visitor) => visitor.visitAsExpression(this);
+
/**
* Return the is operator being applied.
* @return the is operator being applied
@@ -847,16 +953,19 @@
Token get asOperator => _asOperator;
Token get beginToken => _expression.beginToken;
Token get endToken => _type.endToken;
+
/**
* Return the expression used to compute the value being cast.
* @return the expression used to compute the value being cast
*/
Expression get expression => _expression;
+
/**
* Return the name of the type being cast to.
* @return the name of the type being cast to
*/
TypeName get type => _type;
+
/**
* Set the is operator being applied to the given operator.
* @param asOperator the is operator being applied
@@ -864,6 +973,7 @@
void set asOperator(Token asOperator2) {
this._asOperator = asOperator2;
}
+
/**
* Set the expression used to compute the value being cast to the given expression.
* @param expression the expression used to compute the value being cast
@@ -871,6 +981,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the name of the type being cast to to the given name.
* @param name the name of the type being cast to
@@ -883,6 +994,7 @@
safelyVisitChild(_type, visitor);
}
}
+
/**
* Instances of the class {@code AssertStatement} represent an assert statement.
* <pre>
@@ -892,26 +1004,32 @@
* @coverage dart.engine.ast
*/
class AssertStatement extends Statement {
+
/**
* The token representing the 'assert' keyword.
*/
Token _keyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The condition that is being asserted to be {@code true}.
*/
Expression _condition;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created assert statement.
* @param keyword the token representing the 'assert' keyword
@@ -927,6 +1045,7 @@
this._rightParenthesis = rightParenthesis;
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created assert statement.
* @param keyword the token representing the 'assert' keyword
@@ -938,32 +1057,38 @@
AssertStatement({Token keyword, Token leftParenthesis, Expression condition, Token rightParenthesis, Token semicolon}) : this.full(keyword, leftParenthesis, condition, rightParenthesis, semicolon);
accept(ASTVisitor visitor) => visitor.visitAssertStatement(this);
Token get beginToken => _keyword;
+
/**
* Return the condition that is being asserted to be {@code true}.
* @return the condition that is being asserted to be {@code true}
*/
Expression get condition => _condition;
Token get endToken => _semicolon;
+
/**
* Return the token representing the 'assert' keyword.
* @return the token representing the 'assert' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the condition that is being asserted to be {@code true} to the given expression.
* @param the condition that is being asserted to be {@code true}
@@ -971,6 +1096,7 @@
void set condition(Expression condition2) {
this._condition = becomeParentOf(condition2);
}
+
/**
* Set the token representing the 'assert' keyword to the given token.
* @param keyword the token representing the 'assert' keyword
@@ -978,6 +1104,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the left parenthesis to the given token.
* @param the left parenthesis
@@ -985,6 +1112,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -992,6 +1120,7 @@
void set rightParenthesis(Token rightParenthesis2) {
this._rightParenthesis = rightParenthesis2;
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -1003,6 +1132,7 @@
safelyVisitChild(_condition, visitor);
}
}
+
/**
* Instances of the class {@code AssignmentExpression} represent an assignment expression.
* <pre>
@@ -1010,24 +1140,35 @@
* @coverage dart.engine.ast
*/
class AssignmentExpression extends Expression {
+
/**
* The expression used to compute the left hand side.
*/
Expression _leftHandSide;
+
/**
* The assignment operator being applied.
*/
Token _operator;
+
/**
* The expression used to compute the right hand side.
*/
Expression _rightHandSide;
+
/**
- * The element associated with the operator, or {@code null} if the AST structure has not been
- * resolved, if the operator is not a compound operator, or if the operator could not be resolved.
+ * The element associated with the operator based on the static type of the left-hand-side, or{@code null} if the AST structure has not been resolved, if the operator is not a compound
+ * operator, or if the operator could not be resolved.
*/
- MethodElement _element;
+ MethodElement _staticElement;
+
/**
+ * The element associated with the operator based on the propagated type of the left-hand-side, or{@code null} if the AST structure has not been resolved, if the operator is not a compound
+ * operator, or if the operator could not be resolved.
+ */
+ MethodElement _propagatedElement;
+
+ /**
* Initialize a newly created assignment expression.
* @param leftHandSide the expression used to compute the left hand side
* @param operator the assignment operator being applied
@@ -1038,6 +1179,7 @@
this._operator = operator;
this._rightHandSide = becomeParentOf(rightHandSide);
}
+
/**
* Initialize a newly created assignment expression.
* @param leftHandSide the expression used to compute the left hand side
@@ -1047,37 +1189,53 @@
AssignmentExpression({Expression leftHandSide, Token operator, Expression rightHandSide}) : this.full(leftHandSide, operator, rightHandSide);
accept(ASTVisitor visitor) => visitor.visitAssignmentExpression(this);
Token get beginToken => _leftHandSide.beginToken;
+
/**
- * Return the element associated with the operator, or {@code null} if the AST structure has not
- * been resolved, if the operator is not a compound operator, or if the operator could not be
- * resolved. One example of the latter case is an operator that is not defined for the type of the
- * left-hand operand.
+ * Return the element associated with the operator based on the propagated type of the
+ * left-hand-side, or {@code null} if the AST structure has not been resolved, if the operator is
+ * not a compound operator, or if the operator could not be resolved. One example of the latter
+ * case is an operator that is not defined for the type of the left-hand operand.
* @return the element associated with the operator
*/
- MethodElement get element => _element;
+ MethodElement get element => _propagatedElement;
Token get endToken => _rightHandSide.endToken;
+
/**
* Set the expression used to compute the left hand side to the given expression.
* @return the expression used to compute the left hand side
*/
Expression get leftHandSide => _leftHandSide;
+
/**
* Return the assignment operator being applied.
* @return the assignment operator being applied
*/
Token get operator => _operator;
+
/**
* Return the expression used to compute the right hand side.
* @return the expression used to compute the right hand side
*/
Expression get rightHandSide => _rightHandSide;
+
/**
- * Set the element associated with the operator to the given element.
- * @param element the element associated with the operator
+ * Return the element associated with the operator based on the static type of the left-hand-side,
+ * or {@code null} if the AST structure has not been resolved, if the operator is not a compound
+ * operator, or if the operator could not be resolved. One example of the latter case is an
+ * operator that is not defined for the type of the left-hand operand.
+ * @return the element associated with the operator
*/
+ MethodElement get staticElement => _staticElement;
+
+ /**
+ * Set the element associated with the operator based on the propagated type of the left-hand-side
+ * to the given element.
+ * @param element the element to be associated with the operator
+ */
void set element(MethodElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Return the expression used to compute the left hand side.
* @param expression the expression used to compute the left hand side
@@ -1085,6 +1243,7 @@
void set leftHandSide(Expression expression) {
_leftHandSide = becomeParentOf(expression);
}
+
/**
* Set the assignment operator being applied to the given operator.
* @param operator the assignment operator being applied
@@ -1092,6 +1251,7 @@
void set operator(Token operator2) {
this._operator = operator2;
}
+
/**
* Set the expression used to compute the left hand side to the given expression.
* @param expression the expression used to compute the left hand side
@@ -1099,11 +1259,21 @@
void set rightHandSide(Expression expression) {
_rightHandSide = becomeParentOf(expression);
}
+
+ /**
+ * Set the element associated with the operator based on the static type of the left-hand-side to
+ * the given element.
+ * @param element the static element to be associated with the operator
+ */
+ void set staticElement(MethodElement element) {
+ _staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_leftHandSide, visitor);
safelyVisitChild(_rightHandSide, visitor);
}
}
+
/**
* Instances of the class {@code BinaryExpression} represent a binary (infix) expression.
* <pre>
@@ -1111,24 +1281,35 @@
* @coverage dart.engine.ast
*/
class BinaryExpression extends Expression {
+
/**
* The expression used to compute the left operand.
*/
Expression _leftOperand;
+
/**
* The binary operator being applied.
*/
Token _operator;
+
/**
* The expression used to compute the right operand.
*/
Expression _rightOperand;
+
/**
- * The element associated with the operator, or {@code null} if the AST structure has not been
- * resolved, if the operator is not user definable, or if the operator could not be resolved.
+ * The element associated with the operator based on the static type of the left operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
*/
- MethodElement _element;
+ MethodElement _staticElement;
+
/**
+ * The element associated with the operator based on the propagated type of the left operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
+ */
+ MethodElement _propagatedElement;
+
+ /**
* Initialize a newly created binary expression.
* @param leftOperand the expression used to compute the left operand
* @param operator the binary operator being applied
@@ -1139,6 +1320,7 @@
this._operator = operator;
this._rightOperand = becomeParentOf(rightOperand);
}
+
/**
* Initialize a newly created binary expression.
* @param leftOperand the expression used to compute the left operand
@@ -1148,37 +1330,53 @@
BinaryExpression({Expression leftOperand, Token operator, Expression rightOperand}) : this.full(leftOperand, operator, rightOperand);
accept(ASTVisitor visitor) => visitor.visitBinaryExpression(this);
Token get beginToken => _leftOperand.beginToken;
+
/**
- * Return the element associated with the operator, or {@code null} if the AST structure has not
- * been resolved, if the operator is not user definable, or if the operator could not be resolved.
- * One example of the latter case is an operator that is not defined for the type of the left-hand
- * operand.
+ * Return the element associated with the operator based on the propagated type of the left
+ * operand, or {@code null} if the AST structure has not been resolved, if the operator is not
+ * user definable, or if the operator could not be resolved. One example of the latter case is an
+ * operator that is not defined for the type of the left-hand operand.
* @return the element associated with the operator
*/
- MethodElement get element => _element;
+ MethodElement get element => _propagatedElement;
Token get endToken => _rightOperand.endToken;
+
/**
* Return the expression used to compute the left operand.
* @return the expression used to compute the left operand
*/
Expression get leftOperand => _leftOperand;
+
/**
* Return the binary operator being applied.
* @return the binary operator being applied
*/
Token get operator => _operator;
+
/**
* Return the expression used to compute the right operand.
* @return the expression used to compute the right operand
*/
Expression get rightOperand => _rightOperand;
+
/**
- * Set the element associated with the operator to the given element.
- * @param element the element associated with the operator
+ * Return the element associated with the operator based on the static type of the left operand,
+ * or {@code null} if the AST structure has not been resolved, if the operator is not user
+ * definable, or if the operator could not be resolved. One example of the latter case is an
+ * operator that is not defined for the type of the left operand.
+ * @return the element associated with the operator
*/
+ MethodElement get staticElement => _staticElement;
+
+ /**
+ * Set the element associated with the operator based on the propagated type of the left operand
+ * to the given element.
+ * @param element the element to be associated with the operator
+ */
void set element(MethodElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the expression used to compute the left operand to the given expression.
* @param expression the expression used to compute the left operand
@@ -1186,6 +1384,7 @@
void set leftOperand(Expression expression) {
_leftOperand = becomeParentOf(expression);
}
+
/**
* Set the binary operator being applied to the given operator.
* @return the binary operator being applied
@@ -1193,6 +1392,7 @@
void set operator(Token operator2) {
this._operator = operator2;
}
+
/**
* Set the expression used to compute the right operand to the given expression.
* @param expression the expression used to compute the right operand
@@ -1200,11 +1400,40 @@
void set rightOperand(Expression expression) {
_rightOperand = becomeParentOf(expression);
}
+
+ /**
+ * Set the element associated with the operator based on the static type of the left operand to
+ * the given element.
+ * @param element the static element to be associated with the operator
+ */
+ void set staticElement(MethodElement element) {
+ _staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_leftOperand, visitor);
safelyVisitChild(_rightOperand, visitor);
}
+
+ /**
+ * Return the parameter element representing the parameter to which the value of the right operand
+ * will be bound. May be {@code null}.
+ * <p>
+ * This method is only intended to be used by {@link Expression#getParameterElement()}.
+ * @return the parameter element representing the parameter to which the value of the right
+ * operand will be bound
+ */
+ ParameterElement get parameterElementForRightOperand {
+ if (_propagatedElement == null) {
+ return null;
+ }
+ List<ParameterElement> parameters2 = _propagatedElement.parameters;
+ if (parameters2.length < 1) {
+ return null;
+ }
+ return parameters2[0];
+ }
}
+
/**
* Instances of the class {@code Block} represent a sequence of statements.
* <pre>
@@ -1214,18 +1443,22 @@
* @coverage dart.engine.ast
*/
class Block extends Statement {
+
/**
* The left curly bracket.
*/
Token _leftBracket;
+
/**
* The statements contained in the block.
*/
NodeList<Statement> _statements;
+
/**
* The right curly bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created block of code.
* @param leftBracket the left curly bracket
@@ -1238,6 +1471,7 @@
this._statements.addAll(statements);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created block of code.
* @param leftBracket the left curly bracket
@@ -1248,21 +1482,25 @@
accept(ASTVisitor visitor) => visitor.visitBlock(this);
Token get beginToken => _leftBracket;
Token get endToken => _rightBracket;
+
/**
* Return the left curly bracket.
* @return the left curly bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right curly bracket.
* @return the right curly bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Return the statements contained in the block.
* @return the statements contained in the block
*/
NodeList<Statement> get statements => _statements;
+
/**
* Set the left curly bracket to the given token.
* @param leftBracket the left curly bracket
@@ -1270,6 +1508,7 @@
void set leftBracket(Token leftBracket2) {
this._leftBracket = leftBracket2;
}
+
/**
* Set the right curly bracket to the given token.
* @param rightBracket the right curly bracket
@@ -1281,6 +1520,7 @@
_statements.accept(visitor);
}
}
+
/**
* Instances of the class {@code BlockFunctionBody} represent a function body that consists of a
* block of statements.
@@ -1289,10 +1529,12 @@
* @coverage dart.engine.ast
*/
class BlockFunctionBody extends FunctionBody {
+
/**
* The block representing the body of the function.
*/
Block _block;
+
/**
* Initialize a newly created function body consisting of a block of statements.
* @param block the block representing the body of the function
@@ -1300,6 +1542,7 @@
BlockFunctionBody.full(Block block) {
this._block = becomeParentOf(block);
}
+
/**
* Initialize a newly created function body consisting of a block of statements.
* @param block the block representing the body of the function
@@ -1307,12 +1550,14 @@
BlockFunctionBody({Block block}) : this.full(block);
accept(ASTVisitor visitor) => visitor.visitBlockFunctionBody(this);
Token get beginToken => _block.beginToken;
+
/**
* Return the block representing the body of the function.
* @return the block representing the body of the function
*/
Block get block => _block;
Token get endToken => _block.endToken;
+
/**
* Set the block representing the body of the function to the given block.
* @param block the block representing the body of the function
@@ -1324,6 +1569,7 @@
safelyVisitChild(_block, visitor);
}
}
+
/**
* Instances of the class {@code BooleanLiteral} represent a boolean literal expression.
* <pre>
@@ -1333,14 +1579,17 @@
* @coverage dart.engine.ast
*/
class BooleanLiteral extends Literal {
+
/**
* The token representing the literal.
*/
Token _literal;
+
/**
* The value of the literal.
*/
bool _value = false;
+
/**
* Initialize a newly created boolean literal.
* @param literal the token representing the literal
@@ -1350,6 +1599,7 @@
this._literal = literal;
this._value = value;
}
+
/**
* Initialize a newly created boolean literal.
* @param literal the token representing the literal
@@ -1359,17 +1609,20 @@
accept(ASTVisitor visitor) => visitor.visitBooleanLiteral(this);
Token get beginToken => _literal;
Token get endToken => _literal;
+
/**
* Return the token representing the literal.
* @return the token representing the literal
*/
Token get literal => _literal;
+
/**
* Return the value of the literal.
* @return the value of the literal
*/
bool get value => _value;
bool isSynthetic() => _literal.isSynthetic();
+
/**
* Set the token representing the literal to the given token.
* @param literal the token representing the literal
@@ -1377,6 +1630,7 @@
void set literal(Token literal2) {
this._literal = literal2;
}
+
/**
* Set the value of the literal to the given value.
* @param value the value of the literal
@@ -1387,6 +1641,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code BreakStatement} represent a break statement.
* <pre>
@@ -1396,18 +1651,22 @@
* @coverage dart.engine.ast
*/
class BreakStatement extends Statement {
+
/**
* The token representing the 'break' keyword.
*/
Token _keyword;
+
/**
* The label associated with the statement, or {@code null} if there is no label.
*/
SimpleIdentifier _label;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created break statement.
* @param keyword the token representing the 'break' keyword
@@ -1419,6 +1678,7 @@
this._label = becomeParentOf(label);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created break statement.
* @param keyword the token representing the 'break' keyword
@@ -1429,21 +1689,25 @@
accept(ASTVisitor visitor) => visitor.visitBreakStatement(this);
Token get beginToken => _keyword;
Token get endToken => _semicolon;
+
/**
* Return the token representing the 'break' keyword.
* @return the token representing the 'break' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the label associated with the statement, or {@code null} if there is no label.
* @return the label associated with the statement
*/
SimpleIdentifier get label => _label;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the token representing the 'break' keyword to the given token.
* @param keyword the token representing the 'break' keyword
@@ -1451,6 +1715,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the label associated with the statement to the given identifier.
* @param identifier the label associated with the statement
@@ -1458,6 +1723,7 @@
void set label(SimpleIdentifier identifier) {
_label = becomeParentOf(identifier);
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -1469,6 +1735,7 @@
safelyVisitChild(_label, visitor);
}
}
+
/**
* Instances of the class {@code CascadeExpression} represent a sequence of cascaded expressions:
* expressions that share a common target. There are three kinds of expressions that can be used in
@@ -1484,14 +1751,17 @@
* @coverage dart.engine.ast
*/
class CascadeExpression extends Expression {
+
/**
* The target of the cascade sections.
*/
Expression _target;
+
/**
* The cascade sections sharing the common target.
*/
NodeList<Expression> _cascadeSections;
+
/**
* Initialize a newly created cascade expression.
* @param target the target of the cascade sections
@@ -1502,6 +1772,7 @@
this._target = becomeParentOf(target);
this._cascadeSections.addAll(cascadeSections);
}
+
/**
* Initialize a newly created cascade expression.
* @param target the target of the cascade sections
@@ -1510,17 +1781,20 @@
CascadeExpression({Expression target, List<Expression> cascadeSections}) : this.full(target, cascadeSections);
accept(ASTVisitor visitor) => visitor.visitCascadeExpression(this);
Token get beginToken => _target.beginToken;
+
/**
* Return the cascade sections sharing the common target.
* @return the cascade sections sharing the common target
*/
NodeList<Expression> get cascadeSections => _cascadeSections;
Token get endToken => _cascadeSections.endToken;
+
/**
* Return the target of the cascade sections.
* @return the target of the cascade sections
*/
Expression get target => _target;
+
/**
* Set the target of the cascade sections to the given expression.
* @param target the target of the cascade sections
@@ -1533,6 +1807,7 @@
_cascadeSections.accept(visitor);
}
}
+
/**
* Instances of the class {@code CatchClause} represent a catch clause within a try statement.
* <pre>
@@ -1543,43 +1818,53 @@
* @coverage dart.engine.ast
*/
class CatchClause extends ASTNode {
+
/**
* The token representing the 'on' keyword, or {@code null} if there is no 'on' keyword.
*/
Token _onKeyword;
+
/**
* The type of exceptions caught by this catch clause, or {@code null} if this catch clause
* catches every type of exception.
*/
TypeName _exceptionType;
+
/**
* The token representing the 'catch' keyword, or {@code null} if there is no 'catch' keyword.
*/
Token _catchKeyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The parameter whose value will be the exception that was thrown.
*/
SimpleIdentifier _exceptionParameter;
+
/**
* The comma separating the exception parameter from the stack trace parameter.
*/
Token _comma;
+
/**
* The parameter whose value will be the stack trace associated with the exception.
*/
SimpleIdentifier _stackTraceParameter;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The body of the catch block.
*/
Block _body;
+
/**
* Initialize a newly created catch clause.
* @param onKeyword the token representing the 'on' keyword
@@ -1603,6 +1888,7 @@
this._rightParenthesis = rightParenthesis;
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created catch clause.
* @param onKeyword the token representing the 'on' keyword
@@ -1623,54 +1909,64 @@
}
return _catchKeyword;
}
+
/**
* Return the body of the catch block.
* @return the body of the catch block
*/
Block get body => _body;
+
/**
* Return the token representing the 'catch' keyword, or {@code null} if there is no 'catch'
* keyword.
* @return the token representing the 'catch' keyword
*/
Token get catchKeyword => _catchKeyword;
+
/**
* Return the comma.
* @return the comma
*/
Token get comma => _comma;
Token get endToken => _body.endToken;
+
/**
* Return the parameter whose value will be the exception that was thrown.
* @return the parameter whose value will be the exception that was thrown
*/
SimpleIdentifier get exceptionParameter => _exceptionParameter;
+
/**
* Return the type of exceptions caught by this catch clause, or {@code null} if this catch clause
* catches every type of exception.
* @return the type of exceptions caught by this catch clause
*/
TypeName get exceptionType => _exceptionType;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the token representing the 'on' keyword, or {@code null} if there is no 'on' keyword.
* @return the token representing the 'on' keyword
*/
Token get onKeyword => _onKeyword;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Return the parameter whose value will be the stack trace associated with the exception.
* @return the parameter whose value will be the stack trace associated with the exception
*/
SimpleIdentifier get stackTraceParameter => _stackTraceParameter;
+
/**
* Set the body of the catch block to the given block.
* @param block the body of the catch block
@@ -1678,6 +1974,7 @@
void set body(Block block) {
_body = becomeParentOf(block);
}
+
/**
* Set the token representing the 'catch' keyword to the given token.
* @param catchKeyword the token representing the 'catch' keyword
@@ -1685,6 +1982,7 @@
void set catchKeyword(Token catchKeyword2) {
this._catchKeyword = catchKeyword2;
}
+
/**
* Set the comma to the given token.
* @param comma the comma
@@ -1692,6 +1990,7 @@
void set comma(Token comma2) {
this._comma = comma2;
}
+
/**
* Set the parameter whose value will be the exception that was thrown to the given parameter.
* @param parameter the parameter whose value will be the exception that was thrown
@@ -1699,6 +1998,7 @@
void set exceptionParameter(SimpleIdentifier parameter) {
_exceptionParameter = becomeParentOf(parameter);
}
+
/**
* Set the type of exceptions caught by this catch clause to the given type.
* @param exceptionType the type of exceptions caught by this catch clause
@@ -1706,6 +2006,7 @@
void set exceptionType(TypeName exceptionType2) {
this._exceptionType = exceptionType2;
}
+
/**
* Set the left parenthesis to the given token.
* @param parenthesis the left parenthesis
@@ -1713,6 +2014,7 @@
void set leftParenthesis(Token parenthesis) {
_leftParenthesis = parenthesis;
}
+
/**
* Set the token representing the 'on' keyword to the given keyword.
* @param onKeyword the token representing the 'on' keyword
@@ -1720,6 +2022,7 @@
void set onKeyword(Token onKeyword2) {
this._onKeyword = onKeyword2;
}
+
/**
* Set the right parenthesis to the given token.
* @param parenthesis the right parenthesis
@@ -1727,6 +2030,7 @@
void set rightParenthesis(Token parenthesis) {
_rightParenthesis = parenthesis;
}
+
/**
* Set the parameter whose value will be the stack trace associated with the exception to the
* given parameter.
@@ -1743,6 +2047,7 @@
safelyVisitChild(_body, visitor);
}
}
+
/**
* Instances of the class {@code ClassDeclaration} represent the declaration of a class.
* <pre>
@@ -1754,48 +2059,59 @@
* @coverage dart.engine.ast
*/
class ClassDeclaration extends CompilationUnitMember {
+
/**
* The 'abstract' keyword, or {@code null} if the keyword was absent.
*/
Token _abstractKeyword;
+
/**
* The token representing the 'class' keyword.
*/
Token _classKeyword;
+
/**
* The name of the class being declared.
*/
SimpleIdentifier _name;
+
/**
* The type parameters for the class, or {@code null} if the class does not have any type
* parameters.
*/
TypeParameterList _typeParameters;
+
/**
* The extends clause for the class, or {@code null} if the class does not extend any other class.
*/
ExtendsClause _extendsClause;
+
/**
* The with clause for the class, or {@code null} if the class does not have a with clause.
*/
WithClause _withClause;
+
/**
* The implements clause for the class, or {@code null} if the class does not implement any
* interfaces.
*/
ImplementsClause _implementsClause;
+
/**
* The left curly bracket.
*/
Token _leftBracket;
+
/**
* The members defined by the class.
*/
NodeList<ClassMember> _members;
+
/**
* The right curly bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created class declaration.
* @param comment the documentation comment associated with this class
@@ -1824,6 +2140,7 @@
this._members.addAll(members);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created class declaration.
* @param comment the documentation comment associated with this class
@@ -1841,11 +2158,13 @@
*/
ClassDeclaration({Comment comment, List<Annotation> metadata, Token abstractKeyword, Token classKeyword, SimpleIdentifier name, TypeParameterList typeParameters, ExtendsClause extendsClause, WithClause withClause, ImplementsClause implementsClause, Token leftBracket, List<ClassMember> members, Token rightBracket}) : this.full(comment, metadata, abstractKeyword, classKeyword, name, typeParameters, extendsClause, withClause, implementsClause, leftBracket, members, rightBracket);
accept(ASTVisitor visitor) => visitor.visitClassDeclaration(this);
+
/**
* Return the 'abstract' keyword, or {@code null} if the keyword was absent.
* @return the 'abstract' keyword
*/
Token get abstractKeyword => _abstractKeyword;
+
/**
* Return the token representing the 'class' keyword.
* @return the token representing the 'class' keyword
@@ -1853,49 +2172,58 @@
Token get classKeyword => _classKeyword;
ClassElement get element => _name != null ? (_name.element as ClassElement) : null;
Token get endToken => _rightBracket;
+
/**
* Return the extends clause for this class, or {@code null} if the class does not extend any
* other class.
* @return the extends clause for this class
*/
ExtendsClause get extendsClause => _extendsClause;
+
/**
* Return the implements clause for the class, or {@code null} if the class does not implement any
* interfaces.
* @return the implements clause for the class
*/
ImplementsClause get implementsClause => _implementsClause;
+
/**
* Return the left curly bracket.
* @return the left curly bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the members defined by the class.
* @return the members defined by the class
*/
NodeList<ClassMember> get members => _members;
+
/**
* Return the name of the class being declared.
* @return the name of the class being declared
*/
SimpleIdentifier get name => _name;
+
/**
* Return the right curly bracket.
* @return the right curly bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Return the type parameters for the class, or {@code null} if the class does not have any type
* parameters.
* @return the type parameters for the class
*/
TypeParameterList get typeParameters => _typeParameters;
+
/**
* Return the with clause for the class, or {@code null} if the class does not have a with clause.
* @return the with clause for the class
*/
WithClause get withClause => _withClause;
+
/**
* Set the 'abstract' keyword to the given keyword.
* @param abstractKeyword the 'abstract' keyword
@@ -1903,6 +2231,7 @@
void set abstractKeyword(Token abstractKeyword2) {
this._abstractKeyword = abstractKeyword2;
}
+
/**
* Set the token representing the 'class' keyword to the given token.
* @param classKeyword the token representing the 'class' keyword
@@ -1910,6 +2239,7 @@
void set classKeyword(Token classKeyword2) {
this._classKeyword = classKeyword2;
}
+
/**
* Set the extends clause for this class to the given clause.
* @param extendsClause the extends clause for this class
@@ -1917,6 +2247,7 @@
void set extendsClause(ExtendsClause extendsClause2) {
this._extendsClause = becomeParentOf(extendsClause2);
}
+
/**
* Set the implements clause for the class to the given clause.
* @param implementsClause the implements clause for the class
@@ -1924,6 +2255,7 @@
void set implementsClause(ImplementsClause implementsClause2) {
this._implementsClause = becomeParentOf(implementsClause2);
}
+
/**
* Set the left curly bracket to the given token.
* @param leftBracket the left curly bracket
@@ -1931,6 +2263,7 @@
void set leftBracket(Token leftBracket2) {
this._leftBracket = leftBracket2;
}
+
/**
* Set the name of the class being declared to the given identifier.
* @param identifier the name of the class being declared
@@ -1938,6 +2271,7 @@
void set name(SimpleIdentifier identifier) {
_name = becomeParentOf(identifier);
}
+
/**
* Set the right curly bracket to the given token.
* @param rightBracket the right curly bracket
@@ -1945,6 +2279,7 @@
void set rightBracket(Token rightBracket2) {
this._rightBracket = rightBracket2;
}
+
/**
* Set the type parameters for the class to the given list of type parameters.
* @param typeParameters the type parameters for the class
@@ -1952,6 +2287,7 @@
void set typeParameters(TypeParameterList typeParameters2) {
this._typeParameters = typeParameters2;
}
+
/**
* Set the with clause for the class to the given clause.
* @param withClause the with clause for the class
@@ -1975,12 +2311,14 @@
return _classKeyword;
}
}
+
/**
* The abstract class {@code ClassMember} defines the behavior common to nodes that declare a name
* within the scope of a class.
* @coverage dart.engine.ast
*/
abstract class ClassMember extends Declaration {
+
/**
* Initialize a newly created member of a class.
* @param comment the documentation comment associated with this member
@@ -1988,6 +2326,7 @@
*/
ClassMember.full(Comment comment, List<Annotation> metadata) : super.full(comment, metadata) {
}
+
/**
* Initialize a newly created member of a class.
* @param comment the documentation comment associated with this member
@@ -1995,6 +2334,7 @@
*/
ClassMember({Comment comment, List<Annotation> metadata}) : this.full(comment, metadata);
}
+
/**
* Instances of the class {@code ClassTypeAlias} represent a class type alias.
* <pre>
@@ -2004,36 +2344,44 @@
* @coverage dart.engine.ast
*/
class ClassTypeAlias extends TypeAlias {
+
/**
* The name of the class being declared.
*/
SimpleIdentifier _name;
+
/**
* The type parameters for the class, or {@code null} if the class does not have any type
* parameters.
*/
TypeParameterList _typeParameters;
+
/**
* The token for the '=' separating the name from the definition.
*/
Token _equals;
+
/**
* The token for the 'abstract' keyword, or {@code null} if this is not defining an abstract
* class.
*/
Token _abstractKeyword;
+
/**
* The name of the superclass of the class being declared.
*/
TypeName _superclass;
+
/**
* The with clause for this class.
*/
WithClause _withClause;
+
/**
* The implements clause for this class, or {@code null} if there is no implements clause.
*/
ImplementsClause _implementsClause;
+
/**
* Initialize a newly created class type alias.
* @param comment the documentation comment associated with this type alias
@@ -2057,6 +2405,7 @@
this._withClause = becomeParentOf(withClause);
this._implementsClause = becomeParentOf(implementsClause);
}
+
/**
* Initialize a newly created class type alias.
* @param comment the documentation comment associated with this type alias
@@ -2073,6 +2422,7 @@
*/
ClassTypeAlias({Comment comment, List<Annotation> metadata, Token keyword, SimpleIdentifier name, TypeParameterList typeParameters, Token equals, Token abstractKeyword, TypeName superclass, WithClause withClause, ImplementsClause implementsClause, Token semicolon}) : this.full(comment, metadata, keyword, name, typeParameters, equals, abstractKeyword, superclass, withClause, implementsClause, semicolon);
accept(ASTVisitor visitor) => visitor.visitClassTypeAlias(this);
+
/**
* Return the token for the 'abstract' keyword, or {@code null} if this is not defining an
* abstract class.
@@ -2080,37 +2430,44 @@
*/
Token get abstractKeyword => _abstractKeyword;
ClassElement get element => _name != null ? (_name.element as ClassElement) : null;
+
/**
* Return the token for the '=' separating the name from the definition.
* @return the token for the '=' separating the name from the definition
*/
Token get equals => _equals;
+
/**
* Return the implements clause for this class, or {@code null} if there is no implements clause.
* @return the implements clause for this class
*/
ImplementsClause get implementsClause => _implementsClause;
+
/**
* Return the name of the class being declared.
* @return the name of the class being declared
*/
SimpleIdentifier get name => _name;
+
/**
* Return the name of the superclass of the class being declared.
* @return the name of the superclass of the class being declared
*/
TypeName get superclass => _superclass;
+
/**
* Return the type parameters for the class, or {@code null} if the class does not have any type
* parameters.
* @return the type parameters for the class
*/
TypeParameterList get typeParameters => _typeParameters;
+
/**
* Return the with clause for this class.
* @return the with clause for this class
*/
WithClause get withClause => _withClause;
+
/**
* Set the token for the 'abstract' keyword to the given token.
* @param abstractKeyword the token for the 'abstract' keyword
@@ -2118,6 +2475,7 @@
void set abstractKeyword(Token abstractKeyword2) {
this._abstractKeyword = abstractKeyword2;
}
+
/**
* Set the token for the '=' separating the name from the definition to the given token.
* @param equals the token for the '=' separating the name from the definition
@@ -2125,6 +2483,7 @@
void set equals(Token equals2) {
this._equals = equals2;
}
+
/**
* Set the implements clause for this class to the given implements clause.
* @param implementsClause the implements clause for this class
@@ -2132,6 +2491,7 @@
void set implementsClause(ImplementsClause implementsClause2) {
this._implementsClause = becomeParentOf(implementsClause2);
}
+
/**
* Set the name of the class being declared to the given identifier.
* @param name the name of the class being declared
@@ -2139,6 +2499,7 @@
void set name(SimpleIdentifier name2) {
this._name = becomeParentOf(name2);
}
+
/**
* Set the name of the superclass of the class being declared to the given name.
* @param superclass the name of the superclass of the class being declared
@@ -2146,6 +2507,7 @@
void set superclass(TypeName superclass2) {
this._superclass = becomeParentOf(superclass2);
}
+
/**
* Set the type parameters for the class to the given list of parameters.
* @param typeParameters the type parameters for the class
@@ -2153,6 +2515,7 @@
void set typeParameters(TypeParameterList typeParameters2) {
this._typeParameters = becomeParentOf(typeParameters2);
}
+
/**
* Set the with clause for this class to the given with clause.
* @param withClause the with clause for this class
@@ -2169,6 +2532,7 @@
safelyVisitChild(_implementsClause, visitor);
}
}
+
/**
* Instances of the class {@code Combinator} represent the combinator associated with an import
* directive.
@@ -2177,10 +2541,12 @@
* @coverage dart.engine.ast
*/
abstract class Combinator extends ASTNode {
+
/**
* The keyword specifying what kind of processing is to be done on the imported names.
*/
Token _keyword;
+
/**
* Initialize a newly created import combinator.
* @param keyword the keyword specifying what kind of processing is to be done on the imported
@@ -2189,6 +2555,7 @@
Combinator.full(Token keyword) {
this._keyword = keyword;
}
+
/**
* Initialize a newly created import combinator.
* @param keyword the keyword specifying what kind of processing is to be done on the imported
@@ -2196,11 +2563,13 @@
*/
Combinator({Token keyword}) : this.full(keyword);
Token get beginToken => _keyword;
+
/**
* Return the keyword specifying what kind of processing is to be done on the imported names.
* @return the keyword specifying what kind of processing is to be done on the imported names
*/
Token get keyword => _keyword;
+
/**
* Set the keyword specifying what kind of processing is to be done on the imported names to the
* given token.
@@ -2211,6 +2580,7 @@
this._keyword = keyword2;
}
}
+
/**
* Instances of the class {@code Comment} represent a comment within the source code.
* <pre>
@@ -2229,18 +2599,21 @@
* @coverage dart.engine.ast
*/
class Comment extends ASTNode {
+
/**
* Create a block comment.
* @param tokens the tokens representing the comment
* @return the block comment that was created
*/
static Comment createBlockComment(List<Token> tokens) => new Comment.full(tokens, CommentType.BLOCK, null);
+
/**
* Create a documentation comment.
* @param tokens the tokens representing the comment
* @return the documentation comment that was created
*/
static Comment createDocumentationComment(List<Token> tokens) => new Comment.full(tokens, CommentType.DOCUMENTATION, new List<CommentReference>());
+
/**
* Create a documentation comment.
* @param tokens the tokens representing the comment
@@ -2248,25 +2621,30 @@
* @return the documentation comment that was created
*/
static Comment createDocumentationComment2(List<Token> tokens, List<CommentReference> references) => new Comment.full(tokens, CommentType.DOCUMENTATION, references);
+
/**
* Create an end-of-line comment.
* @param tokens the tokens representing the comment
* @return the end-of-line comment that was created
*/
static Comment createEndOfLineComment(List<Token> tokens) => new Comment.full(tokens, CommentType.END_OF_LINE, null);
+
/**
* The tokens representing the comment.
*/
List<Token> _tokens;
+
/**
* The type of the comment.
*/
CommentType _type;
+
/**
* The references embedded within the documentation comment. This list will be empty unless this
* is a documentation comment that has references embedded within it.
*/
NodeList<CommentReference> _references;
+
/**
* Initialize a newly created comment.
* @param tokens the tokens representing the comment
@@ -2279,6 +2657,7 @@
this._type = type;
this._references.addAll(references);
}
+
/**
* Initialize a newly created comment.
* @param tokens the tokens representing the comment
@@ -2289,26 +2668,31 @@
accept(ASTVisitor visitor) => visitor.visitComment(this);
Token get beginToken => _tokens[0];
Token get endToken => _tokens[_tokens.length - 1];
+
/**
* Return the references embedded within the documentation comment.
* @return the references embedded within the documentation comment
*/
NodeList<CommentReference> get references => _references;
+
/**
* Return the tokens representing the comment.
* @return the tokens representing the comment
*/
List<Token> get tokens => _tokens;
+
/**
* Return {@code true} if this is a block comment.
* @return {@code true} if this is a block comment
*/
bool isBlock() => identical(_type, CommentType.BLOCK);
+
/**
* Return {@code true} if this is a documentation comment.
* @return {@code true} if this is a documentation comment
*/
bool isDocumentation() => identical(_type, CommentType.DOCUMENTATION);
+
/**
* Return {@code true} if this is an end-of-line comment.
* @return {@code true} if this is an end-of-line comment
@@ -2318,32 +2702,40 @@
_references.accept(visitor);
}
}
+
/**
* The enumeration {@code CommentType} encodes all the different types of comments that are
* recognized by the parser.
*/
class CommentType implements Comparable<CommentType> {
+
/**
* An end-of-line comment.
*/
static final CommentType END_OF_LINE = new CommentType('END_OF_LINE', 0);
+
/**
* A block comment.
*/
static final CommentType BLOCK = new CommentType('BLOCK', 1);
+
/**
* A documentation comment.
*/
static final CommentType DOCUMENTATION = new CommentType('DOCUMENTATION', 2);
static final List<CommentType> values = [END_OF_LINE, BLOCK, DOCUMENTATION];
- final String __name;
- final int __ordinal;
- int get ordinal => __ordinal;
- CommentType(this.__name, this.__ordinal) {
+
+ /// The name of this enum constant, as declared in the enum declaration.
+ final String name;
+
+ /// The position in the enum declaration.
+ final int ordinal;
+ CommentType(this.name, this.ordinal) {
}
- int compareTo(CommentType other) => __ordinal - other.__ordinal;
- String toString() => __name;
+ int compareTo(CommentType other) => ordinal - other.ordinal;
+ String toString() => name;
}
+
/**
* Instances of the class {@code CommentReference} represent a reference to a Dart element that is
* found within a documentation comment.
@@ -2354,14 +2746,17 @@
* @coverage dart.engine.ast
*/
class CommentReference extends ASTNode {
+
/**
* The token representing the 'new' keyword, or {@code null} if there was no 'new' keyword.
*/
Token _newKeyword;
+
/**
* The identifier being referenced.
*/
Identifier _identifier;
+
/**
* Initialize a newly created reference to a Dart element.
* @param newKeyword the token representing the 'new' keyword
@@ -2371,6 +2766,7 @@
this._newKeyword = newKeyword;
this._identifier = becomeParentOf(identifier);
}
+
/**
* Initialize a newly created reference to a Dart element.
* @param newKeyword the token representing the 'new' keyword
@@ -2380,16 +2776,19 @@
accept(ASTVisitor visitor) => visitor.visitCommentReference(this);
Token get beginToken => _identifier.beginToken;
Token get endToken => _identifier.endToken;
+
/**
* Return the identifier being referenced.
* @return the identifier being referenced
*/
Identifier get identifier => _identifier;
+
/**
* Return the token representing the 'new' keyword, or {@code null} if there was no 'new' keyword.
* @return the token representing the 'new' keyword
*/
Token get newKeyword => _newKeyword;
+
/**
* Set the identifier being referenced to the given identifier.
* @param identifier the identifier being referenced
@@ -2397,6 +2796,7 @@
void set identifier(Identifier identifier2) {
identifier2 = becomeParentOf(identifier2);
}
+
/**
* Set the token representing the 'new' keyword to the given token.
* @param newKeyword the token representing the 'new' keyword
@@ -2408,6 +2808,7 @@
safelyVisitChild(_identifier, visitor);
}
}
+
/**
* Instances of the class {@code CompilationUnit} represent a compilation unit.
* <p>
@@ -2422,45 +2823,55 @@
* @coverage dart.engine.ast
*/
class CompilationUnit extends ASTNode {
+
/**
* The first token in the token stream that was parsed to form this compilation unit.
*/
Token _beginToken;
+
/**
* The script tag at the beginning of the compilation unit, or {@code null} if there is no script
* tag in this compilation unit.
*/
ScriptTag _scriptTag;
+
/**
* The directives contained in this compilation unit.
*/
NodeList<Directive> _directives;
+
/**
* The declarations contained in this compilation unit.
*/
NodeList<CompilationUnitMember> _declarations;
+
/**
* The last token in the token stream that was parsed to form this compilation unit. This token
* should always have a type of {@link TokenType.EOF}.
*/
Token _endToken;
+
/**
* The element associated with this compilation unit, or {@code null} if the AST structure has not
* been resolved.
*/
CompilationUnitElement _element;
+
/**
* The {@link LineInfo} for this {@link CompilationUnit}.
*/
LineInfo _lineInfo;
+
/**
* The parsing errors encountered when the receiver was parsed.
*/
List<AnalysisError> _parsingErrors = AnalysisError.NO_ERRORS;
+
/**
* The resolution errors encountered when the receiver was resolved.
*/
List<AnalysisError> _resolutionErrors = AnalysisError.NO_ERRORS;
+
/**
* Initialize a newly created compilation unit to have the given directives and declarations.
* @param beginToken the first token in the token stream
@@ -2478,6 +2889,7 @@
this._declarations.addAll(declarations);
this._endToken = endToken;
}
+
/**
* Initialize a newly created compilation unit to have the given directives and declarations.
* @param beginToken the first token in the token stream
@@ -2489,16 +2901,19 @@
CompilationUnit({Token beginToken, ScriptTag scriptTag, List<Directive> directives, List<CompilationUnitMember> declarations, Token endToken}) : this.full(beginToken, scriptTag, directives, declarations, endToken);
accept(ASTVisitor visitor) => visitor.visitCompilationUnit(this);
Token get beginToken => _beginToken;
+
/**
* Return the declarations contained in this compilation unit.
* @return the declarations contained in this compilation unit
*/
NodeList<CompilationUnitMember> get declarations => _declarations;
+
/**
* Return the directives contained in this compilation unit.
* @return the directives contained in this compilation unit
*/
NodeList<Directive> get directives => _directives;
+
/**
* Return the element associated with this compilation unit, or {@code null} if the AST structure
* has not been resolved.
@@ -2506,6 +2921,7 @@
*/
CompilationUnitElement get element => _element;
Token get endToken => _endToken;
+
/**
* Return an array containing all of the errors associated with the receiver. If the receiver has
* not been resolved, then return {@code null}.
@@ -2533,17 +2949,20 @@
}
return endToken2.offset + endToken2.length;
}
+
/**
* Get the {@link LineInfo} object for this compilation unit.
* @return the associated {@link LineInfo}
*/
LineInfo get lineInfo => _lineInfo;
int get offset => 0;
+
/**
* Return an array containing all of the parsing errors associated with the receiver.
* @return an array of errors (not {@code null}, contains no {@code null}s).
*/
List<AnalysisError> get parsingErrors => _parsingErrors;
+
/**
* Return an array containing all of the resolution errors associated with the receiver. If the
* receiver has not been resolved, then return {@code null}.
@@ -2551,12 +2970,14 @@
* been resolved
*/
List<AnalysisError> get resolutionErrors => _resolutionErrors;
+
/**
* Return the script tag at the beginning of the compilation unit, or {@code null} if there is no
* script tag in this compilation unit.
* @return the script tag at the beginning of the compilation unit
*/
ScriptTag get scriptTag => _scriptTag;
+
/**
* Set the element associated with this compilation unit to the given element.
* @param element the element associated with this compilation unit
@@ -2564,6 +2985,7 @@
void set element(CompilationUnitElement element2) {
this._element = element2;
}
+
/**
* Set the {@link LineInfo} object for this compilation unit.
* @param errors LineInfo to associate with this compilation unit
@@ -2571,6 +2993,7 @@
void set lineInfo(LineInfo lineInfo2) {
this._lineInfo = lineInfo2;
}
+
/**
* Called to cache the parsing errors when the unit is parsed.
* @param errors an array of parsing errors, if {@code null} is passed, the error array is set to
@@ -2579,6 +3002,7 @@
void set parsingErrors(List<AnalysisError> errors) {
_parsingErrors = errors == null ? AnalysisError.NO_ERRORS : errors;
}
+
/**
* Called to cache the resolution errors when the unit is resolved.
* @param errors an array of resolution errors, if {@code null} is passed, the error array is set
@@ -2587,6 +3011,7 @@
void set resolutionErrors(List<AnalysisError> errors) {
_resolutionErrors = errors == null ? AnalysisError.NO_ERRORS : errors;
}
+
/**
* Set the script tag at the beginning of the compilation unit to the given script tag.
* @param scriptTag the script tag at the beginning of the compilation unit
@@ -2605,6 +3030,7 @@
}
}
}
+
/**
* Return {@code true} if all of the directives are lexically before any declarations.
* @return {@code true} if all of the directives are lexically before any declarations
@@ -2617,6 +3043,7 @@
CompilationUnitMember firstDeclaration = _declarations[0];
return lastDirective.offset < firstDeclaration.offset;
}
+
/**
* Return an array containing all of the directives and declarations in this compilation unit,
* sorted in lexical order.
@@ -2632,6 +3059,7 @@
return children;
}
}
+
/**
* Instances of the class {@code CompilationUnitMember} defines the behavior common to nodes that
* declare a name within the scope of a compilation unit.
@@ -2640,6 +3068,7 @@
* @coverage dart.engine.ast
*/
abstract class CompilationUnitMember extends Declaration {
+
/**
* Initialize a newly created generic compilation unit member.
* @param comment the documentation comment associated with this member
@@ -2647,6 +3076,7 @@
*/
CompilationUnitMember.full(Comment comment, List<Annotation> metadata) : super.full(comment, metadata) {
}
+
/**
* Initialize a newly created generic compilation unit member.
* @param comment the documentation comment associated with this member
@@ -2654,6 +3084,7 @@
*/
CompilationUnitMember({Comment comment, List<Annotation> metadata}) : this.full(comment, metadata);
}
+
/**
* Instances of the class {@code ConditionalExpression} represent a conditional expression.
* <pre>
@@ -2661,26 +3092,32 @@
* @coverage dart.engine.ast
*/
class ConditionalExpression extends Expression {
+
/**
* The condition used to determine which of the expressions is executed next.
*/
Expression _condition;
+
/**
* The token used to separate the condition from the then expression.
*/
Token _question;
+
/**
* The expression that is executed if the condition evaluates to {@code true}.
*/
Expression _thenExpression;
+
/**
* The token used to separate the then expression from the else expression.
*/
Token _colon;
+
/**
* The expression that is executed if the condition evaluates to {@code false}.
*/
Expression _elseExpression;
+
/**
* Initialize a newly created conditional expression.
* @param condition the condition used to determine which expression is executed next
@@ -2696,6 +3133,7 @@
this._colon = colon;
this._elseExpression = becomeParentOf(elseExpression);
}
+
/**
* Initialize a newly created conditional expression.
* @param condition the condition used to determine which expression is executed next
@@ -2707,32 +3145,38 @@
ConditionalExpression({Expression condition, Token question, Expression thenExpression, Token colon, Expression elseExpression}) : this.full(condition, question, thenExpression, colon, elseExpression);
accept(ASTVisitor visitor) => visitor.visitConditionalExpression(this);
Token get beginToken => _condition.beginToken;
+
/**
* Return the token used to separate the then expression from the else expression.
* @return the token used to separate the then expression from the else expression
*/
Token get colon => _colon;
+
/**
* Return the condition used to determine which of the expressions is executed next.
* @return the condition used to determine which expression is executed next
*/
Expression get condition => _condition;
+
/**
* Return the expression that is executed if the condition evaluates to {@code false}.
* @return the expression that is executed if the condition evaluates to {@code false}
*/
Expression get elseExpression => _elseExpression;
Token get endToken => _elseExpression.endToken;
+
/**
* Return the token used to separate the condition from the then expression.
* @return the token used to separate the condition from the then expression
*/
Token get question => _question;
+
/**
* Return the expression that is executed if the condition evaluates to {@code true}.
* @return the expression that is executed if the condition evaluates to {@code true}
*/
Expression get thenExpression => _thenExpression;
+
/**
* Set the token used to separate the then expression from the else expression to the given token.
* @param colon the token used to separate the then expression from the else expression
@@ -2740,6 +3184,7 @@
void set colon(Token colon2) {
this._colon = colon2;
}
+
/**
* Set the condition used to determine which of the expressions is executed next to the given
* expression.
@@ -2748,6 +3193,7 @@
void set condition(Expression expression) {
_condition = becomeParentOf(expression);
}
+
/**
* Set the expression that is executed if the condition evaluates to {@code false} to the given
* expression.
@@ -2756,6 +3202,7 @@
void set elseExpression(Expression expression) {
_elseExpression = becomeParentOf(expression);
}
+
/**
* Set the token used to separate the condition from the then expression to the given token.
* @param question the token used to separate the condition from the then expression
@@ -2763,6 +3210,7 @@
void set question(Token question2) {
this._question = question2;
}
+
/**
* Set the expression that is executed if the condition evaluates to {@code true} to the given
* expression.
@@ -2777,6 +3225,7 @@
safelyVisitChild(_elseExpression, visitor);
}
}
+
/**
* Instances of the class {@code ConstructorDeclaration} represent a constructor declaration.
* <pre>
@@ -2795,61 +3244,74 @@
* @coverage dart.engine.ast
*/
class ConstructorDeclaration extends ClassMember {
+
/**
* The token for the 'external' keyword, or {@code null} if the constructor is not external.
*/
Token _externalKeyword;
+
/**
* The token for the 'const' keyword, or {@code null} if the constructor is not a const
* constructor.
*/
Token _constKeyword;
+
/**
* The token for the 'factory' keyword, or {@code null} if the constructor is not a factory
* constructor.
*/
Token _factoryKeyword;
+
/**
* The type of object being created. This can be different than the type in which the constructor
* is being declared if the constructor is the implementation of a factory constructor.
*/
Identifier _returnType;
+
/**
* The token for the period before the constructor name, or {@code null} if the constructor being
* declared is unnamed.
*/
Token _period;
+
/**
* The name of the constructor, or {@code null} if the constructor being declared is unnamed.
*/
SimpleIdentifier _name;
+
/**
* The element associated with this constructor, or {@code null} if the AST structure has not been
* resolved or if this constructor could not be resolved.
*/
ConstructorElement _element;
+
/**
* The parameters associated with the constructor.
*/
FormalParameterList _parameters;
+
/**
* The token for the separator (colon or equals) before the initializers, or {@code null} if there
* are no initializers.
*/
Token _separator;
+
/**
* The initializers associated with the constructor.
*/
NodeList<ConstructorInitializer> _initializers;
+
/**
* The name of the constructor to which this constructor will be redirected, or {@code null} if
* this is not a redirecting factory constructor.
*/
ConstructorName _redirectedConstructor;
+
/**
* The body of the constructor, or {@code null} if the constructor does not have a body.
*/
FunctionBody _body;
+
/**
* Initialize a newly created constructor declaration.
* @param externalKeyword the token for the 'external' keyword
@@ -2881,6 +3343,7 @@
this._redirectedConstructor = becomeParentOf(redirectedConstructor);
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created constructor declaration.
* @param externalKeyword the token for the 'external' keyword
@@ -2900,11 +3363,13 @@
*/
ConstructorDeclaration({Comment comment, List<Annotation> metadata, Token externalKeyword, Token constKeyword, Token factoryKeyword, Identifier returnType, Token period, SimpleIdentifier name, FormalParameterList parameters, Token separator, List<ConstructorInitializer> initializers, ConstructorName redirectedConstructor, FunctionBody body}) : this.full(comment, metadata, externalKeyword, constKeyword, factoryKeyword, returnType, period, name, parameters, separator, initializers, redirectedConstructor, body);
accept(ASTVisitor visitor) => visitor.visitConstructorDeclaration(this);
+
/**
* Return the body of the constructor, or {@code null} if the constructor does not have a body.
* @return the body of the constructor
*/
FunctionBody get body => _body;
+
/**
* Return the token for the 'const' keyword.
* @return the token for the 'const' keyword
@@ -2919,44 +3384,52 @@
}
return _parameters.endToken;
}
+
/**
* Return the token for the 'external' keyword, or {@code null} if the constructor is not
* external.
* @return the token for the 'external' keyword
*/
Token get externalKeyword => _externalKeyword;
+
/**
* Return the token for the 'factory' keyword.
* @return the token for the 'factory' keyword
*/
Token get factoryKeyword => _factoryKeyword;
+
/**
* Return the initializers associated with the constructor.
* @return the initializers associated with the constructor
*/
NodeList<ConstructorInitializer> get initializers => _initializers;
+
/**
* Return the name of the constructor, or {@code null} if the constructor being declared is
* unnamed.
* @return the name of the constructor
*/
SimpleIdentifier get name => _name;
+
/**
* Return the parameters associated with the constructor.
* @return the parameters associated with the constructor
*/
FormalParameterList get parameters => _parameters;
+
/**
* Return the token for the period before the constructor name, or {@code null} if the constructor
* being declared is unnamed.
* @return the token for the period before the constructor name
*/
Token get period => _period;
+
/**
* Return the name of the constructor to which this constructor will be redirected, or{@code null} if this is not a redirecting factory constructor.
* @return the name of the constructor to which this constructor will be redirected
*/
ConstructorName get redirectedConstructor => _redirectedConstructor;
+
/**
* Return the type of object being created. This can be different than the type in which the
* constructor is being declared if the constructor is the implementation of a factory
@@ -2964,11 +3437,13 @@
* @return the type of object being created
*/
Identifier get returnType => _returnType;
+
/**
* Return the token for the separator (colon or equals) before the initializers, or {@code null}if there are no initializers.
* @return the token for the separator (colon or equals) before the initializers
*/
Token get separator => _separator;
+
/**
* Set the body of the constructor to the given function body.
* @param functionBody the body of the constructor
@@ -2976,6 +3451,7 @@
void set body(FunctionBody functionBody) {
_body = becomeParentOf(functionBody);
}
+
/**
* Set the token for the 'const' keyword to the given token.
* @param constKeyword the token for the 'const' keyword
@@ -2983,6 +3459,7 @@
void set constKeyword(Token constKeyword2) {
this._constKeyword = constKeyword2;
}
+
/**
* Set the element associated with this constructor to the given element.
* @param element the element associated with this constructor
@@ -2990,6 +3467,7 @@
void set element(ConstructorElement element2) {
this._element = element2;
}
+
/**
* Set the token for the 'external' keyword to the given token.
* @param externalKeyword the token for the 'external' keyword
@@ -2997,6 +3475,7 @@
void set externalKeyword(Token externalKeyword2) {
this._externalKeyword = externalKeyword2;
}
+
/**
* Set the token for the 'factory' keyword to the given token.
* @param factoryKeyword the token for the 'factory' keyword
@@ -3004,6 +3483,7 @@
void set factoryKeyword(Token factoryKeyword2) {
this._factoryKeyword = factoryKeyword2;
}
+
/**
* Set the name of the constructor to the given identifier.
* @param identifier the name of the constructor
@@ -3011,6 +3491,7 @@
void set name(SimpleIdentifier identifier) {
_name = becomeParentOf(identifier);
}
+
/**
* Set the parameters associated with the constructor to the given list of parameters.
* @param parameters the parameters associated with the constructor
@@ -3018,6 +3499,7 @@
void set parameters(FormalParameterList parameters2) {
this._parameters = becomeParentOf(parameters2);
}
+
/**
* Set the token for the period before the constructor name to the given token.
* @param period the token for the period before the constructor name
@@ -3025,6 +3507,7 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
* Set the name of the constructor to which this constructor will be redirected to the given
* constructor name.
@@ -3034,6 +3517,7 @@
void set redirectedConstructor(ConstructorName redirectedConstructor2) {
this._redirectedConstructor = becomeParentOf(redirectedConstructor2);
}
+
/**
* Set the type of object being created to the given type name.
* @param typeName the type of object being created
@@ -3041,6 +3525,7 @@
void set returnType(Identifier typeName) {
_returnType = becomeParentOf(typeName);
}
+
/**
* Set the token for the separator (colon or equals) before the initializers to the given token.
* @param separator the token for the separator (colon or equals) before the initializers
@@ -3064,6 +3549,7 @@
}
return _returnType.beginToken;
}
+
/**
* Return the left-most of the given tokens, or {@code null} if there are no tokens given or if
* all of the given tokens are {@code null}.
@@ -3081,6 +3567,7 @@
return leftMost;
}
}
+
/**
* Instances of the class {@code ConstructorFieldInitializer} represent the initialization of a
* field within a constructor's initialization list.
@@ -3090,27 +3577,33 @@
* @coverage dart.engine.ast
*/
class ConstructorFieldInitializer extends ConstructorInitializer {
+
/**
* The token for the 'this' keyword, or {@code null} if there is no 'this' keyword.
*/
Token _keyword;
+
/**
* The token for the period after the 'this' keyword, or {@code null} if there is no 'this'
* keyword.
*/
Token _period;
+
/**
* The name of the field being initialized.
*/
SimpleIdentifier _fieldName;
+
/**
* The token for the equal sign between the field name and the expression.
*/
Token _equals;
+
/**
* The expression computing the value to which the field will be initialized.
*/
Expression _expression;
+
/**
* Initialize a newly created field initializer to initialize the field with the given name to the
* value of the given expression.
@@ -3127,6 +3620,7 @@
this._equals = equals;
this._expression = becomeParentOf(expression);
}
+
/**
* Initialize a newly created field initializer to initialize the field with the given name to the
* value of the given expression.
@@ -3145,32 +3639,38 @@
return _fieldName.beginToken;
}
Token get endToken => _expression.endToken;
+
/**
* Return the token for the equal sign between the field name and the expression.
* @return the token for the equal sign between the field name and the expression
*/
Token get equals => _equals;
+
/**
* Return the expression computing the value to which the field will be initialized.
* @return the expression computing the value to which the field will be initialized
*/
Expression get expression => _expression;
+
/**
* Return the name of the field being initialized.
* @return the name of the field being initialized
*/
SimpleIdentifier get fieldName => _fieldName;
+
/**
* Return the token for the 'this' keyword, or {@code null} if there is no 'this' keyword.
* @return the token for the 'this' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the token for the period after the 'this' keyword, or {@code null} if there is no 'this'
* keyword.
* @return the token for the period after the 'this' keyword
*/
Token get period => _period;
+
/**
* Set the token for the equal sign between the field name and the expression to the given token.
* @param equals the token for the equal sign between the field name and the expression
@@ -3178,6 +3678,7 @@
void set equals(Token equals2) {
this._equals = equals2;
}
+
/**
* Set the expression computing the value to which the field will be initialized to the given
* expression.
@@ -3186,6 +3687,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the name of the field being initialized to the given identifier.
* @param identifier the name of the field being initialized
@@ -3193,6 +3695,7 @@
void set fieldName(SimpleIdentifier identifier) {
_fieldName = becomeParentOf(identifier);
}
+
/**
* Set the token for the 'this' keyword to the given token.
* @param keyword the token for the 'this' keyword
@@ -3200,6 +3703,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the token for the period after the 'this' keyword to the given token.
* @param period the token for the period after the 'this' keyword
@@ -3212,6 +3716,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code ConstructorInitializer} defines the behavior of nodes that can
* occur in the initializer list of a constructor declaration.
@@ -3221,6 +3726,7 @@
*/
abstract class ConstructorInitializer extends ASTNode {
}
+
/**
* Instances of the class {@code ConstructorName} represent the name of the constructor.
* <pre>
@@ -3230,26 +3736,37 @@
* @coverage dart.engine.ast
*/
class ConstructorName extends ASTNode {
+
/**
* The name of the type defining the constructor.
*/
TypeName _type;
+
/**
* The token for the period before the constructor name, or {@code null} if the specified
* constructor is the unnamed constructor.
*/
Token _period;
+
/**
* The name of the constructor, or {@code null} if the specified constructor is the unnamed
* constructor.
*/
SimpleIdentifier _name;
+
/**
- * The element associated with this constructor name, or {@code null} if the AST structure has not
- * been resolved or if this constructor name could not be resolved.
+ * The element associated with this constructor name based on static type information, or{@code null} if the AST structure has not been resolved or if this constructor name could not
+ * be resolved.
*/
- ConstructorElement _element;
+ ConstructorElement _staticElement;
+
/**
+ * The element associated with this constructor name based on propagated type information, or{@code null} if the AST structure has not been resolved or if this constructor name could not
+ * be resolved.
+ */
+ ConstructorElement _propagatedElement;
+
+ /**
* Initialize a newly created constructor name.
* @param type the name of the type defining the constructor
* @param period the token for the period before the constructor name
@@ -3260,6 +3777,7 @@
this._period = period;
this._name = becomeParentOf(name);
}
+
/**
* Initialize a newly created constructor name.
* @param type the name of the type defining the constructor
@@ -3269,42 +3787,57 @@
ConstructorName({TypeName type, Token period, SimpleIdentifier name}) : this.full(type, period, name);
accept(ASTVisitor visitor) => visitor.visitConstructorName(this);
Token get beginToken => _type.beginToken;
+
/**
- * Return the element associated with this constructor name, or {@code null} if the AST structure
- * has not been resolved or if this constructor name could not be resolved.
+ * Return the element associated with this constructor name based on propagated type information,
+ * or {@code null} if the AST structure has not been resolved or if this constructor name could
+ * not be resolved.
* @return the element associated with this constructor name
*/
- ConstructorElement get element => _element;
+ ConstructorElement get element => _propagatedElement;
Token get endToken {
if (_name != null) {
return _name.endToken;
}
return _type.endToken;
}
+
/**
* Return the name of the constructor, or {@code null} if the specified constructor is the unnamed
* constructor.
* @return the name of the constructor
*/
SimpleIdentifier get name => _name;
+
/**
* Return the token for the period before the constructor name, or {@code null} if the specified
* constructor is the unnamed constructor.
* @return the token for the period before the constructor name
*/
Token get period => _period;
+
/**
+ * Return the element associated with this constructor name based on static type information, or{@code null} if the AST structure has not been resolved or if this constructor name could not
+ * be resolved.
+ * @return the element associated with this constructor name
+ */
+ ConstructorElement get staticElement => _staticElement;
+
+ /**
* Return the name of the type defining the constructor.
* @return the name of the type defining the constructor
*/
TypeName get type => _type;
+
/**
- * Set the element associated with this constructor name to the given element.
- * @param element the element associated with this constructor name
+ * Set the element associated with this constructor name based on propagated type information to
+ * the given element.
+ * @param element the element to be associated with this constructor name
*/
void set element(ConstructorElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the name of the constructor to the given name.
* @param name the name of the constructor
@@ -3312,6 +3845,7 @@
void set name(SimpleIdentifier name2) {
this._name = becomeParentOf(name2);
}
+
/**
* Return the token for the period before the constructor name to the given token.
* @param period the token for the period before the constructor name
@@ -3319,7 +3853,17 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
+ * Set the element associated with this constructor name based on static type information to the
+ * given element.
+ * @param element the element to be associated with this constructor name
+ */
+ void set staticElement(ConstructorElement element) {
+ _staticElement = element;
+ }
+
+ /**
* Set the name of the type defining the constructor to the given type name.
* @param type the name of the type defining the constructor
*/
@@ -3331,6 +3875,7 @@
safelyVisitChild(_name, visitor);
}
}
+
/**
* Instances of the class {@code ContinueStatement} represent a continue statement.
* <pre>
@@ -3340,18 +3885,22 @@
* @coverage dart.engine.ast
*/
class ContinueStatement extends Statement {
+
/**
* The token representing the 'continue' keyword.
*/
Token _keyword;
+
/**
* The label associated with the statement, or {@code null} if there is no label.
*/
SimpleIdentifier _label;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created continue statement.
* @param keyword the token representing the 'continue' keyword
@@ -3363,6 +3912,7 @@
this._label = becomeParentOf(label);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created continue statement.
* @param keyword the token representing the 'continue' keyword
@@ -3373,21 +3923,25 @@
accept(ASTVisitor visitor) => visitor.visitContinueStatement(this);
Token get beginToken => _keyword;
Token get endToken => _semicolon;
+
/**
* Return the token representing the 'continue' keyword.
* @return the token representing the 'continue' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the label associated with the statement, or {@code null} if there is no label.
* @return the label associated with the statement
*/
SimpleIdentifier get label => _label;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the token representing the 'continue' keyword to the given token.
* @param keyword the token representing the 'continue' keyword
@@ -3395,6 +3949,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the label associated with the statement to the given label.
* @param identifier the label associated with the statement
@@ -3402,6 +3957,7 @@
void set label(SimpleIdentifier identifier) {
_label = becomeParentOf(identifier);
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -3413,12 +3969,14 @@
safelyVisitChild(_label, visitor);
}
}
+
/**
* The abstract class {@code Declaration} defines the behavior common to nodes that represent the
* declaration of a name. Each declared name is visible within a name scope.
* @coverage dart.engine.ast
*/
abstract class Declaration extends AnnotatedNode {
+
/**
* Initialize a newly created declaration.
* @param comment the documentation comment associated with this declaration
@@ -3426,12 +3984,14 @@
*/
Declaration.full(Comment comment, List<Annotation> metadata) : super.full(comment, metadata) {
}
+
/**
* Initialize a newly created declaration.
* @param comment the documentation comment associated with this declaration
* @param metadata the annotations associated with this declaration
*/
Declaration({Comment comment, List<Annotation> metadata}) : this.full(comment, metadata);
+
/**
* Return the element associated with this declaration, or {@code null} if either this node
* corresponds to a list of declarations or if the AST structure has not been resolved.
@@ -3439,6 +3999,7 @@
*/
Element get element;
}
+
/**
* Instances of the class {@code DeclaredIdentifier} represent the declaration of a single
* identifier.
@@ -3448,20 +4009,24 @@
* @coverage dart.engine.ast
*/
class DeclaredIdentifier extends Declaration {
+
/**
* The token representing either the 'final', 'const' or 'var' keyword, or {@code null} if no
* keyword was used.
*/
Token _keyword;
+
/**
* The name of the declared type of the parameter, or {@code null} if the parameter does not have
* a declared type.
*/
TypeName _type;
+
/**
* The name of the variable being declared.
*/
SimpleIdentifier _identifier;
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -3475,6 +4040,7 @@
this._type = becomeParentOf(type);
this._identifier = becomeParentOf(identifier);
}
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -3493,27 +4059,32 @@
return identifier2.element as LocalVariableElement;
}
Token get endToken => _identifier.endToken;
+
/**
* Return the name of the variable being declared.
* @return the name of the variable being declared
*/
SimpleIdentifier get identifier => _identifier;
+
/**
* Return the token representing either the 'final', 'const' or 'var' keyword.
* @return the token representing either the 'final', 'const' or 'var' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the name of the declared type of the parameter, or {@code null} if the parameter does
* not have a declared type.
* @return the name of the declared type of the parameter
*/
TypeName get type => _type;
+
/**
* Return {@code true} if this variable was declared with the 'const' modifier.
* @return {@code true} if this variable was declared with the 'const' modifier
*/
bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.CONST);
+
/**
* Return {@code true} if this variable was declared with the 'final' modifier. Variables that are
* declared with the 'const' modifier will return {@code false} even though they are implicitly
@@ -3521,6 +4092,7 @@
* @return {@code true} if this variable was declared with the 'final' modifier
*/
bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.FINAL);
+
/**
* Set the token representing either the 'final', 'const' or 'var' keyword to the given token.
* @param keyword the token representing either the 'final', 'const' or 'var' keyword
@@ -3528,6 +4100,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the name of the declared type of the parameter to the given type name.
* @param typeName the name of the declared type of the parameter
@@ -3549,6 +4122,7 @@
return _identifier.beginToken;
}
}
+
/**
* Instances of the class {@code DefaultFormalParameter} represent a formal parameter with a default
* value. There are two kinds of parameters that are both represented by this class: named formal
@@ -3560,24 +4134,29 @@
* @coverage dart.engine.ast
*/
class DefaultFormalParameter extends FormalParameter {
+
/**
* The formal parameter with which the default value is associated.
*/
NormalFormalParameter _parameter;
+
/**
* The kind of this parameter.
*/
ParameterKind _kind;
+
/**
* The token separating the parameter from the default value, or {@code null} if there is no
* default value.
*/
Token _separator;
+
/**
* The expression computing the default value for the parameter, or {@code null} if there is no
* default value.
*/
Expression _defaultValue;
+
/**
* Initialize a newly created default formal parameter.
* @param parameter the formal parameter with which the default value is associated
@@ -3591,6 +4170,7 @@
this._separator = separator;
this._defaultValue = becomeParentOf(defaultValue);
}
+
/**
* Initialize a newly created default formal parameter.
* @param parameter the formal parameter with which the default value is associated
@@ -3601,6 +4181,7 @@
DefaultFormalParameter({NormalFormalParameter parameter, ParameterKind kind, Token separator, Expression defaultValue}) : this.full(parameter, kind, separator, defaultValue);
accept(ASTVisitor visitor) => visitor.visitDefaultFormalParameter(this);
Token get beginToken => _parameter.beginToken;
+
/**
* Return the expression computing the default value for the parameter, or {@code null} if there
* is no default value.
@@ -3615,22 +4196,26 @@
}
SimpleIdentifier get identifier => _parameter.identifier;
ParameterKind get kind => _kind;
+
/**
* Return the formal parameter with which the default value is associated.
* @return the formal parameter with which the default value is associated
*/
NormalFormalParameter get parameter => _parameter;
+
/**
* Return the token separating the parameter from the default value, or {@code null} if there is
* no default value.
* @return the token separating the parameter from the default value
*/
Token get separator => _separator;
+
/**
* Return {@code true} if this parameter was declared with the 'const' modifier.
* @return {@code true} if this parameter was declared with the 'const' modifier
*/
bool isConst() => _parameter != null && _parameter.isConst();
+
/**
* Return {@code true} if this parameter was declared with the 'final' modifier. Parameters that
* are declared with the 'const' modifier will return {@code false} even though they are
@@ -3638,6 +4223,7 @@
* @return {@code true} if this parameter was declared with the 'final' modifier
*/
bool isFinal() => _parameter != null && _parameter.isFinal();
+
/**
* Set the expression computing the default value for the parameter to the given expression.
* @param expression the expression computing the default value for the parameter
@@ -3645,6 +4231,7 @@
void set defaultValue(Expression expression) {
_defaultValue = becomeParentOf(expression);
}
+
/**
* Set the kind of this parameter to the given kind.
* @param kind the kind of this parameter
@@ -3652,6 +4239,7 @@
void set kind(ParameterKind kind2) {
this._kind = kind2;
}
+
/**
* Set the formal parameter with which the default value is associated to the given parameter.
* @param formalParameter the formal parameter with which the default value is associated
@@ -3659,6 +4247,7 @@
void set parameter(NormalFormalParameter formalParameter) {
_parameter = becomeParentOf(formalParameter);
}
+
/**
* Set the token separating the parameter from the default value to the given token.
* @param separator the token separating the parameter from the default value
@@ -3671,6 +4260,7 @@
safelyVisitChild(_defaultValue, visitor);
}
}
+
/**
* The abstract class {@code Directive} defines the behavior common to nodes that represent a
* directive.
@@ -3679,11 +4269,13 @@
* @coverage dart.engine.ast
*/
abstract class Directive extends AnnotatedNode {
+
/**
* The element associated with this directive, or {@code null} if the AST structure has not been
* resolved or if this directive could not be resolved.
*/
Element _element;
+
/**
* Initialize a newly create directive.
* @param comment the documentation comment associated with this directive
@@ -3691,12 +4283,14 @@
*/
Directive.full(Comment comment, List<Annotation> metadata) : super.full(comment, metadata) {
}
+
/**
* Initialize a newly create directive.
* @param comment the documentation comment associated with this directive
* @param metadata the annotations associated with the directive
*/
Directive({Comment comment, List<Annotation> metadata}) : this.full(comment, metadata);
+
/**
* Return the element associated with this directive, or {@code null} if the AST structure has not
* been resolved or if this directive could not be resolved. Examples of the latter case include a
@@ -3704,12 +4298,14 @@
* @return the element associated with this directive
*/
Element get element => _element;
+
/**
* Return the token representing the keyword that introduces this directive ('import', 'export',
* 'library' or 'part').
* @return the token representing the keyword that introduces this directive
*/
Token get keyword;
+
/**
* Set the element associated with this directive to the given element.
* @param element the element associated with this directive
@@ -3718,6 +4314,7 @@
this._element = element2;
}
}
+
/**
* Instances of the class {@code DoStatement} represent a do statement.
* <pre>
@@ -3727,34 +4324,42 @@
* @coverage dart.engine.ast
*/
class DoStatement extends Statement {
+
/**
* The token representing the 'do' keyword.
*/
Token _doKeyword;
+
/**
* The body of the loop.
*/
Statement _body;
+
/**
* The token representing the 'while' keyword.
*/
Token _whileKeyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The condition that determines when the loop will terminate.
*/
Expression _condition;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created do loop.
* @param doKeyword the token representing the 'do' keyword
@@ -3774,6 +4379,7 @@
this._rightParenthesis = rightParenthesis;
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created do loop.
* @param doKeyword the token representing the 'do' keyword
@@ -3787,42 +4393,50 @@
DoStatement({Token doKeyword, Statement body, Token whileKeyword, Token leftParenthesis, Expression condition, Token rightParenthesis, Token semicolon}) : this.full(doKeyword, body, whileKeyword, leftParenthesis, condition, rightParenthesis, semicolon);
accept(ASTVisitor visitor) => visitor.visitDoStatement(this);
Token get beginToken => _doKeyword;
+
/**
* Return the body of the loop.
* @return the body of the loop
*/
Statement get body => _body;
+
/**
* Return the condition that determines when the loop will terminate.
* @return the condition that determines when the loop will terminate
*/
Expression get condition => _condition;
+
/**
* Return the token representing the 'do' keyword.
* @return the token representing the 'do' keyword
*/
Token get doKeyword => _doKeyword;
Token get endToken => _semicolon;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Return the token representing the 'while' keyword.
* @return the token representing the 'while' keyword
*/
Token get whileKeyword => _whileKeyword;
+
/**
* Set the body of the loop to the given statement.
* @param statement the body of the loop
@@ -3830,6 +4444,7 @@
void set body(Statement statement) {
_body = becomeParentOf(statement);
}
+
/**
* Set the condition that determines when the loop will terminate to the given expression.
* @param expression the condition that determines when the loop will terminate
@@ -3837,6 +4452,7 @@
void set condition(Expression expression) {
_condition = becomeParentOf(expression);
}
+
/**
* Set the token representing the 'do' keyword to the given token.
* @param doKeyword the token representing the 'do' keyword
@@ -3844,6 +4460,7 @@
void set doKeyword(Token doKeyword2) {
this._doKeyword = doKeyword2;
}
+
/**
* Set the left parenthesis to the given token.
* @param parenthesis the left parenthesis
@@ -3851,6 +4468,7 @@
void set leftParenthesis(Token parenthesis) {
_leftParenthesis = parenthesis;
}
+
/**
* Set the right parenthesis to the given token.
* @param parenthesis the right parenthesis
@@ -3858,6 +4476,7 @@
void set rightParenthesis(Token parenthesis) {
_rightParenthesis = parenthesis;
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -3865,6 +4484,7 @@
void set semicolon(Token semicolon2) {
this._semicolon = semicolon2;
}
+
/**
* Set the token representing the 'while' keyword to the given token.
* @param whileKeyword the token representing the 'while' keyword
@@ -3877,6 +4497,7 @@
safelyVisitChild(_condition, visitor);
}
}
+
/**
* Instances of the class {@code DoubleLiteral} represent a floating point literal expression.
* <pre>
@@ -3889,14 +4510,17 @@
* @coverage dart.engine.ast
*/
class DoubleLiteral extends Literal {
+
/**
* The token representing the literal.
*/
Token _literal;
+
/**
* The value of the literal.
*/
double _value = 0.0;
+
/**
* Initialize a newly created floating point literal.
* @param literal the token representing the literal
@@ -3906,6 +4530,7 @@
this._literal = literal;
this._value = value;
}
+
/**
* Initialize a newly created floating point literal.
* @param literal the token representing the literal
@@ -3915,16 +4540,19 @@
accept(ASTVisitor visitor) => visitor.visitDoubleLiteral(this);
Token get beginToken => _literal;
Token get endToken => _literal;
+
/**
* Return the token representing the literal.
* @return the token representing the literal
*/
Token get literal => _literal;
+
/**
* Return the value of the literal.
* @return the value of the literal
*/
double get value => _value;
+
/**
* Set the token representing the literal to the given token.
* @param literal the token representing the literal
@@ -3932,6 +4560,7 @@
void set literal(Token literal2) {
this._literal = literal2;
}
+
/**
* Set the value of the literal to the given value.
* @param value the value of the literal
@@ -3942,6 +4571,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code EmptyFunctionBody} represent an empty function body, which can only
* appear in constructors or abstract methods.
@@ -3952,10 +4582,12 @@
* @coverage dart.engine.ast
*/
class EmptyFunctionBody extends FunctionBody {
+
/**
* The token representing the semicolon that marks the end of the function body.
*/
Token _semicolon;
+
/**
* Initialize a newly created function body.
* @param semicolon the token representing the semicolon that marks the end of the function body
@@ -3963,6 +4595,7 @@
EmptyFunctionBody.full(Token semicolon) {
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created function body.
* @param semicolon the token representing the semicolon that marks the end of the function body
@@ -3971,11 +4604,13 @@
accept(ASTVisitor visitor) => visitor.visitEmptyFunctionBody(this);
Token get beginToken => _semicolon;
Token get endToken => _semicolon;
+
/**
* Return the token representing the semicolon that marks the end of the function body.
* @return the token representing the semicolon that marks the end of the function body
*/
Token get semicolon => _semicolon;
+
/**
* Set the token representing the semicolon that marks the end of the function body to the given
* token.
@@ -3987,6 +4622,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code EmptyStatement} represent an empty statement.
* <pre>
@@ -3996,10 +4632,12 @@
* @coverage dart.engine.ast
*/
class EmptyStatement extends Statement {
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created empty statement.
* @param semicolon the semicolon terminating the statement
@@ -4007,6 +4645,7 @@
EmptyStatement.full(Token semicolon) {
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created empty statement.
* @param semicolon the semicolon terminating the statement
@@ -4015,11 +4654,13 @@
accept(ASTVisitor visitor) => visitor.visitEmptyStatement(this);
Token get beginToken => _semicolon;
Token get endToken => _semicolon;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -4030,6 +4671,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Ephemeral identifiers are created as needed to mimic the presence of an empty identifier.
* @coverage dart.engine.ast
@@ -4040,6 +4682,7 @@
}
EphemeralIdentifier({ASTNode parent, int location}) : this.full(parent, location);
}
+
/**
* Instances of the class {@code ExportDirective} represent an export directive.
* <pre>
@@ -4048,6 +4691,7 @@
* @coverage dart.engine.ast
*/
class ExportDirective extends NamespaceDirective {
+
/**
* Initialize a newly created export directive.
* @param comment the documentation comment associated with this directive
@@ -4059,6 +4703,7 @@
*/
ExportDirective.full(Comment comment, List<Annotation> metadata, Token keyword, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon) : super.full(comment, metadata, keyword, libraryUri, combinators, semicolon) {
}
+
/**
* Initialize a newly created export directive.
* @param comment the documentation comment associated with this directive
@@ -4070,11 +4715,19 @@
*/
ExportDirective({Comment comment, List<Annotation> metadata, Token keyword, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : this.full(comment, metadata, keyword, libraryUri, combinators, semicolon);
accept(ASTVisitor visitor) => visitor.visitExportDirective(this);
+ LibraryElement get uriElement {
+ Element element2 = element;
+ if (element2 is ExportElement) {
+ return ((element2 as ExportElement)).exportedLibrary;
+ }
+ return null;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
super.visitChildren(visitor);
combinators.accept(visitor);
}
}
+
/**
* Instances of the class {@code Expression} defines the behavior common to nodes that represent an
* expression.
@@ -4084,15 +4737,18 @@
* @coverage dart.engine.ast
*/
abstract class Expression extends ASTNode {
+
/**
* The static type of this expression, or {@code null} if the AST structure has not been resolved.
*/
Type2 _staticType;
+
/**
* The propagated type of this expression, or {@code null} if type propagation has not been
* performed on the AST structure.
*/
Type2 _propagatedType;
+
/**
* If this expression is an argument to an invocation, and the AST structure has been resolved,
* and the function being invoked is known, and this expression corresponds to one of the
@@ -4106,25 +4762,41 @@
if (parent2 is ArgumentList) {
return ((parent2 as ArgumentList)).getParameterElementFor(this);
}
+ if (parent2 is IndexExpression) {
+ IndexExpression indexExpression = parent2 as IndexExpression;
+ if (identical(indexExpression.index, this)) {
+ return indexExpression.parameterElementForIndex;
+ }
+ }
+ if (parent2 is BinaryExpression) {
+ BinaryExpression binaryExpression = parent2 as BinaryExpression;
+ if (identical(binaryExpression.rightOperand, this)) {
+ return binaryExpression.parameterElementForRightOperand;
+ }
+ }
return null;
}
+
/**
* Return the propagated type of this expression, or {@code null} if type propagation has not been
* performed on the AST structure.
* @return the propagated type of this expression
*/
Type2 get propagatedType => _propagatedType;
+
/**
* Return the static type of this expression, or {@code null} if the AST structure has not been
* resolved.
* @return the static type of this expression
*/
Type2 get staticType => _staticType;
+
/**
* Return {@code true} if this expression is syntactically valid for the LHS of an{@link AssignmentExpression assignment expression}.
* @return {@code true} if this expression matches the {@code assignableExpression} production
*/
bool isAssignable() => false;
+
/**
* Set the propagated type of this expression to the given type.
* @param propagatedType the propagated type of this expression
@@ -4132,6 +4804,7 @@
void set propagatedType(Type2 propagatedType2) {
this._propagatedType = propagatedType2;
}
+
/**
* Set the static type of this expression to the given type.
* @param staticType the static type of this expression
@@ -4140,6 +4813,7 @@
this._staticType = staticType2;
}
}
+
/**
* Instances of the class {@code ExpressionFunctionBody} represent a function body consisting of a
* single expression.
@@ -4150,18 +4824,22 @@
* @coverage dart.engine.ast
*/
class ExpressionFunctionBody extends FunctionBody {
+
/**
* The token introducing the expression that represents the body of the function.
*/
Token _functionDefinition;
+
/**
* The expression representing the body of the function.
*/
Expression _expression;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created function body consisting of a block of statements.
* @param functionDefinition the token introducing the expression that represents the body of the
@@ -4174,6 +4852,7 @@
this._expression = becomeParentOf(expression);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created function body consisting of a block of statements.
* @param functionDefinition the token introducing the expression that represents the body of the
@@ -4190,21 +4869,25 @@
}
return _expression.endToken;
}
+
/**
* Return the expression representing the body of the function.
* @return the expression representing the body of the function
*/
Expression get expression => _expression;
+
/**
* Return the token introducing the expression that represents the body of the function.
* @return the function definition token
*/
Token get functionDefinition => _functionDefinition;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the expression representing the body of the function to the given expression.
* @param expression the expression representing the body of the function
@@ -4212,6 +4895,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the token introducing the expression that represents the body of the function to the given
* token.
@@ -4220,6 +4904,7 @@
void set functionDefinition(Token functionDefinition2) {
this._functionDefinition = functionDefinition2;
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -4231,6 +4916,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code ExpressionStatement} wrap an expression as a statement.
* <pre>
@@ -4239,15 +4925,18 @@
* @coverage dart.engine.ast
*/
class ExpressionStatement extends Statement {
+
/**
* The expression that comprises the statement.
*/
Expression _expression;
+
/**
* The semicolon terminating the statement, or {@code null} if the expression is a function
* expression and isn't followed by a semicolon.
*/
Token _semicolon;
+
/**
* Initialize a newly created expression statement.
* @param expression the expression that comprises the statement
@@ -4257,6 +4946,7 @@
this._expression = becomeParentOf(expression);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created expression statement.
* @param expression the expression that comprises the statement
@@ -4271,17 +4961,20 @@
}
return _expression.endToken;
}
+
/**
* Return the expression that comprises the statement.
* @return the expression that comprises the statement
*/
Expression get expression => _expression;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
bool isSynthetic() => _expression.isSynthetic() && _semicolon.isSynthetic();
+
/**
* Set the expression that comprises the statement to the given expression.
* @param expression the expression that comprises the statement
@@ -4289,6 +4982,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -4300,6 +4994,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code ExtendsClause} represent the "extends" clause in a class
* declaration.
@@ -4309,14 +5004,17 @@
* @coverage dart.engine.ast
*/
class ExtendsClause extends ASTNode {
+
/**
* The token representing the 'extends' keyword.
*/
Token _keyword;
+
/**
* The name of the class that is being extended.
*/
TypeName _superclass;
+
/**
* Initialize a newly created extends clause.
* @param keyword the token representing the 'extends' keyword
@@ -4326,6 +5024,7 @@
this._keyword = keyword;
this._superclass = becomeParentOf(superclass);
}
+
/**
* Initialize a newly created extends clause.
* @param keyword the token representing the 'extends' keyword
@@ -4335,16 +5034,19 @@
accept(ASTVisitor visitor) => visitor.visitExtendsClause(this);
Token get beginToken => _keyword;
Token get endToken => _superclass.endToken;
+
/**
* Return the token representing the 'extends' keyword.
* @return the token representing the 'extends' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the name of the class that is being extended.
* @return the name of the class that is being extended
*/
TypeName get superclass => _superclass;
+
/**
* Set the token representing the 'extends' keyword to the given token.
* @param keyword the token representing the 'extends' keyword
@@ -4352,6 +5054,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the name of the class that is being extended to the given name.
* @param name the name of the class that is being extended
@@ -4363,6 +5066,7 @@
safelyVisitChild(_superclass, visitor);
}
}
+
/**
* Instances of the class {@code FieldDeclaration} represent the declaration of one or more fields
* of the same type.
@@ -4373,18 +5077,22 @@
* @coverage dart.engine.ast
*/
class FieldDeclaration extends ClassMember {
+
/**
* The token representing the 'static' keyword, or {@code null} if the fields are not static.
*/
Token _keyword;
+
/**
* The fields being declared.
*/
VariableDeclarationList _fieldList;
+
/**
* The semicolon terminating the declaration.
*/
Token _semicolon;
+
/**
* Initialize a newly created field declaration.
* @param comment the documentation comment associated with this field
@@ -4398,6 +5106,7 @@
this._fieldList = becomeParentOf(fieldList);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created field declaration.
* @param comment the documentation comment associated with this field
@@ -4410,29 +5119,40 @@
accept(ASTVisitor visitor) => visitor.visitFieldDeclaration(this);
Element get element => null;
Token get endToken => _semicolon;
+
/**
* Return the fields being declared.
* @return the fields being declared
*/
VariableDeclarationList get fields => _fieldList;
+
/**
* Return the token representing the 'static' keyword, or {@code null} if the fields are not
* static.
* @return the token representing the 'static' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the semicolon terminating the declaration.
* @return the semicolon terminating the declaration
*/
Token get semicolon => _semicolon;
+
/**
+ * Return {@code true} if the fields are static.
+ * @return {@code true} if the fields are declared to be static
+ */
+ bool isStatic() => _keyword != null;
+
+ /**
* Set the fields being declared to the given list of variables.
* @param fieldList the fields being declared
*/
void set fields(VariableDeclarationList fieldList) {
fieldList = becomeParentOf(fieldList);
}
+
/**
* Set the token representing the 'static' keyword to the given token.
* @param keyword the token representing the 'static' keyword
@@ -4440,6 +5160,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the semicolon terminating the declaration to the given token.
* @param semicolon the semicolon terminating the declaration
@@ -4458,6 +5179,7 @@
return _fieldList.beginToken;
}
}
+
/**
* Instances of the class {@code FieldFormalParameter} represent a field formal parameter.
* <pre>
@@ -4466,24 +5188,29 @@
* @coverage dart.engine.ast
*/
class FieldFormalParameter extends NormalFormalParameter {
+
/**
* The token representing either the 'final', 'const' or 'var' keyword, or {@code null} if no
* keyword was used.
*/
Token _keyword;
+
/**
* The name of the declared type of the parameter, or {@code null} if the parameter does not have
* a declared type.
*/
TypeName _type;
+
/**
* The token representing the 'this' keyword.
*/
Token _thisToken;
+
/**
* The token representing the period.
*/
Token _period;
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -4500,6 +5227,7 @@
this._thisToken = thisToken;
this._period = period;
}
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -4521,21 +5249,25 @@
return _thisToken;
}
Token get endToken => identifier.endToken;
+
/**
* Return the token representing either the 'final', 'const' or 'var' keyword.
* @return the token representing either the 'final', 'const' or 'var' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the token representing the period.
* @return the token representing the period
*/
Token get period => _period;
+
/**
* Return the token representing the 'this' keyword.
* @return the token representing the 'this' keyword
*/
Token get thisToken => _thisToken;
+
/**
* Return the name of the declared type of the parameter, or {@code null} if the parameter does
* not have a declared type.
@@ -4544,6 +5276,7 @@
TypeName get type => _type;
bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.CONST);
bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.FINAL);
+
/**
* Set the token representing either the 'final', 'const' or 'var' keyword to the given token.
* @param keyword the token representing either the 'final', 'const' or 'var' keyword
@@ -4551,6 +5284,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the token representing the period to the given token.
* @param period the token representing the period
@@ -4558,6 +5292,7 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
* Set the token representing the 'this' keyword to the given token.
* @param thisToken the token representing the 'this' keyword
@@ -4565,6 +5300,7 @@
void set thisToken(Token thisToken2) {
this._thisToken = thisToken2;
}
+
/**
* Set the name of the declared type of the parameter to the given type name.
* @param typeName the name of the declared type of the parameter
@@ -4578,6 +5314,7 @@
safelyVisitChild(identifier, visitor);
}
}
+
/**
* Instances of the class {@code ForEachStatement} represent a for-each statement.
* <pre>
@@ -4586,34 +5323,42 @@
* @coverage dart.engine.ast
*/
class ForEachStatement extends Statement {
+
/**
* The token representing the 'for' keyword.
*/
Token _forKeyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The declaration of the loop variable.
*/
DeclaredIdentifier _loopVariable;
+
/**
* The token representing the 'in' keyword.
*/
Token _inKeyword;
+
/**
* The expression evaluated to produce the iterator.
*/
Expression _iterator;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The body of the loop.
*/
Statement _body;
+
/**
* Initialize a newly created for-each statement.
* @param forKeyword the token representing the 'for' keyword
@@ -4632,6 +5377,7 @@
this._rightParenthesis = rightParenthesis;
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created for-each statement.
* @param forKeyword the token representing the 'for' keyword
@@ -4644,42 +5390,50 @@
ForEachStatement({Token forKeyword, Token leftParenthesis, DeclaredIdentifier loopVariable, Token inKeyword, Expression iterator, Token rightParenthesis, Statement body}) : this.full(forKeyword, leftParenthesis, loopVariable, inKeyword, iterator, rightParenthesis, body);
accept(ASTVisitor visitor) => visitor.visitForEachStatement(this);
Token get beginToken => _forKeyword;
+
/**
* Return the body of the loop.
* @return the body of the loop
*/
Statement get body => _body;
Token get endToken => _body.endToken;
+
/**
* Return the token representing the 'for' keyword.
* @return the token representing the 'for' keyword
*/
Token get forKeyword => _forKeyword;
+
/**
* Return the token representing the 'in' keyword.
* @return the token representing the 'in' keyword
*/
Token get inKeyword => _inKeyword;
+
/**
* Return the expression evaluated to produce the iterator.
* @return the expression evaluated to produce the iterator
*/
Expression get iterator => _iterator;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the declaration of the loop variable.
* @return the declaration of the loop variable
*/
DeclaredIdentifier get loopVariable => _loopVariable;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the body of the loop to the given block.
* @param body the body of the loop
@@ -4687,6 +5441,7 @@
void set body(Statement body2) {
this._body = becomeParentOf(body2);
}
+
/**
* Set the token representing the 'for' keyword to the given token.
* @param forKeyword the token representing the 'for' keyword
@@ -4694,6 +5449,7 @@
void set forKeyword(Token forKeyword2) {
this._forKeyword = forKeyword2;
}
+
/**
* Set the token representing the 'in' keyword to the given token.
* @param inKeyword the token representing the 'in' keyword
@@ -4701,6 +5457,7 @@
void set inKeyword(Token inKeyword2) {
this._inKeyword = inKeyword2;
}
+
/**
* Set the expression evaluated to produce the iterator to the given expression.
* @param expression the expression evaluated to produce the iterator
@@ -4708,6 +5465,7 @@
void set iterator(Expression expression) {
_iterator = becomeParentOf(expression);
}
+
/**
* Set the left parenthesis to the given token.
* @param leftParenthesis the left parenthesis
@@ -4715,6 +5473,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the declaration of the loop variable to the given variable.
* @param variable the declaration of the loop variable
@@ -4722,6 +5481,7 @@
void set loopVariable(DeclaredIdentifier variable) {
_loopVariable = becomeParentOf(variable);
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -4735,6 +5495,7 @@
safelyVisitChild(_body, visitor);
}
}
+
/**
* Instances of the class {@code ForStatement} represent a for statement.
* <pre>
@@ -4746,50 +5507,61 @@
* @coverage dart.engine.ast
*/
class ForStatement extends Statement {
+
/**
* The token representing the 'for' keyword.
*/
Token _forKeyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The declaration of the loop variables, or {@code null} if there are no variables. Note that a
* for statement cannot have both a variable list and an initialization expression, but can
* validly have neither.
*/
VariableDeclarationList _variableList;
+
/**
* The initialization expression, or {@code null} if there is no initialization expression. Note
* that a for statement cannot have both a variable list and an initialization expression, but can
* validly have neither.
*/
Expression _initialization;
+
/**
* The semicolon separating the initializer and the condition.
*/
Token _leftSeparator;
+
/**
* The condition used to determine when to terminate the loop.
*/
Expression _condition;
+
/**
* The semicolon separating the condition and the updater.
*/
Token _rightSeparator;
+
/**
* The list of expressions run after each execution of the loop body.
*/
NodeList<Expression> _updaters;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The body of the loop.
*/
Statement _body;
+
/**
* Initialize a newly created for statement.
* @param forKeyword the token representing the 'for' keyword
@@ -4816,6 +5588,7 @@
this._rightParenthesis = rightParenthesis;
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created for statement.
* @param forKeyword the token representing the 'for' keyword
@@ -4832,57 +5605,68 @@
ForStatement({Token forKeyword, Token leftParenthesis, VariableDeclarationList variableList, Expression initialization, Token leftSeparator, Expression condition, Token rightSeparator, List<Expression> updaters, Token rightParenthesis, Statement body}) : this.full(forKeyword, leftParenthesis, variableList, initialization, leftSeparator, condition, rightSeparator, updaters, rightParenthesis, body);
accept(ASTVisitor visitor) => visitor.visitForStatement(this);
Token get beginToken => _forKeyword;
+
/**
* Return the body of the loop.
* @return the body of the loop
*/
Statement get body => _body;
+
/**
* Return the condition used to determine when to terminate the loop.
* @return the condition used to determine when to terminate the loop
*/
Expression get condition => _condition;
Token get endToken => _body.endToken;
+
/**
* Return the token representing the 'for' keyword.
* @return the token representing the 'for' keyword
*/
Token get forKeyword => _forKeyword;
+
/**
* Return the initialization expression, or {@code null} if there is no initialization expression.
* @return the initialization expression
*/
Expression get initialization => _initialization;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the semicolon separating the initializer and the condition.
* @return the semicolon separating the initializer and the condition
*/
Token get leftSeparator => _leftSeparator;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Return the semicolon separating the condition and the updater.
* @return the semicolon separating the condition and the updater
*/
Token get rightSeparator => _rightSeparator;
+
/**
* Return the list of expressions run after each execution of the loop body.
* @return the list of expressions run after each execution of the loop body
*/
NodeList<Expression> get updaters => _updaters;
+
/**
* Return the declaration of the loop variables, or {@code null} if there are no variables.
* @return the declaration of the loop variables, or {@code null} if there are no variables
*/
VariableDeclarationList get variables => _variableList;
+
/**
* Set the body of the loop to the given statement.
* @param body the body of the loop
@@ -4890,6 +5674,7 @@
void set body(Statement body2) {
this._body = becomeParentOf(body2);
}
+
/**
* Set the condition used to determine when to terminate the loop to the given expression.
* @param expression the condition used to determine when to terminate the loop
@@ -4897,6 +5682,7 @@
void set condition(Expression expression) {
_condition = becomeParentOf(expression);
}
+
/**
* Set the token representing the 'for' keyword to the given token.
* @param forKeyword the token representing the 'for' keyword
@@ -4904,6 +5690,7 @@
void set forKeyword(Token forKeyword2) {
this._forKeyword = forKeyword2;
}
+
/**
* Set the initialization expression to the given expression.
* @param initialization the initialization expression
@@ -4911,6 +5698,7 @@
void set initialization(Expression initialization2) {
this._initialization = becomeParentOf(initialization2);
}
+
/**
* Set the left parenthesis to the given token.
* @param leftParenthesis the left parenthesis
@@ -4918,6 +5706,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the semicolon separating the initializer and the condition to the given token.
* @param leftSeparator the semicolon separating the initializer and the condition
@@ -4925,6 +5714,7 @@
void set leftSeparator(Token leftSeparator2) {
this._leftSeparator = leftSeparator2;
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -4932,6 +5722,7 @@
void set rightParenthesis(Token rightParenthesis2) {
this._rightParenthesis = rightParenthesis2;
}
+
/**
* Set the semicolon separating the condition and the updater to the given token.
* @param rightSeparator the semicolon separating the condition and the updater
@@ -4939,6 +5730,7 @@
void set rightSeparator(Token rightSeparator2) {
this._rightSeparator = rightSeparator2;
}
+
/**
* Set the declaration of the loop variables to the given parameter.
* @param variableList the declaration of the loop variables
@@ -4954,6 +5746,7 @@
safelyVisitChild(_body, visitor);
}
}
+
/**
* The abstract class {@code FormalParameter} defines the behavior of objects representing a
* parameter to a function.
@@ -4962,6 +5755,7 @@
* @coverage dart.engine.ast
*/
abstract class FormalParameter extends ASTNode {
+
/**
* Return the element representing this parameter, or {@code null} if this parameter has not been
* resolved.
@@ -4974,17 +5768,20 @@
}
return identifier2.element as ParameterElement;
}
+
/**
* Return the name of the parameter being declared.
* @return the name of the parameter being declared
*/
SimpleIdentifier get identifier;
+
/**
* Return the kind of this parameter.
* @return the kind of this parameter
*/
ParameterKind get kind;
}
+
/**
* Instances of the class {@code FormalParameterList} represent the formal parameter list of a
* method declaration, function declaration, or function type alias.
@@ -5010,26 +5807,32 @@
* @coverage dart.engine.ast
*/
class FormalParameterList extends ASTNode {
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The parameters associated with the method.
*/
NodeList<FormalParameter> _parameters;
+
/**
* The left square bracket ('\[') or left curly brace ('{') introducing the optional parameters.
*/
Token _leftDelimiter;
+
/**
* The right square bracket ('\]') or right curly brace ('}') introducing the optional parameters.
*/
Token _rightDelimiter;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* Initialize a newly created parameter list.
* @param leftParenthesis the left parenthesis
@@ -5046,6 +5849,7 @@
this._rightDelimiter = rightDelimiter;
this._rightParenthesis = rightParenthesis;
}
+
/**
* Initialize a newly created parameter list.
* @param leftParenthesis the left parenthesis
@@ -5057,6 +5861,7 @@
FormalParameterList({Token leftParenthesis, List<FormalParameter> parameters, Token leftDelimiter, Token rightDelimiter, Token rightParenthesis}) : this.full(leftParenthesis, parameters, leftDelimiter, rightDelimiter, rightParenthesis);
accept(ASTVisitor visitor) => visitor.visitFormalParameterList(this);
Token get beginToken => _leftParenthesis;
+
/**
* Return an array containing the elements representing the parameters in this list. The array
* will contain {@code null}s if the parameters in this list have not been resolved.
@@ -5071,6 +5876,7 @@
return types;
}
Token get endToken => _rightParenthesis;
+
/**
* Return the left square bracket ('\[') or left curly brace ('{') introducing the optional
* parameters.
@@ -5078,16 +5884,19 @@
* parameters
*/
Token get leftDelimiter => _leftDelimiter;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the parameters associated with the method.
* @return the parameters associated with the method
*/
NodeList<FormalParameter> get parameters => _parameters;
+
/**
* Return the right square bracket ('\]') or right curly brace ('}') introducing the optional
* parameters.
@@ -5095,11 +5904,13 @@
* parameters
*/
Token get rightDelimiter => _rightDelimiter;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the left square bracket ('\[') or left curly brace ('{') introducing the optional parameters
* to the given token.
@@ -5108,6 +5919,7 @@
void set leftDelimiter(Token bracket) {
_leftDelimiter = bracket;
}
+
/**
* Set the left parenthesis to the given token.
* @param parenthesis the left parenthesis
@@ -5115,6 +5927,7 @@
void set leftParenthesis(Token parenthesis) {
_leftParenthesis = parenthesis;
}
+
/**
* Set the right square bracket ('\]') or right curly brace ('}') introducing the optional
* parameters to the given token.
@@ -5123,6 +5936,7 @@
void set rightDelimiter(Token bracket) {
_rightDelimiter = bracket;
}
+
/**
* Set the right parenthesis to the given token.
* @param parenthesis the right parenthesis
@@ -5134,6 +5948,7 @@
_parameters.accept(visitor);
}
}
+
/**
* The abstract class {@code FunctionBody} defines the behavior common to objects representing the
* body of a function or method.
@@ -5143,6 +5958,7 @@
*/
abstract class FunctionBody extends ASTNode {
}
+
/**
* Instances of the class {@code FunctionDeclaration} wrap a {@link FunctionExpression function
* expression} as a top-level declaration.
@@ -5153,28 +5969,34 @@
* @coverage dart.engine.ast
*/
class FunctionDeclaration extends CompilationUnitMember {
+
/**
* The token representing the 'external' keyword, or {@code null} if this is not an external
* function.
*/
Token _externalKeyword;
+
/**
* The return type of the function, or {@code null} if no return type was declared.
*/
TypeName _returnType;
+
/**
* The token representing the 'get' or 'set' keyword, or {@code null} if this is a function
* declaration rather than a property declaration.
*/
Token _propertyKeyword;
+
/**
* The name of the function, or {@code null} if the function is not named.
*/
SimpleIdentifier _name;
+
/**
* The function expression being wrapped.
*/
FunctionExpression _functionExpression;
+
/**
* Initialize a newly created function declaration.
* @param comment the documentation comment associated with this function
@@ -5192,6 +6014,7 @@
this._name = becomeParentOf(name);
this._functionExpression = becomeParentOf(functionExpression);
}
+
/**
* Initialize a newly created function declaration.
* @param comment the documentation comment associated with this function
@@ -5206,43 +6029,51 @@
accept(ASTVisitor visitor) => visitor.visitFunctionDeclaration(this);
ExecutableElement get element => _name != null ? (_name.element as ExecutableElement) : null;
Token get endToken => _functionExpression.endToken;
+
/**
* Return the token representing the 'external' keyword, or {@code null} if this is not an
* external function.
* @return the token representing the 'external' keyword
*/
Token get externalKeyword => _externalKeyword;
+
/**
* Return the function expression being wrapped.
* @return the function expression being wrapped
*/
FunctionExpression get functionExpression => _functionExpression;
+
/**
* Return the name of the function, or {@code null} if the function is not named.
* @return the name of the function
*/
SimpleIdentifier get name => _name;
+
/**
* Return the token representing the 'get' or 'set' keyword, or {@code null} if this is a function
* declaration rather than a property declaration.
* @return the token representing the 'get' or 'set' keyword
*/
Token get propertyKeyword => _propertyKeyword;
+
/**
* Return the return type of the function, or {@code null} if no return type was declared.
* @return the return type of the function
*/
TypeName get returnType => _returnType;
+
/**
* Return {@code true} if this function declares a getter.
* @return {@code true} if this function declares a getter
*/
bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as KeywordToken)).keyword, Keyword.GET);
+
/**
* Return {@code true} if this function declares a setter.
* @return {@code true} if this function declares a setter
*/
bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as KeywordToken)).keyword, Keyword.SET);
+
/**
* Set the token representing the 'external' keyword to the given token.
* @param externalKeyword the token representing the 'external' keyword
@@ -5250,6 +6081,7 @@
void set externalKeyword(Token externalKeyword2) {
this._externalKeyword = externalKeyword2;
}
+
/**
* Set the function expression being wrapped to the given function expression.
* @param functionExpression the function expression being wrapped
@@ -5257,6 +6089,7 @@
void set functionExpression(FunctionExpression functionExpression2) {
functionExpression2 = becomeParentOf(functionExpression2);
}
+
/**
* Set the name of the function to the given identifier.
* @param identifier the name of the function
@@ -5264,6 +6097,7 @@
void set name(SimpleIdentifier identifier) {
_name = becomeParentOf(identifier);
}
+
/**
* Set the token representing the 'get' or 'set' keyword to the given token.
* @param propertyKeyword the token representing the 'get' or 'set' keyword
@@ -5271,6 +6105,7 @@
void set propertyKeyword(Token propertyKeyword2) {
this._propertyKeyword = propertyKeyword2;
}
+
/**
* Set the return type of the function to the given name.
* @param name the return type of the function
@@ -5298,15 +6133,18 @@
return _functionExpression.beginToken;
}
}
+
/**
* Instances of the class {@code FunctionDeclarationStatement} wrap a {@link FunctionDeclarationfunction declaration} as a statement.
* @coverage dart.engine.ast
*/
class FunctionDeclarationStatement extends Statement {
+
/**
* The function declaration being wrapped.
*/
FunctionDeclaration _functionDeclaration;
+
/**
* Initialize a newly created function declaration statement.
* @param functionDeclaration the the function declaration being wrapped
@@ -5314,6 +6152,7 @@
FunctionDeclarationStatement.full(FunctionDeclaration functionDeclaration) {
this._functionDeclaration = becomeParentOf(functionDeclaration);
}
+
/**
* Initialize a newly created function declaration statement.
* @param functionDeclaration the the function declaration being wrapped
@@ -5322,11 +6161,13 @@
accept(ASTVisitor visitor) => visitor.visitFunctionDeclarationStatement(this);
Token get beginToken => _functionDeclaration.beginToken;
Token get endToken => _functionDeclaration.endToken;
+
/**
* Return the function declaration being wrapped.
* @return the function declaration being wrapped
*/
FunctionDeclaration get functionDeclaration => _functionDeclaration;
+
/**
* Set the function declaration being wrapped to the given function declaration.
* @param functionDeclaration the function declaration being wrapped
@@ -5338,6 +6179,7 @@
safelyVisitChild(_functionDeclaration, visitor);
}
}
+
/**
* Instances of the class {@code FunctionExpression} represent a function expression.
* <pre>
@@ -5345,19 +6187,23 @@
* @coverage dart.engine.ast
*/
class FunctionExpression extends Expression {
+
/**
* The parameters associated with the function.
*/
FormalParameterList _parameters;
+
/**
* The body of the function, or {@code null} if this is an external function.
*/
FunctionBody _body;
+
/**
* The element associated with the function, or {@code null} if the AST structure has not been
* resolved.
*/
ExecutableElement _element;
+
/**
* Initialize a newly created function declaration.
* @param parameters the parameters associated with the function
@@ -5367,6 +6213,7 @@
this._parameters = becomeParentOf(parameters);
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created function declaration.
* @param parameters the parameters associated with the function
@@ -5382,11 +6229,13 @@
}
throw new IllegalStateException("Non-external functions must have a body");
}
+
/**
* Return the body of the function, or {@code null} if this is an external function.
* @return the body of the function
*/
FunctionBody get body => _body;
+
/**
* Return the element associated with this function, or {@code null} if the AST structure has not
* been resolved.
@@ -5401,11 +6250,13 @@
}
throw new IllegalStateException("Non-external functions must have a body");
}
+
/**
* Return the parameters associated with the function.
* @return the parameters associated with the function
*/
FormalParameterList get parameters => _parameters;
+
/**
* Set the body of the function to the given function body.
* @param functionBody the body of the function
@@ -5413,6 +6264,7 @@
void set body(FunctionBody functionBody) {
_body = becomeParentOf(functionBody);
}
+
/**
* Set the element associated with this function to the given element.
* @param element the element associated with this function
@@ -5420,6 +6272,7 @@
void set element(ExecutableElement element2) {
this._element = element2;
}
+
/**
* Set the parameters associated with the function to the given list of parameters.
* @param parameters the parameters associated with the function
@@ -5432,6 +6285,7 @@
safelyVisitChild(_body, visitor);
}
}
+
/**
* Instances of the class {@code FunctionExpressionInvocation} represent the invocation of a
* function resulting from evaluating an expression. Invocations of methods and other forms of
@@ -5442,20 +6296,28 @@
* @coverage dart.engine.ast
*/
class FunctionExpressionInvocation extends Expression {
+
/**
* The expression producing the function being invoked.
*/
Expression _function;
+
/**
* The list of arguments to the function.
*/
ArgumentList _argumentList;
+
/**
- * The element associated with the function being invoked, or {@code null} if the AST structure
- * has not been resolved or the function could not be resolved.
+ * The element associated with the function being invoked based on static type information, or{@code null} if the AST structure has not been resolved or the function could not be resolved.
*/
- ExecutableElement _element;
+ ExecutableElement _staticElement;
+
/**
+ * The element associated with the function being invoked based on propagated type information, or{@code null} if the AST structure has not been resolved or the function could not be resolved.
+ */
+ ExecutableElement _propagatedElement;
+
+ /**
* Initialize a newly created function expression invocation.
* @param function the expression producing the function being invoked
* @param argumentList the list of arguments to the method
@@ -5464,6 +6326,7 @@
this._function = becomeParentOf(function);
this._argumentList = becomeParentOf(argumentList);
}
+
/**
* Initialize a newly created function expression invocation.
* @param function the expression producing the function being invoked
@@ -5471,39 +6334,56 @@
*/
FunctionExpressionInvocation({Expression function, ArgumentList argumentList}) : this.full(function, argumentList);
accept(ASTVisitor visitor) => visitor.visitFunctionExpressionInvocation(this);
+
/**
* Return the list of arguments to the method.
* @return the list of arguments to the method
*/
ArgumentList get argumentList => _argumentList;
Token get beginToken => _function.beginToken;
+
/**
- * Return the element associated with the function being invoked, or {@code null} if the AST
- * structure has not been resolved or the function could not be resolved. One common example of
- * the latter case is an expression whose value can change over time.
+ * Return the element associated with the function being invoked based on propagated type
+ * information, or {@code null} if the AST structure has not been resolved or the function could
+ * not be resolved. One common example of the latter case is an expression whose value can change
+ * over time.
* @return the element associated with the function being invoked
*/
- ExecutableElement get element => _element;
+ ExecutableElement get element => _propagatedElement;
Token get endToken => _argumentList.endToken;
+
/**
* Return the expression producing the function being invoked.
* @return the expression producing the function being invoked
*/
Expression get function => _function;
+
/**
+ * Return the element associated with the function being invoked based on static type information,
+ * or {@code null} if the AST structure has not been resolved or the function could not be
+ * resolved. One common example of the latter case is an expression whose value can change over
+ * time.
+ * @return the element associated with the function
+ */
+ ExecutableElement get staticElement => _staticElement;
+
+ /**
* Set the list of arguments to the method to the given list.
* @param argumentList the list of arguments to the method
*/
void set argumentList(ArgumentList argumentList2) {
this._argumentList = becomeParentOf(argumentList2);
}
+
/**
- * Set the element associated with the function being invoked to the given element.
- * @param element the element associated with the function being invoked
+ * Set the element associated with the function being invoked based on propagated type information
+ * to the given element.
+ * @param element the element to be associated with the function being invoked
*/
void set element(ExecutableElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the expression producing the function being invoked to the given expression.
* @param function the expression producing the function being invoked
@@ -5511,11 +6391,21 @@
void set function(Expression function2) {
function2 = becomeParentOf(function2);
}
+
+ /**
+ * Set the element associated with the function being invoked based on static type information to
+ * the given element.
+ * @param element the element to be associated with the function
+ */
+ void set staticElement(ExecutableElement element) {
+ this._staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_function, visitor);
safelyVisitChild(_argumentList, visitor);
}
}
+
/**
* Instances of the class {@code FunctionTypeAlias} represent a function type alias.
* <pre>
@@ -5525,24 +6415,29 @@
* @coverage dart.engine.ast
*/
class FunctionTypeAlias extends TypeAlias {
+
/**
* The name of the return type of the function type being defined, or {@code null} if no return
* type was given.
*/
TypeName _returnType;
+
/**
* The name of the function type being declared.
*/
SimpleIdentifier _name;
+
/**
* The type parameters for the function type, or {@code null} if the function type does not have
* any type parameters.
*/
TypeParameterList _typeParameters;
+
/**
* The parameters associated with the function type.
*/
FormalParameterList _parameters;
+
/**
* Initialize a newly created function type alias.
* @param comment the documentation comment associated with this type alias
@@ -5560,6 +6455,7 @@
this._typeParameters = becomeParentOf(typeParameters);
this._parameters = becomeParentOf(parameters);
}
+
/**
* Initialize a newly created function type alias.
* @param comment the documentation comment associated with this type alias
@@ -5574,28 +6470,33 @@
FunctionTypeAlias({Comment comment, List<Annotation> metadata, Token keyword, TypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters, FormalParameterList parameters, Token semicolon}) : this.full(comment, metadata, keyword, returnType, name, typeParameters, parameters, semicolon);
accept(ASTVisitor visitor) => visitor.visitFunctionTypeAlias(this);
FunctionTypeAliasElement get element => _name != null ? (_name.element as FunctionTypeAliasElement) : null;
+
/**
* Return the name of the function type being declared.
* @return the name of the function type being declared
*/
SimpleIdentifier get name => _name;
+
/**
* Return the parameters associated with the function type.
* @return the parameters associated with the function type
*/
FormalParameterList get parameters => _parameters;
+
/**
* Return the name of the return type of the function type being defined, or {@code null} if no
* return type was given.
* @return the name of the return type of the function type being defined
*/
TypeName get returnType => _returnType;
+
/**
* Return the type parameters for the function type, or {@code null} if the function type does not
* have any type parameters.
* @return the type parameters for the function type
*/
TypeParameterList get typeParameters => _typeParameters;
+
/**
* Set the name of the function type being declared to the given identifier.
* @param name the name of the function type being declared
@@ -5603,6 +6504,7 @@
void set name(SimpleIdentifier name2) {
this._name = becomeParentOf(name2);
}
+
/**
* Set the parameters associated with the function type to the given list of parameters.
* @param parameters the parameters associated with the function type
@@ -5610,6 +6512,7 @@
void set parameters(FormalParameterList parameters2) {
this._parameters = becomeParentOf(parameters2);
}
+
/**
* Set the name of the return type of the function type being defined to the given type name.
* @param typeName the name of the return type of the function type being defined
@@ -5617,6 +6520,7 @@
void set returnType(TypeName typeName) {
_returnType = becomeParentOf(typeName);
}
+
/**
* Set the type parameters for the function type to the given list of parameters.
* @param typeParameters the type parameters for the function type
@@ -5632,6 +6536,7 @@
safelyVisitChild(_parameters, visitor);
}
}
+
/**
* Instances of the class {@code FunctionTypedFormalParameter} represent a function-typed formal
* parameter.
@@ -5640,14 +6545,17 @@
* @coverage dart.engine.ast
*/
class FunctionTypedFormalParameter extends NormalFormalParameter {
+
/**
* The return type of the function, or {@code null} if the function does not have a return type.
*/
TypeName _returnType;
+
/**
* The parameters of the function-typed parameter.
*/
FormalParameterList _parameters;
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -5661,6 +6569,7 @@
this._returnType = becomeParentOf(returnType);
this._parameters = becomeParentOf(parameters);
}
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -5679,11 +6588,13 @@
return identifier.beginToken;
}
Token get endToken => _parameters.endToken;
+
/**
* Return the parameters of the function-typed parameter.
* @return the parameters of the function-typed parameter
*/
FormalParameterList get parameters => _parameters;
+
/**
* Return the return type of the function, or {@code null} if the function does not have a return
* type.
@@ -5692,6 +6603,7 @@
TypeName get returnType => _returnType;
bool isConst() => false;
bool isFinal() => false;
+
/**
* Set the parameters of the function-typed parameter to the given parameters.
* @param parameters the parameters of the function-typed parameter
@@ -5699,6 +6611,7 @@
void set parameters(FormalParameterList parameters2) {
this._parameters = becomeParentOf(parameters2);
}
+
/**
* Set the return type of the function to the given type.
* @param returnType the return type of the function
@@ -5713,6 +6626,7 @@
safelyVisitChild(_parameters, visitor);
}
}
+
/**
* Instances of the class {@code HideCombinator} represent a combinator that restricts the names
* being imported to those that are not in a given list.
@@ -5723,10 +6637,12 @@
* @coverage dart.engine.ast
*/
class HideCombinator extends Combinator {
+
/**
* The list of names from the library that are hidden by this combinator.
*/
NodeList<SimpleIdentifier> _hiddenNames;
+
/**
* Initialize a newly created import show combinator.
* @param keyword the comma introducing the combinator
@@ -5736,6 +6652,7 @@
this._hiddenNames = new NodeList<SimpleIdentifier>(this);
this._hiddenNames.addAll(hiddenNames);
}
+
/**
* Initialize a newly created import show combinator.
* @param keyword the comma introducing the combinator
@@ -5744,6 +6661,7 @@
HideCombinator({Token keyword, List<SimpleIdentifier> hiddenNames}) : this.full(keyword, hiddenNames);
accept(ASTVisitor visitor) => visitor.visitHideCombinator(this);
Token get endToken => _hiddenNames.endToken;
+
/**
* Return the list of names from the library that are hidden by this combinator.
* @return the list of names from the library that are hidden by this combinator
@@ -5753,6 +6671,7 @@
_hiddenNames.accept(visitor);
}
}
+
/**
* The abstract class {@code Identifier} defines the behavior common to nodes that represent an
* identifier.
@@ -5761,6 +6680,7 @@
* @coverage dart.engine.ast
*/
abstract class Identifier extends Expression {
+
/**
* Return {@code true} if the given name is visible only within the library in which it is
* declared.
@@ -5768,20 +6688,31 @@
* @return {@code true} if the given name is private
*/
static bool isPrivateName(String name) => name.startsWith("_");
+
/**
- * Return the element associated with this identifier, or {@code null} if the AST structure has
- * not been resolved or if this identifier could not be resolved. One example of the latter case
- * is an identifier that is not defined within the scope in which it appears.
+ * Return the element associated with this identifier based on propagated type information, or{@code null} if the AST structure has not been resolved or if this identifier could not be
+ * resolved. One example of the latter case is an identifier that is not defined within the scope
+ * in which it appears.
* @return the element associated with this identifier
*/
Element get element;
+
/**
* Return the lexical representation of the identifier.
* @return the lexical representation of the identifier
*/
String get name;
+
+ /**
+ * Return the element associated with this identifier based on static type information, or{@code null} if the AST structure has not been resolved or if this identifier could not be
+ * resolved. One example of the latter case is an identifier that is not defined within the scope
+ * in which it appears
+ * @return the element associated with the operator
+ */
+ Element get staticElement;
bool isAssignable() => true;
}
+
/**
* Instances of the class {@code IfStatement} represent an if statement.
* <pre>
@@ -5791,35 +6722,43 @@
* @coverage dart.engine.ast
*/
class IfStatement extends Statement {
+
/**
* The token representing the 'if' keyword.
*/
Token _ifKeyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The condition used to determine which of the statements is executed next.
*/
Expression _condition;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The statement that is executed if the condition evaluates to {@code true}.
*/
Statement _thenStatement;
+
/**
* The token representing the 'else' keyword.
*/
Token _elseKeyword;
+
/**
* The statement that is executed if the condition evaluates to {@code false}, or {@code null} if
* there is no else statement.
*/
Statement _elseStatement;
+
/**
* Initialize a newly created if statement.
* @param ifKeyword the token representing the 'if' keyword
@@ -5839,6 +6778,7 @@
this._elseKeyword = elseKeyword;
this._elseStatement = becomeParentOf(elseStatement);
}
+
/**
* Initialize a newly created if statement.
* @param ifKeyword the token representing the 'if' keyword
@@ -5852,16 +6792,19 @@
IfStatement({Token ifKeyword, Token leftParenthesis, Expression condition, Token rightParenthesis, Statement thenStatement, Token elseKeyword, Statement elseStatement}) : this.full(ifKeyword, leftParenthesis, condition, rightParenthesis, thenStatement, elseKeyword, elseStatement);
accept(ASTVisitor visitor) => visitor.visitIfStatement(this);
Token get beginToken => _ifKeyword;
+
/**
* Return the condition used to determine which of the statements is executed next.
* @return the condition used to determine which statement is executed next
*/
Expression get condition => _condition;
+
/**
* Return the token representing the 'else' keyword.
* @return the token representing the 'else' keyword
*/
Token get elseKeyword => _elseKeyword;
+
/**
* Return the statement that is executed if the condition evaluates to {@code false}, or{@code null} if there is no else statement.
* @return the statement that is executed if the condition evaluates to {@code false}
@@ -5873,26 +6816,31 @@
}
return _thenStatement.endToken;
}
+
/**
* Return the token representing the 'if' keyword.
* @return the token representing the 'if' keyword
*/
Token get ifKeyword => _ifKeyword;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Return the statement that is executed if the condition evaluates to {@code true}.
* @return the statement that is executed if the condition evaluates to {@code true}
*/
Statement get thenStatement => _thenStatement;
+
/**
* Set the condition used to determine which of the statements is executed next to the given
* expression.
@@ -5901,6 +6849,7 @@
void set condition(Expression expression) {
_condition = becomeParentOf(expression);
}
+
/**
* Set the token representing the 'else' keyword to the given token.
* @param elseKeyword the token representing the 'else' keyword
@@ -5908,6 +6857,7 @@
void set elseKeyword(Token elseKeyword2) {
this._elseKeyword = elseKeyword2;
}
+
/**
* Set the statement that is executed if the condition evaluates to {@code false} to the given
* statement.
@@ -5916,6 +6866,7 @@
void set elseStatement(Statement statement) {
_elseStatement = becomeParentOf(statement);
}
+
/**
* Set the token representing the 'if' keyword to the given token.
* @param ifKeyword the token representing the 'if' keyword
@@ -5923,6 +6874,7 @@
void set ifKeyword(Token ifKeyword2) {
this._ifKeyword = ifKeyword2;
}
+
/**
* Set the left parenthesis to the given token.
* @param leftParenthesis the left parenthesis
@@ -5930,6 +6882,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -5937,6 +6890,7 @@
void set rightParenthesis(Token rightParenthesis2) {
this._rightParenthesis = rightParenthesis2;
}
+
/**
* Set the statement that is executed if the condition evaluates to {@code true} to the given
* statement.
@@ -5951,6 +6905,7 @@
safelyVisitChild(_elseStatement, visitor);
}
}
+
/**
* Instances of the class {@code ImplementsClause} represent the "implements" clause in an class
* declaration.
@@ -5961,14 +6916,17 @@
* @coverage dart.engine.ast
*/
class ImplementsClause extends ASTNode {
+
/**
* The token representing the 'implements' keyword.
*/
Token _keyword;
+
/**
* The interfaces that are being implemented.
*/
NodeList<TypeName> _interfaces;
+
/**
* Initialize a newly created extends clause.
* @param keyword the token representing the 'implements' keyword
@@ -5979,6 +6937,7 @@
this._keyword = keyword;
this._interfaces.addAll(interfaces);
}
+
/**
* Initialize a newly created extends clause.
* @param keyword the token representing the 'implements' keyword
@@ -5988,16 +6947,19 @@
accept(ASTVisitor visitor) => visitor.visitImplementsClause(this);
Token get beginToken => _keyword;
Token get endToken => _interfaces.endToken;
+
/**
* Return the list of the interfaces that are being implemented.
* @return the list of the interfaces that are being implemented
*/
NodeList<TypeName> get interfaces => _interfaces;
+
/**
* Return the token representing the 'implements' keyword.
* @return the token representing the 'implements' keyword
*/
Token get keyword => _keyword;
+
/**
* Set the token representing the 'implements' keyword to the given token.
* @param keyword the token representing the 'implements' keyword
@@ -6009,6 +6971,7 @@
_interfaces.accept(visitor);
}
}
+
/**
* Instances of the class {@code ImportDirective} represent an import directive.
* <pre>
@@ -6017,15 +6980,18 @@
* @coverage dart.engine.ast
*/
class ImportDirective extends NamespaceDirective {
+
/**
* The token representing the 'as' token, or {@code null} if the imported names are not prefixed.
*/
Token _asToken;
+
/**
* The prefix to be used with the imported names, or {@code null} if the imported names are not
* prefixed.
*/
SimpleIdentifier _prefix;
+
/**
* Initialize a newly created import directive.
* @param comment the documentation comment associated with this directive
@@ -6041,6 +7007,7 @@
this._asToken = asToken;
this._prefix = becomeParentOf(prefix);
}
+
/**
* Initialize a newly created import directive.
* @param comment the documentation comment associated with this directive
@@ -6054,18 +7021,28 @@
*/
ImportDirective({Comment comment, List<Annotation> metadata, Token keyword, StringLiteral libraryUri, Token asToken, SimpleIdentifier prefix, List<Combinator> combinators, Token semicolon}) : this.full(comment, metadata, keyword, libraryUri, asToken, prefix, combinators, semicolon);
accept(ASTVisitor visitor) => visitor.visitImportDirective(this);
+
/**
* Return the token representing the 'as' token, or {@code null} if the imported names are not
* prefixed.
* @return the token representing the 'as' token
*/
Token get asToken => _asToken;
+
/**
* Return the prefix to be used with the imported names, or {@code null} if the imported names are
* not prefixed.
* @return the prefix to be used with the imported names
*/
SimpleIdentifier get prefix => _prefix;
+ LibraryElement get uriElement {
+ Element element2 = element;
+ if (element2 is ImportElement) {
+ return ((element2 as ImportElement)).importedLibrary;
+ }
+ return null;
+ }
+
/**
* Set the token representing the 'as' token to the given token.
* @param asToken the token representing the 'as' token
@@ -6073,6 +7050,7 @@
void set asToken(Token asToken2) {
this._asToken = asToken2;
}
+
/**
* Set the prefix to be used with the imported names to the given identifier.
* @param prefix the prefix to be used with the imported names
@@ -6086,6 +7064,7 @@
combinators.accept(visitor);
}
}
+
/**
* Instances of the class {@code IndexExpression} represent an index expression.
* <pre>
@@ -6094,34 +7073,47 @@
* @coverage dart.engine.ast
*/
class IndexExpression extends Expression {
+
/**
* The expression used to compute the object being indexed, or {@code null} if this index
* expression is part of a cascade expression.
*/
Expression _target;
+
/**
* The period ("..") before a cascaded index expression, or {@code null} if this index expression
* is not part of a cascade expression.
*/
Token _period;
+
/**
* The left square bracket.
*/
Token _leftBracket;
+
/**
* The expression used to compute the index.
*/
Expression _index;
+
/**
* The right square bracket.
*/
Token _rightBracket;
+
/**
- * The element associated with the operator, or {@code null} if the AST structure has not been
- * resolved or if the operator could not be resolved.
+ * The element associated with the operator based on the static type of the target, or{@code null} if the AST structure has not been resolved or if the operator could not be
+ * resolved.
*/
- MethodElement _element;
+ MethodElement _staticElement;
+
/**
+ * The element associated with the operator based on the propagated type of the target, or{@code null} if the AST structure has not been resolved or if the operator could not be
+ * resolved.
+ */
+ MethodElement _propagatedElement;
+
+ /**
* Initialize a newly created index expression.
* @param target the expression used to compute the object being indexed
* @param leftBracket the left square bracket
@@ -6131,6 +7123,7 @@
IndexExpression.forTarget_full(Expression target2, Token leftBracket2, Expression index2, Token rightBracket2) {
_jtd_constructor_58_impl(target2, leftBracket2, index2, rightBracket2);
}
+
/**
* Initialize a newly created index expression.
* @param target the expression used to compute the object being indexed
@@ -6145,6 +7138,7 @@
this._index = becomeParentOf(index2);
this._rightBracket = rightBracket2;
}
+
/**
* Initialize a newly created index expression.
* @param period the period ("..") before a cascaded index expression
@@ -6155,6 +7149,7 @@
IndexExpression.forCascade_full(Token period2, Token leftBracket2, Expression index2, Token rightBracket2) {
_jtd_constructor_59_impl(period2, leftBracket2, index2, rightBracket2);
}
+
/**
* Initialize a newly created index expression.
* @param period the period ("..") before a cascaded index expression
@@ -6170,6 +7165,7 @@
this._rightBracket = rightBracket2;
}
accept(ASTVisitor visitor) => visitor.visitIndexExpression(this);
+
/**
* Return the expression used to compute the object being indexed, or {@code null} if this index
* expression is part of a cascade expression.
@@ -6183,30 +7179,35 @@
}
return _period;
}
+
/**
- * Return the element associated with the operator, or {@code null} if the AST structure has not
- * been resolved or if the operator could not be resolved. One example of the latter case is an
- * operator that is not defined for the type of the left-hand operand.
+ * Return the element associated with the operator based on the propagated type of the target, or{@code null} if the AST structure has not been resolved or if the operator could not be
+ * resolved. One example of the latter case is an operator that is not defined for the type of the
+ * target.
* @return the element associated with this operator
*/
- MethodElement get element => _element;
+ MethodElement get element => _propagatedElement;
Token get endToken => _rightBracket;
+
/**
* Return the expression used to compute the index.
* @return the expression used to compute the index
*/
Expression get index => _index;
+
/**
* Return the left square bracket.
* @return the left square bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the period ("..") before a cascaded index expression, or {@code null} if this index
* expression is not part of a cascade expression.
* @return the period ("..") before a cascaded index expression
*/
Token get period => _period;
+
/**
* Return the expression used to compute the object being indexed. If this index expression is not
* part of a cascade expression, then this is the same as {@link #getArray()}. If this index
@@ -6228,12 +7229,22 @@
}
return _target;
}
+
/**
* Return the right square bracket.
* @return the right square bracket
*/
Token get rightBracket => _rightBracket;
+
/**
+ * Return the element associated with the operator based on the static type of the target, or{@code null} if the AST structure has not been resolved or if the operator could not be
+ * resolved. One example of the latter case is an operator that is not defined for the type of the
+ * target.
+ * @return the element associated with the operator
+ */
+ MethodElement get staticElement => _staticElement;
+
+ /**
* Return {@code true} if this expression is computing a right-hand value.
* <p>
* Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not opposites, nor are
@@ -6250,6 +7261,7 @@
}
return true;
}
+
/**
* Return {@code true} if this expression is computing a left-hand value.
* <p>
@@ -6270,12 +7282,14 @@
return false;
}
bool isAssignable() => true;
+
/**
* Return {@code true} if this expression is cascaded. If it is, then the target of this
* expression is not stored locally but is stored in the nearest ancestor that is a{@link CascadeExpression}.
* @return {@code true} if this expression is cascaded
*/
bool isCascaded() => _period != null;
+
/**
* Set the expression used to compute the object being indexed to the given expression.
* @param expression the expression used to compute the object being indexed
@@ -6283,13 +7297,16 @@
void set array(Expression expression) {
_target = becomeParentOf(expression);
}
+
/**
- * Set the element associated with the operator to the given element.
- * @param element the element associated with this operator
+ * Set the element associated with the operator based on the propagated type of the target to the
+ * given element.
+ * @param element the element to be associated with this operator
*/
void set element(MethodElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the expression used to compute the index to the given expression.
* @param expression the expression used to compute the index
@@ -6297,6 +7314,7 @@
void set index(Expression expression) {
_index = becomeParentOf(expression);
}
+
/**
* Set the left square bracket to the given token.
* @param bracket the left square bracket
@@ -6304,6 +7322,7 @@
void set leftBracket(Token bracket) {
_leftBracket = bracket;
}
+
/**
* Set the period ("..") before a cascaded index expression to the given token.
* @param period the period ("..") before a cascaded index expression
@@ -6311,6 +7330,7 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
* Set the right square bracket to the given token.
* @param bracket the right square bracket
@@ -6318,11 +7338,40 @@
void set rightBracket(Token bracket) {
_rightBracket = bracket;
}
+
+ /**
+ * Set the element associated with the operator based on the static type of the target to the
+ * given element.
+ * @param element the static element to be associated with the operator
+ */
+ void set staticElement(MethodElement element) {
+ _staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_target, visitor);
safelyVisitChild(_index, visitor);
}
+
+ /**
+ * Return the parameter element representing the parameter to which the value of the index
+ * expression will be bound. May be {@code null}.
+ * <p>
+ * This method is only intended to be used by {@link Expression#getParameterElement()}.
+ * @return the parameter element representing the parameter to which the value of the index
+ * expression will be bound
+ */
+ ParameterElement get parameterElementForIndex {
+ if (_propagatedElement == null) {
+ return null;
+ }
+ List<ParameterElement> parameters2 = _propagatedElement.parameters;
+ if (parameters2.length < 1) {
+ return null;
+ }
+ return parameters2[0];
+ }
}
+
/**
* Instances of the class {@code InstanceCreationExpression} represent an instance creation
* expression.
@@ -6332,24 +7381,34 @@
* @coverage dart.engine.ast
*/
class InstanceCreationExpression extends Expression {
+
/**
* The keyword used to indicate how an object should be created.
*/
Token _keyword;
+
/**
* The name of the constructor to be invoked.
*/
ConstructorName _constructorName;
+
/**
* The list of arguments to the constructor.
*/
ArgumentList _argumentList;
+
/**
- * The element associated with the constructor, or {@code null} if the AST structure has not been
- * resolved or if the constructor could not be resolved.
+ * The element associated with the constructor based on static type information, or {@code null}if the AST structure has not been resolved or if the constructor could not be resolved.
*/
- ConstructorElement _element;
+ ConstructorElement _staticElement;
+
/**
+ * The element associated with the constructor based on propagated type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
+ */
+ ConstructorElement _propagatedElement;
+
+ /**
* Initialize a newly created instance creation expression.
* @param keyword the keyword used to indicate how an object should be created
* @param constructorName the name of the constructor to be invoked
@@ -6360,6 +7419,7 @@
this._constructorName = becomeParentOf(constructorName);
this._argumentList = becomeParentOf(argumentList);
}
+
/**
* Initialize a newly created instance creation expression.
* @param keyword the keyword used to indicate how an object should be created
@@ -6368,34 +7428,47 @@
*/
InstanceCreationExpression({Token keyword, ConstructorName constructorName, ArgumentList argumentList}) : this.full(keyword, constructorName, argumentList);
accept(ASTVisitor visitor) => visitor.visitInstanceCreationExpression(this);
+
/**
* Return the list of arguments to the constructor.
* @return the list of arguments to the constructor
*/
ArgumentList get argumentList => _argumentList;
Token get beginToken => _keyword;
+
/**
* Return the name of the constructor to be invoked.
* @return the name of the constructor to be invoked
*/
ConstructorName get constructorName => _constructorName;
+
/**
- * Return the element associated with the constructor, or {@code null} if the AST structure has
- * not been resolved or if the constructor could not be resolved.
+ * Return the element associated with the constructor based on propagated type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
* @return the element associated with the constructor
*/
- ConstructorElement get element => _element;
+ ConstructorElement get element => _propagatedElement;
Token get endToken => _argumentList.endToken;
+
/**
* Return the keyword used to indicate how an object should be created.
* @return the keyword used to indicate how an object should be created
*/
Token get keyword => _keyword;
+
/**
+ * Return the element associated with the constructor based on static type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
+ * @return the element associated with the constructor
+ */
+ ConstructorElement get staticElement => _staticElement;
+
+ /**
* Return {@code true} if this creation expression is used to invoke a constant constructor.
* @return {@code true} if this creation expression is used to invoke a constant constructor
*/
bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordToken)).keyword, Keyword.CONST);
+
/**
* Set the list of arguments to the constructor to the given list.
* @param argumentList the list of arguments to the constructor
@@ -6403,6 +7476,7 @@
void set argumentList(ArgumentList argumentList2) {
this._argumentList = becomeParentOf(argumentList2);
}
+
/**
* Set the name of the constructor to be invoked to the given name.
* @param constructorName the name of the constructor to be invoked
@@ -6410,13 +7484,16 @@
void set constructorName(ConstructorName constructorName2) {
this._constructorName = constructorName2;
}
+
/**
- * Set the element associated with the constructor to the given element.
- * @param element the element associated with the constructor
+ * Set the element associated with the constructor based on propagated type information to the
+ * given element.
+ * @param element the element to be associated with the constructor
*/
void set element(ConstructorElement element2) {
- this._element = element2;
+ this._propagatedElement = element2;
}
+
/**
* Set the keyword used to indicate how an object should be created to the given keyword.
* @param keyword the keyword used to indicate how an object should be created
@@ -6424,11 +7501,21 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
+ /**
+ * Set the element associated with the constructor based on static type information to the given
+ * element.
+ * @param element the element to be associated with the constructor
+ */
+ void set staticElement(ConstructorElement element) {
+ this._staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_constructorName, visitor);
safelyVisitChild(_argumentList, visitor);
}
}
+
/**
* Instances of the class {@code IntegerLiteral} represent an integer literal expression.
* <pre>
@@ -6444,14 +7531,17 @@
* @coverage dart.engine.ast
*/
class IntegerLiteral extends Literal {
+
/**
* The token representing the literal.
*/
Token _literal;
+
/**
* The value of the literal.
*/
int _value = 0;
+
/**
* Initialize a newly created integer literal.
* @param literal the token representing the literal
@@ -6461,6 +7551,7 @@
this._literal = literal;
this._value = value;
}
+
/**
* Initialize a newly created integer literal.
* @param literal the token representing the literal
@@ -6470,16 +7561,19 @@
accept(ASTVisitor visitor) => visitor.visitIntegerLiteral(this);
Token get beginToken => _literal;
Token get endToken => _literal;
+
/**
* Return the token representing the literal.
* @return the token representing the literal
*/
Token get literal => _literal;
+
/**
* Return the value of the literal.
* @return the value of the literal
*/
int get value => _value;
+
/**
* Set the token representing the literal to the given token.
* @param literal the token representing the literal
@@ -6487,6 +7581,7 @@
void set literal(Token literal2) {
this._literal = literal2;
}
+
/**
* Set the value of the literal to the given value.
* @param value the value of the literal
@@ -6497,6 +7592,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* The abstract class {@code InterpolationElement} defines the behavior common to elements within a{@link StringInterpolation string interpolation}.
* <pre>
@@ -6505,6 +7601,7 @@
*/
abstract class InterpolationElement extends ASTNode {
}
+
/**
* Instances of the class {@code InterpolationExpression} represent an expression embedded in a
* string interpolation.
@@ -6515,19 +7612,23 @@
* @coverage dart.engine.ast
*/
class InterpolationExpression extends InterpolationElement {
+
/**
* The token used to introduce the interpolation expression; either '$' if the expression is a
* simple identifier or '${' if the expression is a full expression.
*/
Token _leftBracket;
+
/**
* The expression to be evaluated for the value to be converted into a string.
*/
Expression _expression;
+
/**
* The right curly bracket, or {@code null} if the expression is an identifier without brackets.
*/
Token _rightBracket;
+
/**
* Initialize a newly created interpolation expression.
* @param leftBracket the left curly bracket
@@ -6539,6 +7640,7 @@
this._expression = becomeParentOf(expression);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created interpolation expression.
* @param leftBracket the left curly bracket
@@ -6554,21 +7656,25 @@
}
return _expression.endToken;
}
+
/**
* Return the expression to be evaluated for the value to be converted into a string.
* @return the expression to be evaluated for the value to be converted into a string
*/
Expression get expression => _expression;
+
/**
* Return the left curly bracket.
* @return the left curly bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right curly bracket.
* @return the right curly bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Set the expression to be evaluated for the value to be converted into a string to the given
* expression.
@@ -6577,6 +7683,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the left curly bracket to the given token.
* @param leftBracket the left curly bracket
@@ -6584,6 +7691,7 @@
void set leftBracket(Token leftBracket2) {
this._leftBracket = leftBracket2;
}
+
/**
* Set the right curly bracket to the given token.
* @param rightBracket the right curly bracket
@@ -6595,6 +7703,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code InterpolationString} represent a non-empty substring of an
* interpolated string.
@@ -6605,14 +7714,17 @@
* @coverage dart.engine.ast
*/
class InterpolationString extends InterpolationElement {
+
/**
* The characters that will be added to the string.
*/
Token _contents;
+
/**
* The value of the literal.
*/
String _value;
+
/**
* Initialize a newly created string of characters that are part of a string interpolation.
* @param the characters that will be added to the string
@@ -6622,6 +7734,7 @@
this._contents = contents;
this._value = value;
}
+
/**
* Initialize a newly created string of characters that are part of a string interpolation.
* @param the characters that will be added to the string
@@ -6630,17 +7743,20 @@
InterpolationString({Token contents, String value}) : this.full(contents, value);
accept(ASTVisitor visitor) => visitor.visitInterpolationString(this);
Token get beginToken => _contents;
+
/**
* Return the characters that will be added to the string.
* @return the characters that will be added to the string
*/
Token get contents => _contents;
Token get endToken => _contents;
+
/**
* Return the value of the literal.
* @return the value of the literal
*/
String get value => _value;
+
/**
* Set the characters that will be added to the string to those in the given string.
* @param string the characters that will be added to the string
@@ -6648,6 +7764,7 @@
void set contents(Token string) {
_contents = string;
}
+
/**
* Set the value of the literal to the given string.
* @param string the value of the literal
@@ -6658,6 +7775,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code IsExpression} represent an is expression.
* <pre>
@@ -6665,22 +7783,27 @@
* @coverage dart.engine.ast
*/
class IsExpression extends Expression {
+
/**
* The expression used to compute the value whose type is being tested.
*/
Expression _expression;
+
/**
* The is operator.
*/
Token _isOperator;
+
/**
* The not operator, or {@code null} if the sense of the test is not negated.
*/
Token _notOperator;
+
/**
* The name of the type being tested for.
*/
TypeName _type;
+
/**
* Initialize a newly created is expression.
* @param expression the expression used to compute the value whose type is being tested
@@ -6694,6 +7817,7 @@
this._notOperator = notOperator;
this._type = becomeParentOf(type);
}
+
/**
* Initialize a newly created is expression.
* @param expression the expression used to compute the value whose type is being tested
@@ -6705,26 +7829,31 @@
accept(ASTVisitor visitor) => visitor.visitIsExpression(this);
Token get beginToken => _expression.beginToken;
Token get endToken => _type.endToken;
+
/**
* Return the expression used to compute the value whose type is being tested.
* @return the expression used to compute the value whose type is being tested
*/
Expression get expression => _expression;
+
/**
* Return the is operator being applied.
* @return the is operator being applied
*/
Token get isOperator => _isOperator;
+
/**
* Return the not operator being applied.
* @return the not operator being applied
*/
Token get notOperator => _notOperator;
+
/**
* Return the name of the type being tested for.
* @return the name of the type being tested for
*/
TypeName get type => _type;
+
/**
* Set the expression used to compute the value whose type is being tested to the given
* expression.
@@ -6733,6 +7862,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the is operator being applied to the given operator.
* @param isOperator the is operator being applied
@@ -6740,6 +7870,7 @@
void set isOperator(Token isOperator2) {
this._isOperator = isOperator2;
}
+
/**
* Set the not operator being applied to the given operator.
* @param notOperator the is operator being applied
@@ -6747,6 +7878,7 @@
void set notOperator(Token notOperator2) {
this._notOperator = notOperator2;
}
+
/**
* Set the name of the type being tested for to the given name.
* @param name the name of the type being tested for
@@ -6759,6 +7891,7 @@
safelyVisitChild(_type, visitor);
}
}
+
/**
* Instances of the class {@code Label} represent a label.
* <pre>
@@ -6767,14 +7900,17 @@
* @coverage dart.engine.ast
*/
class Label extends ASTNode {
+
/**
* The label being associated with the statement.
*/
SimpleIdentifier _label;
+
/**
* The colon that separates the label from the statement.
*/
Token _colon;
+
/**
* Initialize a newly created label.
* @param label the label being applied
@@ -6784,6 +7920,7 @@
this._label = becomeParentOf(label);
this._colon = colon;
}
+
/**
* Initialize a newly created label.
* @param label the label being applied
@@ -6792,17 +7929,20 @@
Label({SimpleIdentifier label, Token colon}) : this.full(label, colon);
accept(ASTVisitor visitor) => visitor.visitLabel(this);
Token get beginToken => _label.beginToken;
+
/**
* Return the colon that separates the label from the statement.
* @return the colon that separates the label from the statement
*/
Token get colon => _colon;
Token get endToken => _colon;
+
/**
* Return the label being associated with the statement.
* @return the label being associated with the statement
*/
SimpleIdentifier get label => _label;
+
/**
* Set the colon that separates the label from the statement to the given token.
* @param colon the colon that separates the label from the statement
@@ -6810,6 +7950,7 @@
void set colon(Token colon2) {
this._colon = colon2;
}
+
/**
* Set the label being associated with the statement to the given label.
* @param label the label being associated with the statement
@@ -6821,6 +7962,7 @@
safelyVisitChild(_label, visitor);
}
}
+
/**
* Instances of the class {@code LabeledStatement} represent a statement that has a label associated
* with them.
@@ -6829,14 +7971,17 @@
* @coverage dart.engine.ast
*/
class LabeledStatement extends Statement {
+
/**
* The labels being associated with the statement.
*/
NodeList<Label> _labels;
+
/**
* The statement with which the labels are being associated.
*/
Statement _statement;
+
/**
* Initialize a newly created labeled statement.
* @param labels the labels being associated with the statement
@@ -6847,6 +7992,7 @@
this._labels.addAll(labels);
this._statement = becomeParentOf(statement);
}
+
/**
* Initialize a newly created labeled statement.
* @param labels the labels being associated with the statement
@@ -6861,16 +8007,19 @@
return _statement.beginToken;
}
Token get endToken => _statement.endToken;
+
/**
* Return the labels being associated with the statement.
* @return the labels being associated with the statement
*/
NodeList<Label> get labels => _labels;
+
/**
* Return the statement with which the labels are being associated.
* @return the statement with which the labels are being associated
*/
Statement get statement => _statement;
+
/**
* Set the statement with which the labels are being associated to the given statement.
* @param statement the statement with which the labels are being associated
@@ -6883,6 +8032,7 @@
safelyVisitChild(_statement, visitor);
}
}
+
/**
* Instances of the class {@code LibraryDirective} represent a library directive.
* <pre>
@@ -6891,18 +8041,22 @@
* @coverage dart.engine.ast
*/
class LibraryDirective extends Directive {
+
/**
* The token representing the 'library' token.
*/
Token _libraryToken;
+
/**
* The name of the library being defined.
*/
LibraryIdentifier _name;
+
/**
* The semicolon terminating the directive.
*/
Token _semicolon;
+
/**
* Initialize a newly created library directive.
* @param comment the documentation comment associated with this directive
@@ -6916,6 +8070,7 @@
this._name = becomeParentOf(name);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created library directive.
* @param comment the documentation comment associated with this directive
@@ -6928,21 +8083,25 @@
accept(ASTVisitor visitor) => visitor.visitLibraryDirective(this);
Token get endToken => _semicolon;
Token get keyword => _libraryToken;
+
/**
* Return the token representing the 'library' token.
* @return the token representing the 'library' token
*/
Token get libraryToken => _libraryToken;
+
/**
* Return the name of the library being defined.
* @return the name of the library being defined
*/
LibraryIdentifier get name => _name;
+
/**
* Return the semicolon terminating the directive.
* @return the semicolon terminating the directive
*/
Token get semicolon => _semicolon;
+
/**
* Set the token representing the 'library' token to the given token.
* @param libraryToken the token representing the 'library' token
@@ -6950,6 +8109,7 @@
void set libraryToken(Token libraryToken2) {
this._libraryToken = libraryToken2;
}
+
/**
* Set the name of the library being defined to the given name.
* @param name the name of the library being defined
@@ -6957,6 +8117,7 @@
void set name(LibraryIdentifier name2) {
this._name = becomeParentOf(name2);
}
+
/**
* Set the semicolon terminating the directive to the given token.
* @param semicolon the semicolon terminating the directive
@@ -6970,6 +8131,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _libraryToken;
}
+
/**
* Instances of the class {@code LibraryIdentifier} represent the identifier for a library.
* <pre>
@@ -6978,10 +8140,12 @@
* @coverage dart.engine.ast
*/
class LibraryIdentifier extends Identifier {
+
/**
* The components of the identifier.
*/
NodeList<SimpleIdentifier> _components;
+
/**
* Initialize a newly created prefixed identifier.
* @param components the components of the identifier
@@ -6990,6 +8154,7 @@
this._components = new NodeList<SimpleIdentifier>(this);
this._components.addAll(components);
}
+
/**
* Initialize a newly created prefixed identifier.
* @param components the components of the identifier
@@ -6997,6 +8162,7 @@
LibraryIdentifier({List<SimpleIdentifier> components}) : this.full(components);
accept(ASTVisitor visitor) => visitor.visitLibraryIdentifier(this);
Token get beginToken => _components.beginToken;
+
/**
* Return the components of the identifier.
* @return the components of the identifier
@@ -7017,10 +8183,12 @@
}
return builder.toString();
}
+ Element get staticElement => null;
void visitChildren(ASTVisitor<Object> visitor) {
_components.accept(visitor);
}
}
+
/**
* Instances of the class {@code ListLiteral} represent a list literal.
* <pre>
@@ -7030,18 +8198,22 @@
* @coverage dart.engine.ast
*/
class ListLiteral extends TypedLiteral {
+
/**
* The left square bracket.
*/
Token _leftBracket;
+
/**
* The expressions used to compute the elements of the list.
*/
NodeList<Expression> _elements;
+
/**
* The right square bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created list literal.
* @param modifier the const modifier associated with this literal
@@ -7057,6 +8229,7 @@
this._elements.addAll(elements);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created list literal.
* @param modifier the const modifier associated with this literal
@@ -7079,22 +8252,26 @@
}
return _leftBracket;
}
+
/**
* Return the expressions used to compute the elements of the list.
* @return the expressions used to compute the elements of the list
*/
NodeList<Expression> get elements => _elements;
Token get endToken => _rightBracket;
+
/**
* Return the left square bracket.
* @return the left square bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right square bracket.
* @return the right square bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Set the left square bracket to the given token.
* @param bracket the left square bracket
@@ -7102,6 +8279,7 @@
void set leftBracket(Token bracket) {
_leftBracket = bracket;
}
+
/**
* Set the right square bracket to the given token.
* @param bracket the right square bracket
@@ -7114,6 +8292,7 @@
_elements.accept(visitor);
}
}
+
/**
* The abstract class {@code Literal} defines the behavior common to nodes that represent a literal
* expression.
@@ -7123,6 +8302,7 @@
*/
abstract class Literal extends Expression {
}
+
/**
* Instances of the class {@code MapLiteral} represent a literal map.
* <pre>
@@ -7132,18 +8312,22 @@
* @coverage dart.engine.ast
*/
class MapLiteral extends TypedLiteral {
+
/**
* The left curly bracket.
*/
Token _leftBracket;
+
/**
* The entries in the map.
*/
NodeList<MapLiteralEntry> _entries;
+
/**
* The right curly bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created map literal.
* @param modifier the const modifier associated with this literal
@@ -7159,6 +8343,7 @@
this._entries.addAll(entries);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created map literal.
* @param modifier the const modifier associated with this literal
@@ -7182,21 +8367,25 @@
return _leftBracket;
}
Token get endToken => _rightBracket;
+
/**
* Return the entries in the map.
* @return the entries in the map
*/
NodeList<MapLiteralEntry> get entries => _entries;
+
/**
* Return the left curly bracket.
* @return the left curly bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right curly bracket.
* @return the right curly bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Set the left curly bracket to the given token.
* @param bracket the left curly bracket
@@ -7204,6 +8393,7 @@
void set leftBracket(Token bracket) {
_leftBracket = bracket;
}
+
/**
* Set the right curly bracket to the given token.
* @param bracket the right curly bracket
@@ -7216,69 +8406,81 @@
_entries.accept(visitor);
}
}
+
/**
* Instances of the class {@code MapLiteralEntry} represent a single key/value pair in a map
* literal.
* <pre>
- * mapLiteralEntry ::={@link StringLiteral key} ':' {@link Expression value}</pre>
+ * mapLiteralEntry ::={@link Expression key} ':' {@link Expression value}</pre>
* @coverage dart.engine.ast
*/
class MapLiteralEntry extends ASTNode {
+
/**
- * The key with which the value will be associated.
+ * The expression computing the key with which the value will be associated.
*/
- StringLiteral _key;
+ Expression _key;
+
/**
* The colon that separates the key from the value.
*/
Token _separator;
+
/**
* The expression computing the value that will be associated with the key.
*/
Expression _value;
+
/**
* Initialize a newly created map literal entry.
- * @param key the key with which the value will be associated
+ * @param key the expression computing the key with which the value will be associated
* @param separator the colon that separates the key from the value
* @param value the expression computing the value that will be associated with the key
*/
- MapLiteralEntry.full(StringLiteral key, Token separator, Expression value) {
+ MapLiteralEntry.full(Expression key, Token separator, Expression value) {
this._key = becomeParentOf(key);
this._separator = separator;
this._value = becomeParentOf(value);
}
+
/**
* Initialize a newly created map literal entry.
- * @param key the key with which the value will be associated
+ * @param key the expression computing the key with which the value will be associated
* @param separator the colon that separates the key from the value
* @param value the expression computing the value that will be associated with the key
*/
- MapLiteralEntry({StringLiteral key, Token separator, Expression value}) : this.full(key, separator, value);
+ MapLiteralEntry({Expression key, Token separator, Expression value}) : this.full(key, separator, value);
accept(ASTVisitor visitor) => visitor.visitMapLiteralEntry(this);
Token get beginToken => _key.beginToken;
Token get endToken => _value.endToken;
+
/**
- * Return the key with which the value will be associated.
- * @return the key with which the value will be associated
+ * Return the expression computing the key with which the value will be associated.
+ * @return the expression computing the key with which the value will be associated
*/
- StringLiteral get key => _key;
+ Expression get key => _key;
+
/**
* Return the colon that separates the key from the value.
* @return the colon that separates the key from the value
*/
Token get separator => _separator;
+
/**
* Return the expression computing the value that will be associated with the key.
* @return the expression computing the value that will be associated with the key
*/
Expression get value => _value;
+
/**
- * Set the key with which the value will be associated to the given string.
- * @param string the key with which the value will be associated
+ * Set the expression computing the key with which the value will be associated to the given
+ * string.
+ * @param string the expression computing the key with which the value will be associated
*/
- void set key(StringLiteral string) {
+ void set key(Expression string) {
_key = becomeParentOf(string);
}
+
/**
* Set the colon that separates the key from the value to the given token.
* @param separator the colon that separates the key from the value
@@ -7286,6 +8488,7 @@
void set separator(Token separator2) {
this._separator = separator2;
}
+
/**
* Set the expression computing the value that will be associated with the key to the given
* expression.
@@ -7299,6 +8502,7 @@
safelyVisitChild(_value, visitor);
}
}
+
/**
* Instances of the class {@code MethodDeclaration} represent a method declaration.
* <pre>
@@ -7308,41 +8512,50 @@
* @coverage dart.engine.ast
*/
class MethodDeclaration extends ClassMember {
+
/**
* The token for the 'external' keyword, or {@code null} if the constructor is not external.
*/
Token _externalKeyword;
+
/**
* The token representing the 'abstract' or 'static' keyword, or {@code null} if neither modifier
* was specified.
*/
Token _modifierKeyword;
+
/**
* The return type of the method, or {@code null} if no return type was declared.
*/
TypeName _returnType;
+
/**
* The token representing the 'get' or 'set' keyword, or {@code null} if this is a method
* declaration rather than a property declaration.
*/
Token _propertyKeyword;
+
/**
* The token representing the 'operator' keyword, or {@code null} if this method does not declare
* an operator.
*/
Token _operatorKeyword;
+
/**
* The name of the method.
*/
SimpleIdentifier _name;
+
/**
* The parameters associated with the method, or {@code null} if this method declares a getter.
*/
FormalParameterList _parameters;
+
/**
* The body of the method.
*/
FunctionBody _body;
+
/**
* Initialize a newly created method declaration.
* @param externalKeyword the token for the 'external' keyword
@@ -7367,6 +8580,7 @@
this._parameters = becomeParentOf(parameters);
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created method declaration.
* @param externalKeyword the token for the 'external' keyword
@@ -7383,11 +8597,13 @@
*/
MethodDeclaration({Comment comment, List<Annotation> metadata, Token externalKeyword, Token modifierKeyword, TypeName returnType, Token propertyKeyword, Token operatorKeyword, SimpleIdentifier name, FormalParameterList parameters, FunctionBody body}) : this.full(comment, metadata, externalKeyword, modifierKeyword, returnType, propertyKeyword, operatorKeyword, name, parameters, body);
accept(ASTVisitor visitor) => visitor.visitMethodDeclaration(this);
+
/**
* Return the body of the method.
* @return the body of the method
*/
FunctionBody get body => _body;
+
/**
* Return the element associated with this method, or {@code null} if the AST structure has not
* been resolved. The element can either be a {@link MethodElement}, if this represents the
@@ -7397,71 +8613,84 @@
*/
ExecutableElement get element => _name != null ? (_name.element as ExecutableElement) : null;
Token get endToken => _body.endToken;
+
/**
* Return the token for the 'external' keyword, or {@code null} if the constructor is not
* external.
* @return the token for the 'external' keyword
*/
Token get externalKeyword => _externalKeyword;
+
/**
* Return the token representing the 'abstract' or 'static' keyword, or {@code null} if neither
* modifier was specified.
* @return the token representing the 'abstract' or 'static' keyword
*/
Token get modifierKeyword => _modifierKeyword;
+
/**
* Return the name of the method.
* @return the name of the method
*/
SimpleIdentifier get name => _name;
+
/**
* Return the token representing the 'operator' keyword, or {@code null} if this method does not
* declare an operator.
* @return the token representing the 'operator' keyword
*/
Token get operatorKeyword => _operatorKeyword;
+
/**
* Return the parameters associated with the method, or {@code null} if this method declares a
* getter.
* @return the parameters associated with the method
*/
FormalParameterList get parameters => _parameters;
+
/**
* Return the token representing the 'get' or 'set' keyword, or {@code null} if this is a method
* declaration rather than a property declaration.
* @return the token representing the 'get' or 'set' keyword
*/
Token get propertyKeyword => _propertyKeyword;
+
/**
* Return the return type of the method, or {@code null} if no return type was declared.
* @return the return type of the method
*/
TypeName get returnType => _returnType;
+
/**
* Return {@code true} if this method is declared to be an abstract method.
* @return {@code true} if this method is declared to be an abstract method
*/
bool isAbstract() => _externalKeyword == null && (_body is EmptyFunctionBody);
+
/**
* Return {@code true} if this method declares a getter.
* @return {@code true} if this method declares a getter
*/
bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as KeywordToken)).keyword, Keyword.GET);
+
/**
* Return {@code true} if this method declares an operator.
* @return {@code true} if this method declares an operator
*/
bool isOperator() => _operatorKeyword != null;
+
/**
* Return {@code true} if this method declares a setter.
* @return {@code true} if this method declares a setter
*/
bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as KeywordToken)).keyword, Keyword.SET);
+
/**
* Return {@code true} if this method is declared to be a static method.
* @return {@code true} if this method is declared to be a static method
*/
bool isStatic() => _modifierKeyword != null && identical(((_modifierKeyword as KeywordToken)).keyword, Keyword.STATIC);
+
/**
* Set the body of the method to the given function body.
* @param functionBody the body of the method
@@ -7469,6 +8698,7 @@
void set body(FunctionBody functionBody) {
_body = becomeParentOf(functionBody);
}
+
/**
* Set the token for the 'external' keyword to the given token.
* @param externalKeyword the token for the 'external' keyword
@@ -7476,6 +8706,7 @@
void set externalKeyword(Token externalKeyword2) {
this._externalKeyword = externalKeyword2;
}
+
/**
* Set the token representing the 'abstract' or 'static' keyword to the given token.
* @param modifierKeyword the token representing the 'abstract' or 'static' keyword
@@ -7483,6 +8714,7 @@
void set modifierKeyword(Token modifierKeyword2) {
this._modifierKeyword = modifierKeyword2;
}
+
/**
* Set the name of the method to the given identifier.
* @param identifier the name of the method
@@ -7490,6 +8722,7 @@
void set name(SimpleIdentifier identifier) {
_name = becomeParentOf(identifier);
}
+
/**
* Set the token representing the 'operator' keyword to the given token.
* @param operatorKeyword the token representing the 'operator' keyword
@@ -7497,6 +8730,7 @@
void set operatorKeyword(Token operatorKeyword2) {
this._operatorKeyword = operatorKeyword2;
}
+
/**
* Set the parameters associated with the method to the given list of parameters.
* @param parameters the parameters associated with the method
@@ -7504,6 +8738,7 @@
void set parameters(FormalParameterList parameters2) {
this._parameters = becomeParentOf(parameters2);
}
+
/**
* Set the token representing the 'get' or 'set' keyword to the given token.
* @param propertyKeyword the token representing the 'get' or 'set' keyword
@@ -7511,6 +8746,7 @@
void set propertyKeyword(Token propertyKeyword2) {
this._propertyKeyword = propertyKeyword2;
}
+
/**
* Set the return type of the method to the given type name.
* @param typeName the return type of the method
@@ -7538,6 +8774,7 @@
return _name.beginToken;
}
}
+
/**
* Instances of the class {@code MethodInvocation} represent the invocation of either a function or
* a method. Invocations of functions resulting from evaluating an expression are represented by{@link FunctionExpressionInvocation function expression invocation} nodes. Invocations of getters
@@ -7548,24 +8785,29 @@
* @coverage dart.engine.ast
*/
class MethodInvocation extends Expression {
+
/**
* The expression producing the object on which the method is defined, or {@code null} if there is
* no target (that is, the target is implicitly {@code this}).
*/
Expression _target;
+
/**
* The period that separates the target from the method name, or {@code null} if there is no
* target.
*/
Token _period;
+
/**
* The name of the method being invoked.
*/
SimpleIdentifier _methodName;
+
/**
* The list of arguments to the method.
*/
ArgumentList _argumentList;
+
/**
* Initialize a newly created method invocation.
* @param target the expression producing the object on which the method is defined
@@ -7579,6 +8821,7 @@
this._methodName = becomeParentOf(methodName);
this._argumentList = becomeParentOf(argumentList);
}
+
/**
* Initialize a newly created method invocation.
* @param target the expression producing the object on which the method is defined
@@ -7588,6 +8831,7 @@
*/
MethodInvocation({Expression target, Token period, SimpleIdentifier methodName, ArgumentList argumentList}) : this.full(target, period, methodName, argumentList);
accept(ASTVisitor visitor) => visitor.visitMethodInvocation(this);
+
/**
* Return the list of arguments to the method.
* @return the list of arguments to the method
@@ -7602,17 +8846,20 @@
return _methodName.beginToken;
}
Token get endToken => _argumentList.endToken;
+
/**
* Return the name of the method being invoked.
* @return the name of the method being invoked
*/
SimpleIdentifier get methodName => _methodName;
+
/**
* Return the period that separates the target from the method name, or {@code null} if there is
* no target.
* @return the period that separates the target from the method name
*/
Token get period => _period;
+
/**
* Return the expression used to compute the receiver of the invocation. If this invocation is not
* part of a cascade expression, then this is the same as {@link #getTarget()}. If this invocation
@@ -7634,6 +8881,7 @@
}
return _target;
}
+
/**
* Return the expression producing the object on which the method is defined, or {@code null} if
* there is no target (that is, the target is implicitly {@code this}) or if this method
@@ -7642,12 +8890,14 @@
* @see #getRealTarget()
*/
Expression get target => _target;
+
/**
* Return {@code true} if this expression is cascaded. If it is, then the target of this
* expression is not stored locally but is stored in the nearest ancestor that is a{@link CascadeExpression}.
* @return {@code true} if this expression is cascaded
*/
bool isCascaded() => _period != null && identical(_period.type, TokenType.PERIOD_PERIOD);
+
/**
* Set the list of arguments to the method to the given list.
* @param argumentList the list of arguments to the method
@@ -7655,6 +8905,7 @@
void set argumentList(ArgumentList argumentList2) {
this._argumentList = becomeParentOf(argumentList2);
}
+
/**
* Set the name of the method being invoked to the given identifier.
* @param identifier the name of the method being invoked
@@ -7662,6 +8913,7 @@
void set methodName(SimpleIdentifier identifier) {
_methodName = becomeParentOf(identifier);
}
+
/**
* Set the period that separates the target from the method name to the given token.
* @param period the period that separates the target from the method name
@@ -7669,6 +8921,7 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
* Set the expression producing the object on which the method is defined to the given expression.
* @param expression the expression producing the object on which the method is defined
@@ -7682,6 +8935,7 @@
safelyVisitChild(_argumentList, visitor);
}
}
+
/**
* Instances of the class {@code NamedExpression} represent an expression that has a name associated
* with it. They are used in method invocations when there are named parameters.
@@ -7690,14 +8944,17 @@
* @coverage dart.engine.ast
*/
class NamedExpression extends Expression {
+
/**
* The name associated with the expression.
*/
Label _name;
+
/**
* The expression with which the name is associated.
*/
Expression _expression;
+
/**
* Initialize a newly created named expression.
* @param name the name associated with the expression
@@ -7707,6 +8964,7 @@
this._name = becomeParentOf(name);
this._expression = becomeParentOf(expression);
}
+
/**
* Initialize a newly created named expression.
* @param name the name associated with the expression
@@ -7715,6 +8973,7 @@
NamedExpression({Label name, Expression expression}) : this.full(name, expression);
accept(ASTVisitor visitor) => visitor.visitNamedExpression(this);
Token get beginToken => _name.beginToken;
+
/**
* Return the element representing the parameter being named by this expression, or {@code null}if the AST structure has not been resolved or if there is no parameter with the same name as
* this expression.
@@ -7728,16 +8987,19 @@
return null;
}
Token get endToken => _expression.endToken;
+
/**
* Return the expression with which the name is associated.
* @return the expression with which the name is associated
*/
Expression get expression => _expression;
+
/**
* Return the name associated with the expression.
* @return the name associated with the expression
*/
Label get name => _name;
+
/**
* Set the expression with which the name is associated to the given expression.
* @param expression the expression with which the name is associated
@@ -7745,6 +9007,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the name associated with the expression to the given identifier.
* @param identifier the name associated with the expression
@@ -7757,6 +9020,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* The abstract class {@code NamespaceDirective} defines the behavior common to nodes that represent
* a directive that impacts the namespace of a library.
@@ -7765,18 +9029,22 @@
* @coverage dart.engine.ast
*/
abstract class NamespaceDirective extends UriBasedDirective {
+
/**
* The token representing the 'import' or 'export' keyword.
*/
Token _keyword;
+
/**
* The combinators used to control which names are imported or exported.
*/
NodeList<Combinator> _combinators;
+
/**
* The semicolon terminating the directive.
*/
Token _semicolon;
+
/**
* Initialize a newly created namespace directive.
* @param comment the documentation comment associated with this directive
@@ -7792,6 +9060,7 @@
this._combinators.addAll(combinators);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created namespace directive.
* @param comment the documentation comment associated with this directive
@@ -7802,6 +9071,7 @@
* @param semicolon the semicolon terminating the directive
*/
NamespaceDirective({Comment comment, List<Annotation> metadata, Token keyword, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : this.full(comment, metadata, keyword, libraryUri, combinators, semicolon);
+
/**
* Return the combinators used to control how names are imported or exported.
* @return the combinators used to control how names are imported or exported
@@ -7809,11 +9079,14 @@
NodeList<Combinator> get combinators => _combinators;
Token get endToken => _semicolon;
Token get keyword => _keyword;
+
/**
* Return the semicolon terminating the directive.
* @return the semicolon terminating the directive
*/
Token get semicolon => _semicolon;
+ LibraryElement get uriElement;
+
/**
* Set the token representing the 'import' or 'export' keyword to the given token.
* @param exportToken the token representing the 'import' or 'export' keyword
@@ -7821,6 +9094,7 @@
void set keyword(Token exportToken) {
this._keyword = exportToken;
}
+
/**
* Set the semicolon terminating the directive to the given token.
* @param semicolon the semicolon terminating the directive
@@ -7830,6 +9104,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _keyword;
}
+
/**
* Instances of the class {@code NativeFunctionBody} represent a function body that consists of a
* native keyword followed by a string literal.
@@ -7840,18 +9115,22 @@
* @coverage dart.engine.ast
*/
class NativeFunctionBody extends FunctionBody {
+
/**
* The token representing 'native' that marks the start of the function body.
*/
Token _nativeToken;
+
/**
* The string literal, after the 'native' token.
*/
StringLiteral _stringLiteral;
+
/**
* The token representing the semicolon that marks the end of the function body.
*/
Token _semicolon;
+
/**
* Initialize a newly created function body consisting of the 'native' token, a string literal,
* and a semicolon.
@@ -7864,6 +9143,7 @@
this._stringLiteral = becomeParentOf(stringLiteral);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created function body consisting of the 'native' token, a string literal,
* and a semicolon.
@@ -7875,16 +9155,19 @@
accept(ASTVisitor visitor) => visitor.visitNativeFunctionBody(this);
Token get beginToken => _nativeToken;
Token get endToken => _semicolon;
+
/**
* Return the simple identifier representing the 'native' token.
* @return the simple identifier representing the 'native' token
*/
Token get nativeToken => _nativeToken;
+
/**
* Return the token representing the semicolon that marks the end of the function body.
* @return the token representing the semicolon that marks the end of the function body
*/
Token get semicolon => _semicolon;
+
/**
* Return the string literal representing the string after the 'native' token.
* @return the string literal representing the string after the 'native' token
@@ -7894,6 +9177,7 @@
safelyVisitChild(_stringLiteral, visitor);
}
}
+
/**
* The abstract class {@code NormalFormalParameter} defines the behavior common to formal parameters
* that are required (are not optional).
@@ -7902,19 +9186,23 @@
* @coverage dart.engine.ast
*/
abstract class NormalFormalParameter extends FormalParameter {
+
/**
* The documentation comment associated with this parameter, or {@code null} if this parameter
* does not have a documentation comment associated with it.
*/
Comment _comment;
+
/**
* The annotations associated with this parameter.
*/
NodeList<Annotation> _metadata;
+
/**
* The name of the parameter being declared.
*/
SimpleIdentifier _identifier;
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -7927,6 +9215,7 @@
this._metadata.addAll(metadata);
this._identifier = becomeParentOf(identifier);
}
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -7934,6 +9223,7 @@
* @param identifier the name of the parameter being declared
*/
NormalFormalParameter({Comment comment, List<Annotation> metadata, SimpleIdentifier identifier}) : this.full(comment, metadata, identifier);
+
/**
* Return the documentation comment associated with this parameter, or {@code null} if this
* parameter does not have a documentation comment associated with it.
@@ -7948,16 +9238,19 @@
}
return ParameterKind.REQUIRED;
}
+
/**
* Return the annotations associated with this parameter.
* @return the annotations associated with this parameter
*/
NodeList<Annotation> get metadata => _metadata;
+
/**
* Return {@code true} if this parameter was declared with the 'const' modifier.
* @return {@code true} if this parameter was declared with the 'const' modifier
*/
bool isConst();
+
/**
* Return {@code true} if this parameter was declared with the 'final' modifier. Parameters that
* are declared with the 'const' modifier will return {@code false} even though they are
@@ -7965,6 +9258,7 @@
* @return {@code true} if this parameter was declared with the 'final' modifier
*/
bool isFinal();
+
/**
* Set the documentation comment associated with this parameter to the given comment
* @param comment the documentation comment to be associated with this parameter
@@ -7972,6 +9266,7 @@
void set documentationComment(Comment comment2) {
this._comment = becomeParentOf(comment2);
}
+
/**
* Set the name of the parameter being declared to the given identifier.
* @param identifier the name of the parameter being declared
@@ -7989,6 +9284,7 @@
}
}
}
+
/**
* Return {@code true} if the comment is lexically before any annotations.
* @return {@code true} if the comment is lexically before any annotations
@@ -8000,6 +9296,7 @@
Annotation firstAnnotation = _metadata[0];
return _comment.offset < firstAnnotation.offset;
}
+
/**
* Return an array containing the comment and annotations associated with this parameter, sorted
* in lexical order.
@@ -8015,6 +9312,7 @@
return children;
}
}
+
/**
* Instances of the class {@code NullLiteral} represent a null literal expression.
* <pre>
@@ -8024,10 +9322,12 @@
* @coverage dart.engine.ast
*/
class NullLiteral extends Literal {
+
/**
* The token representing the literal.
*/
Token _literal;
+
/**
* Initialize a newly created null literal.
* @param token the token representing the literal
@@ -8035,6 +9335,7 @@
NullLiteral.full(Token token) {
this._literal = token;
}
+
/**
* Initialize a newly created null literal.
* @param token the token representing the literal
@@ -8043,11 +9344,13 @@
accept(ASTVisitor visitor) => visitor.visitNullLiteral(this);
Token get beginToken => _literal;
Token get endToken => _literal;
+
/**
* Return the token representing the literal.
* @return the token representing the literal
*/
Token get literal => _literal;
+
/**
* Set the token representing the literal to the given token.
* @param literal the token representing the literal
@@ -8058,6 +9361,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code ParenthesizedExpression} represent a parenthesized expression.
* <pre>
@@ -8067,18 +9371,22 @@
* @coverage dart.engine.ast
*/
class ParenthesizedExpression extends Expression {
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The expression within the parentheses.
*/
Expression _expression;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* Initialize a newly created parenthesized expression.
* @param leftParenthesis the left parenthesis
@@ -8090,6 +9398,7 @@
this._expression = becomeParentOf(expression);
this._rightParenthesis = rightParenthesis;
}
+
/**
* Initialize a newly created parenthesized expression.
* @param leftParenthesis the left parenthesis
@@ -8100,21 +9409,25 @@
accept(ASTVisitor visitor) => visitor.visitParenthesizedExpression(this);
Token get beginToken => _leftParenthesis;
Token get endToken => _rightParenthesis;
+
/**
* Return the expression within the parentheses.
* @return the expression within the parentheses
*/
Expression get expression => _expression;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the expression within the parentheses to the given expression.
* @param expression the expression within the parentheses
@@ -8122,6 +9435,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the left parenthesis to the given token.
* @param parenthesis the left parenthesis
@@ -8129,6 +9443,7 @@
void set leftParenthesis(Token parenthesis) {
_leftParenthesis = parenthesis;
}
+
/**
* Set the right parenthesis to the given token.
* @param parenthesis the right parenthesis
@@ -8140,6 +9455,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code PartDirective} represent a part directive.
* <pre>
@@ -8148,14 +9464,17 @@
* @coverage dart.engine.ast
*/
class PartDirective extends UriBasedDirective {
+
/**
* The token representing the 'part' token.
*/
Token _partToken;
+
/**
* The semicolon terminating the directive.
*/
Token _semicolon;
+
/**
* Initialize a newly created part directive.
* @param comment the documentation comment associated with this directive
@@ -8168,6 +9487,7 @@
this._partToken = partToken;
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created part directive.
* @param comment the documentation comment associated with this directive
@@ -8180,16 +9500,20 @@
accept(ASTVisitor visitor) => visitor.visitPartDirective(this);
Token get endToken => _semicolon;
Token get keyword => _partToken;
+
/**
* Return the token representing the 'part' token.
* @return the token representing the 'part' token
*/
Token get partToken => _partToken;
+
/**
* Return the semicolon terminating the directive.
* @return the semicolon terminating the directive
*/
Token get semicolon => _semicolon;
+ CompilationUnitElement get uriElement => element as CompilationUnitElement;
+
/**
* Set the token representing the 'part' token to the given token.
* @param partToken the token representing the 'part' token
@@ -8197,6 +9521,7 @@
void set partToken(Token partToken2) {
this._partToken = partToken2;
}
+
/**
* Set the semicolon terminating the directive to the given token.
* @param semicolon the semicolon terminating the directive
@@ -8206,6 +9531,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _partToken;
}
+
/**
* Instances of the class {@code PartOfDirective} represent a part-of directive.
* <pre>
@@ -8214,22 +9540,27 @@
* @coverage dart.engine.ast
*/
class PartOfDirective extends Directive {
+
/**
* The token representing the 'part' token.
*/
Token _partToken;
+
/**
* The token representing the 'of' token.
*/
Token _ofToken;
+
/**
* The name of the library that the containing compilation unit is part of.
*/
LibraryIdentifier _libraryName;
+
/**
* The semicolon terminating the directive.
*/
Token _semicolon;
+
/**
* Initialize a newly created part-of directive.
* @param comment the documentation comment associated with this directive
@@ -8245,6 +9576,7 @@
this._libraryName = becomeParentOf(libraryName);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created part-of directive.
* @param comment the documentation comment associated with this directive
@@ -8258,26 +9590,31 @@
accept(ASTVisitor visitor) => visitor.visitPartOfDirective(this);
Token get endToken => _semicolon;
Token get keyword => _partToken;
+
/**
* Return the name of the library that the containing compilation unit is part of.
* @return the name of the library that the containing compilation unit is part of
*/
LibraryIdentifier get libraryName => _libraryName;
+
/**
* Return the token representing the 'of' token.
* @return the token representing the 'of' token
*/
Token get ofToken => _ofToken;
+
/**
* Return the token representing the 'part' token.
* @return the token representing the 'part' token
*/
Token get partToken => _partToken;
+
/**
* Return the semicolon terminating the directive.
* @return the semicolon terminating the directive
*/
Token get semicolon => _semicolon;
+
/**
* Set the name of the library that the containing compilation unit is part of to the given name.
* @param libraryName the name of the library that the containing compilation unit is part of
@@ -8285,6 +9622,7 @@
void set libraryName(LibraryIdentifier libraryName2) {
this._libraryName = becomeParentOf(libraryName2);
}
+
/**
* Set the token representing the 'of' token to the given token.
* @param ofToken the token representing the 'of' token
@@ -8292,6 +9630,7 @@
void set ofToken(Token ofToken2) {
this._ofToken = ofToken2;
}
+
/**
* Set the token representing the 'part' token to the given token.
* @param partToken the token representing the 'part' token
@@ -8299,6 +9638,7 @@
void set partToken(Token partToken2) {
this._partToken = partToken2;
}
+
/**
* Set the semicolon terminating the directive to the given token.
* @param semicolon the semicolon terminating the directive
@@ -8312,6 +9652,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _partToken;
}
+
/**
* Instances of the class {@code PostfixExpression} represent a postfix unary expression.
* <pre>
@@ -8319,20 +9660,30 @@
* @coverage dart.engine.ast
*/
class PostfixExpression extends Expression {
+
/**
* The expression computing the operand for the operator.
*/
Expression _operand;
+
/**
* The postfix operator being applied to the operand.
*/
Token _operator;
+
/**
- * The element associated with this the operator, or {@code null} if the AST structure has not
- * been resolved, if the operator is not user definable, or if the operator could not be resolved.
+ * The element associated with this the operator based on the propagated type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
*/
- MethodElement _element;
+ MethodElement _propagatedElement;
+
/**
+ * The element associated with the operator based on the static type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
+ */
+ MethodElement _staticElement;
+
+ /**
* Initialize a newly created postfix expression.
* @param operand the expression computing the operand for the operator
* @param operator the postfix operator being applied to the operand
@@ -8341,6 +9692,7 @@
this._operand = becomeParentOf(operand);
this._operator = operator;
}
+
/**
* Initialize a newly created postfix expression.
* @param operand the expression computing the operand for the operator
@@ -8349,31 +9701,45 @@
PostfixExpression({Expression operand, Token operator}) : this.full(operand, operator);
accept(ASTVisitor visitor) => visitor.visitPostfixExpression(this);
Token get beginToken => _operand.beginToken;
+
/**
- * Return the element associated with the operator, or {@code null} if the AST structure has not
- * been resolved, if the operator is not user definable, or if the operator could not be resolved.
- * One example of the latter case is an operator that is not defined for the type of the operand.
+ * Return the element associated with the operator based on the propagated type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved. One example of the latter case is an operator that is
+ * not defined for the type of the operand.
* @return the element associated with the operator
*/
- MethodElement get element => _element;
+ MethodElement get element => _propagatedElement;
Token get endToken => _operator;
+
/**
* Return the expression computing the operand for the operator.
* @return the expression computing the operand for the operator
*/
Expression get operand => _operand;
+
/**
* Return the postfix operator being applied to the operand.
* @return the postfix operator being applied to the operand
*/
Token get operator => _operator;
+
/**
- * Set the element associated with the operator to the given element.
- * @param element the element associated with the operator
+ * Return the element associated with the operator based on the static type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved. One example of the latter case is an operator that is
+ * not defined for the type of the operand.
+ * @return the element associated with the operator
*/
+ MethodElement get staticElement => _staticElement;
+
+ /**
+ * Set the element associated with the operator based on the propagated type of the operand to the
+ * given element.
+ * @param element the element to be associated with the operator
+ */
void set element(MethodElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the expression computing the operand for the operator to the given expression.
* @param expression the expression computing the operand for the operator
@@ -8381,6 +9747,7 @@
void set operand(Expression expression) {
_operand = becomeParentOf(expression);
}
+
/**
* Set the postfix operator being applied to the operand to the given operator.
* @param operator the postfix operator being applied to the operand
@@ -8388,10 +9755,20 @@
void set operator(Token operator2) {
this._operator = operator2;
}
+
+ /**
+ * Set the element associated with the operator based on the static type of the operand to the
+ * given element.
+ * @param element the element to be associated with the operator
+ */
+ void set staticElement(MethodElement element) {
+ _staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_operand, visitor);
}
}
+
/**
* Instances of the class {@code PrefixExpression} represent a prefix unary expression.
* <pre>
@@ -8399,20 +9776,30 @@
* @coverage dart.engine.ast
*/
class PrefixExpression extends Expression {
+
/**
* The prefix operator being applied to the operand.
*/
Token _operator;
+
/**
* The expression computing the operand for the operator.
*/
Expression _operand;
+
/**
- * The element associated with the operator, or {@code null} if the AST structure has not been
- * resolved, if the operator is not user definable, or if the operator could not be resolved.
+ * The element associated with the operator based on the static type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
*/
- MethodElement _element;
+ MethodElement _staticElement;
+
/**
+ * The element associated with the operator based on the propagated type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved.
+ */
+ MethodElement _propagatedElement;
+
+ /**
* Initialize a newly created prefix expression.
* @param operator the prefix operator being applied to the operand
* @param operand the expression computing the operand for the operator
@@ -8421,6 +9808,7 @@
this._operator = operator;
this._operand = becomeParentOf(operand);
}
+
/**
* Initialize a newly created prefix expression.
* @param operator the prefix operator being applied to the operand
@@ -8429,31 +9817,45 @@
PrefixExpression({Token operator, Expression operand}) : this.full(operator, operand);
accept(ASTVisitor visitor) => visitor.visitPrefixExpression(this);
Token get beginToken => _operator;
+
/**
- * Return the element associated with the operator, or {@code null} if the AST structure has not
- * been resolved, if the operator is not user definable, or if the operator could not be resolved.
- * One example of the latter case is an operator that is not defined for the type of the operand.
+ * Return the element associated with the operator based on the propagated type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved. One example of the latter case is an operator that is
+ * not defined for the type of the operand.
* @return the element associated with the operator
*/
- MethodElement get element => _element;
+ MethodElement get element => _propagatedElement;
Token get endToken => _operand.endToken;
+
/**
* Return the expression computing the operand for the operator.
* @return the expression computing the operand for the operator
*/
Expression get operand => _operand;
+
/**
* Return the prefix operator being applied to the operand.
* @return the prefix operator being applied to the operand
*/
Token get operator => _operator;
+
/**
- * Set the element associated with the operator to the given element.
- * @param element the element associated with the operator
+ * Return the element associated with the operator based on the static type of the operand, or{@code null} if the AST structure has not been resolved, if the operator is not user definable,
+ * or if the operator could not be resolved. One example of the latter case is an operator that is
+ * not defined for the type of the operand.
+ * @return the element associated with the operator
*/
+ MethodElement get staticElement => _staticElement;
+
+ /**
+ * Set the element associated with the operator based on the propagated type of the operand to the
+ * given element.
+ * @param element the element to be associated with the operator
+ */
void set element(MethodElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the expression computing the operand for the operator to the given expression.
* @param expression the expression computing the operand for the operator
@@ -8461,6 +9863,7 @@
void set operand(Expression expression) {
_operand = becomeParentOf(expression);
}
+
/**
* Set the prefix operator being applied to the operand to the given operator.
* @param operator the prefix operator being applied to the operand
@@ -8468,10 +9871,20 @@
void set operator(Token operator2) {
this._operator = operator2;
}
+
+ /**
+ * Set the element associated with the operator based on the static type of the operand to the
+ * given element.
+ * @param element the static element to be associated with the operator
+ */
+ void set staticElement(MethodElement element) {
+ _staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_operand, visitor);
}
}
+
/**
* Instances of the class {@code PrefixedIdentifier} represent either an identifier that is prefixed
* or an access to an object property where the target of the property access is a simple
@@ -8481,18 +9894,22 @@
* @coverage dart.engine.ast
*/
class PrefixedIdentifier extends Identifier {
+
/**
* The prefix associated with the library in which the identifier is defined.
*/
SimpleIdentifier _prefix;
+
/**
* The period used to separate the prefix from the identifier.
*/
Token _period;
+
/**
* The identifier being prefixed.
*/
SimpleIdentifier _identifier;
+
/**
* Initialize a newly created prefixed identifier.
* @param prefix the identifier being prefixed
@@ -8504,6 +9921,7 @@
this._period = period;
this._identifier = becomeParentOf(identifier);
}
+
/**
* Initialize a newly created prefixed identifier.
* @param prefix the identifier being prefixed
@@ -8520,22 +9938,32 @@
return _identifier.element;
}
Token get endToken => _identifier.endToken;
+
/**
* Return the identifier being prefixed.
* @return the identifier being prefixed
*/
SimpleIdentifier get identifier => _identifier;
String get name => "${_prefix.name}.${_identifier.name}";
+
/**
* Return the period used to separate the prefix from the identifier.
* @return the period used to separate the prefix from the identifier
*/
Token get period => _period;
+
/**
* Return the prefix associated with the library in which the identifier is defined.
* @return the prefix associated with the library in which the identifier is defined
*/
SimpleIdentifier get prefix => _prefix;
+ Element get staticElement {
+ if (_identifier == null) {
+ return null;
+ }
+ return _identifier.staticElement;
+ }
+
/**
* Set the identifier being prefixed to the given identifier.
* @param identifier the identifier being prefixed
@@ -8543,6 +9971,7 @@
void set identifier(SimpleIdentifier identifier2) {
this._identifier = becomeParentOf(identifier2);
}
+
/**
* Set the period used to separate the prefix from the identifier to the given token.
* @param period the period used to separate the prefix from the identifier
@@ -8550,6 +9979,7 @@
void set period(Token period2) {
this._period = period2;
}
+
/**
* Set the prefix associated with the library in which the identifier is defined to the given
* identifier.
@@ -8563,6 +9993,7 @@
safelyVisitChild(_identifier, visitor);
}
}
+
/**
* Instances of the class {@code PropertyAccess} represent the access of a property of an object.
* <p>
@@ -8573,18 +10004,22 @@
* @coverage dart.engine.ast
*/
class PropertyAccess extends Expression {
+
/**
* The expression computing the object defining the property being accessed.
*/
Expression _target;
+
/**
* The property access operator.
*/
Token _operator;
+
/**
* The name of the property being accessed.
*/
SimpleIdentifier _propertyName;
+
/**
* Initialize a newly created property access expression.
* @param target the expression computing the object defining the property being accessed
@@ -8596,6 +10031,7 @@
this._operator = operator;
this._propertyName = becomeParentOf(propertyName);
}
+
/**
* Initialize a newly created property access expression.
* @param target the expression computing the object defining the property being accessed
@@ -8611,16 +10047,19 @@
return _operator;
}
Token get endToken => _propertyName.endToken;
+
/**
* Return the property access operator.
* @return the property access operator
*/
Token get operator => _operator;
+
/**
* Return the name of the property being accessed.
* @return the name of the property being accessed
*/
SimpleIdentifier get propertyName => _propertyName;
+
/**
* Return the expression used to compute the receiver of the invocation. If this invocation is not
* part of a cascade expression, then this is the same as {@link #getTarget()}. If this invocation
@@ -8642,6 +10081,7 @@
}
return _target;
}
+
/**
* Return the expression computing the object defining the property being accessed, or{@code null} if this property access is part of a cascade expression.
* @return the expression computing the object defining the property being accessed
@@ -8649,12 +10089,14 @@
*/
Expression get target => _target;
bool isAssignable() => true;
+
/**
* Return {@code true} if this expression is cascaded. If it is, then the target of this
* expression is not stored locally but is stored in the nearest ancestor that is a{@link CascadeExpression}.
* @return {@code true} if this expression is cascaded
*/
bool isCascaded() => _operator != null && identical(_operator.type, TokenType.PERIOD_PERIOD);
+
/**
* Set the property access operator to the given token.
* @param operator the property access operator
@@ -8662,6 +10104,7 @@
void set operator(Token operator2) {
this._operator = operator2;
}
+
/**
* Set the name of the property being accessed to the given identifier.
* @param identifier the name of the property being accessed
@@ -8669,6 +10112,7 @@
void set propertyName(SimpleIdentifier identifier) {
_propertyName = becomeParentOf(identifier);
}
+
/**
* Set the expression computing the object defining the property being accessed to the given
* expression.
@@ -8682,6 +10126,7 @@
safelyVisitChild(_propertyName, visitor);
}
}
+
/**
* Instances of the class {@code RedirectingConstructorInvocation} represent the invocation of a
* another constructor in the same class from within a constructor's initialization list.
@@ -8692,29 +10137,40 @@
* @coverage dart.engine.ast
*/
class RedirectingConstructorInvocation extends ConstructorInitializer {
+
/**
* The token for the 'this' keyword.
*/
Token _keyword;
+
/**
* The token for the period before the name of the constructor that is being invoked, or{@code null} if the unnamed constructor is being invoked.
*/
Token _period;
+
/**
* The name of the constructor that is being invoked, or {@code null} if the unnamed constructor
* is being invoked.
*/
SimpleIdentifier _constructorName;
+
/**
* The list of arguments to the constructor.
*/
ArgumentList _argumentList;
+
/**
- * The element associated with the constructor, or {@code null} if the AST structure has not been
- * resolved or if the constructor could not be resolved.
+ * The element associated with the constructor based on static type information, or {@code null}if the AST structure has not been resolved or if the constructor could not be resolved.
*/
- ConstructorElement _element;
+ ConstructorElement _staticElement;
+
/**
+ * The element associated with the constructor based on propagated type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
+ */
+ ConstructorElement _propagatedElement;
+
+ /**
* Initialize a newly created redirecting invocation to invoke the constructor with the given name
* with the given arguments.
* @param keyword the token for the 'this' keyword
@@ -8728,6 +10184,7 @@
this._constructorName = becomeParentOf(constructorName);
this._argumentList = becomeParentOf(argumentList);
}
+
/**
* Initialize a newly created redirecting invocation to invoke the constructor with the given name
* with the given arguments.
@@ -8738,42 +10195,56 @@
*/
RedirectingConstructorInvocation({Token keyword, Token period, SimpleIdentifier constructorName, ArgumentList argumentList}) : this.full(keyword, period, constructorName, argumentList);
accept(ASTVisitor visitor) => visitor.visitRedirectingConstructorInvocation(this);
+
/**
* Return the list of arguments to the constructor.
* @return the list of arguments to the constructor
*/
ArgumentList get argumentList => _argumentList;
Token get beginToken => _keyword;
+
/**
* Return the name of the constructor that is being invoked, or {@code null} if the unnamed
* constructor is being invoked.
* @return the name of the constructor that is being invoked
*/
SimpleIdentifier get constructorName => _constructorName;
+
/**
- * Return the element associated with the constructor, or {@code null} if the AST structure has
- * not been resolved or if the constructor could not be resolved.
+ * Return the element associated with the constructor based on propagated type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
* @return the element associated with the super constructor
*/
- ConstructorElement get element => _element;
+ ConstructorElement get element => _propagatedElement;
Token get endToken => _argumentList.endToken;
+
/**
* Return the token for the 'this' keyword.
* @return the token for the 'this' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the token for the period before the name of the constructor that is being invoked, or{@code null} if the unnamed constructor is being invoked.
* @return the token for the period before the name of the constructor that is being invoked
*/
Token get period => _period;
+
/**
+ * Return the element associated with the constructor based on static type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
+ * @return the element associated with the constructor
+ */
+ ConstructorElement get staticElement => _staticElement;
+
+ /**
* Set the list of arguments to the constructor to the given list.
* @param argumentList the list of arguments to the constructor
*/
void set argumentList(ArgumentList argumentList2) {
this._argumentList = becomeParentOf(argumentList2);
}
+
/**
* Set the name of the constructor that is being invoked to the given identifier.
* @param identifier the name of the constructor that is being invoked
@@ -8781,13 +10252,16 @@
void set constructorName(SimpleIdentifier identifier) {
_constructorName = becomeParentOf(identifier);
}
+
/**
- * Set the element associated with the constructor to the given element.
- * @param element the element associated with the constructor
+ * Set the element associated with the constructor based on propagated type information to the
+ * given element.
+ * @param element the element to be associated with the constructor
*/
void set element(ConstructorElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the token for the 'this' keyword to the given token.
* @param keyword the token for the 'this' keyword
@@ -8795,6 +10269,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the token for the period before the name of the constructor that is being invoked to the
* given token.
@@ -8803,11 +10278,21 @@
void set period(Token period2) {
this._period = period2;
}
+
+ /**
+ * Set the element associated with the constructor based on static type information to the given
+ * element.
+ * @param element the element to be associated with the constructor
+ */
+ void set staticElement(ConstructorElement element) {
+ this._staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_constructorName, visitor);
safelyVisitChild(_argumentList, visitor);
}
}
+
/**
* Instances of the class {@code RethrowExpression} represent a rethrow expression.
* <pre>
@@ -8817,10 +10302,12 @@
* @coverage dart.engine.ast
*/
class RethrowExpression extends Expression {
+
/**
* The token representing the 'rethrow' keyword.
*/
Token _keyword;
+
/**
* Initialize a newly created rethrow expression.
* @param keyword the token representing the 'rethrow' keyword
@@ -8828,6 +10315,7 @@
RethrowExpression.full(Token keyword) {
this._keyword = keyword;
}
+
/**
* Initialize a newly created rethrow expression.
* @param keyword the token representing the 'rethrow' keyword
@@ -8836,11 +10324,13 @@
accept(ASTVisitor visitor) => visitor.visitRethrowExpression(this);
Token get beginToken => _keyword;
Token get endToken => _keyword;
+
/**
* Return the token representing the 'rethrow' keyword.
* @return the token representing the 'rethrow' keyword
*/
Token get keyword => _keyword;
+
/**
* Set the token representing the 'rethrow' keyword to the given token.
* @param keyword the token representing the 'rethrow' keyword
@@ -8851,6 +10341,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code ReturnStatement} represent a return statement.
* <pre>
@@ -8860,19 +10351,23 @@
* @coverage dart.engine.ast
*/
class ReturnStatement extends Statement {
+
/**
* The token representing the 'return' keyword.
*/
Token _keyword;
+
/**
* The expression computing the value to be returned, or {@code null} if no explicit value was
* provided.
*/
Expression _expression;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created return statement.
* @param keyword the token representing the 'return' keyword
@@ -8884,6 +10379,7 @@
this._expression = becomeParentOf(expression);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created return statement.
* @param keyword the token representing the 'return' keyword
@@ -8894,22 +10390,26 @@
accept(ASTVisitor visitor) => visitor.visitReturnStatement(this);
Token get beginToken => _keyword;
Token get endToken => _semicolon;
+
/**
* Return the expression computing the value to be returned, or {@code null} if no explicit value
* was provided.
* @return the expression computing the value to be returned
*/
Expression get expression => _expression;
+
/**
* Return the token representing the 'return' keyword.
* @return the token representing the 'return' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Set the expression computing the value to be returned to the given expression.
* @param expression the expression computing the value to be returned
@@ -8917,6 +10417,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the token representing the 'return' keyword to the given token.
* @param keyword the token representing the 'return' keyword
@@ -8924,6 +10425,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -8935,6 +10437,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code ScriptTag} represent the script tag that can optionally occur at
* the beginning of a compilation unit.
@@ -8945,10 +10448,12 @@
* @coverage dart.engine.ast
*/
class ScriptTag extends ASTNode {
+
/**
* The token representing this script tag.
*/
Token _scriptTag;
+
/**
* Initialize a newly created script tag.
* @param scriptTag the token representing this script tag
@@ -8956,6 +10461,7 @@
ScriptTag.full(Token scriptTag) {
this._scriptTag = scriptTag;
}
+
/**
* Initialize a newly created script tag.
* @param scriptTag the token representing this script tag
@@ -8964,11 +10470,13 @@
accept(ASTVisitor visitor) => visitor.visitScriptTag(this);
Token get beginToken => _scriptTag;
Token get endToken => _scriptTag;
+
/**
* Return the token representing this script tag.
* @return the token representing this script tag
*/
Token get scriptTag => _scriptTag;
+
/**
* Set the token representing this script tag to the given script tag.
* @param scriptTag the token representing this script tag
@@ -8979,6 +10487,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code ShowCombinator} represent a combinator that restricts the names
* being imported to those in a given list.
@@ -8989,10 +10498,12 @@
* @coverage dart.engine.ast
*/
class ShowCombinator extends Combinator {
+
/**
* The list of names from the library that are made visible by this combinator.
*/
NodeList<SimpleIdentifier> _shownNames;
+
/**
* Initialize a newly created import show combinator.
* @param keyword the comma introducing the combinator
@@ -9002,6 +10513,7 @@
this._shownNames = new NodeList<SimpleIdentifier>(this);
this._shownNames.addAll(shownNames);
}
+
/**
* Initialize a newly created import show combinator.
* @param keyword the comma introducing the combinator
@@ -9010,6 +10522,7 @@
ShowCombinator({Token keyword, List<SimpleIdentifier> shownNames}) : this.full(keyword, shownNames);
accept(ASTVisitor visitor) => visitor.visitShowCombinator(this);
Token get endToken => _shownNames.endToken;
+
/**
* Return the list of names from the library that are made visible by this combinator.
* @return the list of names from the library that are made visible by this combinator
@@ -9019,6 +10532,7 @@
_shownNames.accept(visitor);
}
}
+
/**
* Instances of the class {@code SimpleFormalParameter} represent a simple formal parameter.
* <pre>
@@ -9027,16 +10541,19 @@
* @coverage dart.engine.ast
*/
class SimpleFormalParameter extends NormalFormalParameter {
+
/**
* The token representing either the 'final', 'const' or 'var' keyword, or {@code null} if no
* keyword was used.
*/
Token _keyword;
+
/**
* The name of the declared type of the parameter, or {@code null} if the parameter does not have
* a declared type.
*/
TypeName _type;
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -9049,6 +10566,7 @@
this._keyword = keyword;
this._type = becomeParentOf(type);
}
+
/**
* Initialize a newly created formal parameter.
* @param comment the documentation comment associated with this parameter
@@ -9068,11 +10586,13 @@
return identifier.beginToken;
}
Token get endToken => identifier.endToken;
+
/**
* Return the token representing either the 'final', 'const' or 'var' keyword.
* @return the token representing either the 'final', 'const' or 'var' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the name of the declared type of the parameter, or {@code null} if the parameter does
* not have a declared type.
@@ -9081,6 +10601,7 @@
TypeName get type => _type;
bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.CONST);
bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as KeywordToken)).keyword, Keyword.FINAL);
+
/**
* Set the token representing either the 'final', 'const' or 'var' keyword to the given token.
* @param keyword the token representing either the 'final', 'const' or 'var' keyword
@@ -9088,6 +10609,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the name of the declared type of the parameter to the given type name.
* @param typeName the name of the declared type of the parameter
@@ -9101,6 +10623,7 @@
safelyVisitChild(identifier, visitor);
}
}
+
/**
* Instances of the class {@code SimpleIdentifier} represent a simple identifier.
* <pre>
@@ -9112,22 +10635,31 @@
* @coverage dart.engine.ast
*/
class SimpleIdentifier extends Identifier {
+
/**
* The token representing the identifier.
*/
Token _token;
+
/**
- * The element associated with this identifier, or {@code null} if the AST structure has not been
- * resolved or if this identifier could not be resolved.
+ * The element associated with this identifier based on static type information, or {@code null}if the AST structure has not been resolved or if this identifier could not be resolved.
*/
- Element _element;
+ Element _staticElement;
+
/**
+ * The element associated with this identifier based on propagated type information, or{@code null} if the AST structure has not been resolved or if this identifier could not be
+ * resolved.
+ */
+ Element _propagatedElement;
+
+ /**
* Initialize a newly created identifier.
* @param token the token representing the identifier
*/
SimpleIdentifier.full(Token token) {
this._token = token;
}
+
/**
* Initialize a newly created identifier.
* @param token the token representing the identifier
@@ -9135,14 +10667,17 @@
SimpleIdentifier({Token token}) : this.full(token);
accept(ASTVisitor visitor) => visitor.visitSimpleIdentifier(this);
Token get beginToken => _token;
- Element get element => _element;
+ Element get element => _propagatedElement;
Token get endToken => _token;
String get name => _token.lexeme;
+ Element get staticElement => _staticElement;
+
/**
* Return the token representing the identifier.
* @return the token representing the identifier
*/
Token get token => _token;
+
/**
* Return {@code true} if this identifier is the name being declared in a declaration.
* @return {@code true} if this identifier is the name being declared in a declaration
@@ -9175,6 +10710,7 @@
}
return false;
}
+
/**
* Return {@code true} if this expression is computing a right-hand value.
* <p>
@@ -9211,6 +10747,7 @@
}
return true;
}
+
/**
* Return {@code true} if this expression is computing a left-hand value.
* <p>
@@ -9246,14 +10783,26 @@
return false;
}
bool isSynthetic() => _token.isSynthetic();
+
/**
- * Set the element associated with this identifier to the given element.
- * @param element the element associated with this identifier
+ * Set the element associated with this identifier based on propagated type information to the
+ * given element.
+ * @param element the element to be associated with this identifier
*/
void set element(Element element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
+ * Set the element associated with this identifier based on static type information to the given
+ * element.
+ * @param element the element to be associated with this identifier
+ */
+ void set staticElement(Element element) {
+ _staticElement = element;
+ }
+
+ /**
* Set the token representing the identifier to the given token.
* @param token the token representing the literal
*/
@@ -9263,6 +10812,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code SimpleStringLiteral} represent a string literal expression that
* does not contain any interpolations.
@@ -9285,14 +10835,17 @@
* @coverage dart.engine.ast
*/
class SimpleStringLiteral extends StringLiteral {
+
/**
* The token representing the literal.
*/
Token _literal;
+
/**
* The value of the literal.
*/
String _value;
+
/**
* Initialize a newly created simple string literal.
* @param literal the token representing the literal
@@ -9302,6 +10855,7 @@
this._literal = literal;
this._value = StringUtilities.intern(value);
}
+
/**
* Initialize a newly created simple string literal.
* @param literal the token representing the literal
@@ -9311,16 +10865,19 @@
accept(ASTVisitor visitor) => visitor.visitSimpleStringLiteral(this);
Token get beginToken => _literal;
Token get endToken => _literal;
+
/**
* Return the token representing the literal.
* @return the token representing the literal
*/
Token get literal => _literal;
+
/**
* Return the value of the literal.
* @return the value of the literal
*/
String get value => _value;
+
/**
* Return {@code true} if this string literal is a multi-line string.
* @return {@code true} if this string literal is a multi-line string
@@ -9331,12 +10888,14 @@
}
return _value.endsWith("\"\"\"") || _value.endsWith("'''");
}
+
/**
* Return {@code true} if this string literal is a raw string.
* @return {@code true} if this string literal is a raw string
*/
bool isRaw() => _value.codeUnitAt(0) == 0x40;
bool isSynthetic() => _literal.isSynthetic();
+
/**
* Set the token representing the literal to the given token.
* @param literal the token representing the literal
@@ -9344,6 +10903,7 @@
void set literal(Token literal2) {
this._literal = literal2;
}
+
/**
* Set the value of the literal to the given string.
* @param string the value of the literal
@@ -9353,7 +10913,11 @@
}
void visitChildren(ASTVisitor<Object> visitor) {
}
+ void appendStringValue(JavaStringBuilder builder) {
+ builder.append(value);
+ }
}
+
/**
* Instances of the class {@code Statement} defines the behavior common to nodes that represent a
* statement.
@@ -9363,6 +10927,7 @@
*/
abstract class Statement extends ASTNode {
}
+
/**
* Instances of the class {@code StringInterpolation} represent a string interpolation literal.
* <pre>
@@ -9373,10 +10938,12 @@
* @coverage dart.engine.ast
*/
class StringInterpolation extends StringLiteral {
+
/**
* The elements that will be composed to produce the resulting string.
*/
NodeList<InterpolationElement> _elements;
+
/**
* Initialize a newly created string interpolation expression.
* @param elements the elements that will be composed to produce the resulting string
@@ -9385,6 +10952,7 @@
this._elements = new NodeList<InterpolationElement>(this);
this._elements.addAll(elements);
}
+
/**
* Initialize a newly created string interpolation expression.
* @param elements the elements that will be composed to produce the resulting string
@@ -9392,6 +10960,7 @@
StringInterpolation({List<InterpolationElement> elements}) : this.full(elements);
accept(ASTVisitor visitor) => visitor.visitStringInterpolation(this);
Token get beginToken => _elements.beginToken;
+
/**
* Return the elements that will be composed to produce the resulting string.
* @return the elements that will be composed to produce the resulting string
@@ -9401,7 +10970,11 @@
void visitChildren(ASTVisitor<Object> visitor) {
_elements.accept(visitor);
}
+ void appendStringValue(JavaStringBuilder builder) {
+ throw new IllegalArgumentException();
+ }
}
+
/**
* Instances of the class {@code StringLiteral} represent a string literal expression.
* <pre>
@@ -9409,7 +10982,31 @@
* @coverage dart.engine.ast
*/
abstract class StringLiteral extends Literal {
+
+ /**
+ * Return the value of the string literal, or {@code null} if the string is not a constant string
+ * without any string interpolation.
+ * @return the value of the string literal
+ */
+ String get stringValue {
+ JavaStringBuilder builder = new JavaStringBuilder();
+ try {
+ appendStringValue(builder);
+ } on IllegalArgumentException catch (exception) {
+ return null;
+ }
+ return builder.toString();
+ }
+
+ /**
+ * Append the value of the given string literal to the given string builder.
+ * @param builder the builder to which the string's value is to be appended
+ * @throws IllegalArgumentException if the string is not a constant string without any string
+ * interpolation
+ */
+ void appendStringValue(JavaStringBuilder builder);
}
+
/**
* Instances of the class {@code SuperConstructorInvocation} represent the invocation of a
* superclass' constructor from within a constructor's initialization list.
@@ -9419,28 +11016,39 @@
* @coverage dart.engine.ast
*/
class SuperConstructorInvocation extends ConstructorInitializer {
+
/**
* The token for the 'super' keyword.
*/
Token _keyword;
+
/**
* The token for the period before the name of the constructor that is being invoked, or{@code null} if the unnamed constructor is being invoked.
*/
Token _period;
+
/**
* The name of the constructor that is being invoked, or {@code null} if the unnamed constructor
* is being invoked.
*/
SimpleIdentifier _constructorName;
+
/**
* The list of arguments to the constructor.
*/
ArgumentList _argumentList;
+
/**
- * The element associated with the constructor, or {@code null} if the AST structure has not been
+ * The element associated with the constructor based on static type information, or {@code null}if the AST structure has not been resolved or if the constructor could not be resolved.
+ */
+ ConstructorElement _staticElement;
+
+ /**
+ * The element associated with the constructor based on propagated type information, or {@code null} if the AST structure has not been
* resolved or if the constructor could not be resolved.
*/
- ConstructorElement _element;
+ ConstructorElement _propagatedElement;
+
/**
* Initialize a newly created super invocation to invoke the inherited constructor with the given
* name with the given arguments.
@@ -9455,6 +11063,7 @@
this._constructorName = becomeParentOf(constructorName);
this._argumentList = becomeParentOf(argumentList);
}
+
/**
* Initialize a newly created super invocation to invoke the inherited constructor with the given
* name with the given arguments.
@@ -9465,42 +11074,56 @@
*/
SuperConstructorInvocation({Token keyword, Token period, SimpleIdentifier constructorName, ArgumentList argumentList}) : this.full(keyword, period, constructorName, argumentList);
accept(ASTVisitor visitor) => visitor.visitSuperConstructorInvocation(this);
+
/**
* Return the list of arguments to the constructor.
* @return the list of arguments to the constructor
*/
ArgumentList get argumentList => _argumentList;
Token get beginToken => _keyword;
+
/**
* Return the name of the constructor that is being invoked, or {@code null} if the unnamed
* constructor is being invoked.
* @return the name of the constructor that is being invoked
*/
SimpleIdentifier get constructorName => _constructorName;
+
/**
- * Return the element associated with the constructor, or {@code null} if the AST structure has
- * not been resolved or if the constructor could not be resolved.
+ * Return the element associated with the constructor based on propagated type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
* @return the element associated with the super constructor
*/
- ConstructorElement get element => _element;
+ ConstructorElement get element => _propagatedElement;
Token get endToken => _argumentList.endToken;
+
/**
* Return the token for the 'super' keyword.
* @return the token for the 'super' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the token for the period before the name of the constructor that is being invoked, or{@code null} if the unnamed constructor is being invoked.
* @return the token for the period before the name of the constructor that is being invoked
*/
Token get period => _period;
+
/**
+ * Return the element associated with the constructor based on static type information, or{@code null} if the AST structure has not been resolved or if the constructor could not be
+ * resolved.
+ * @return the element associated with the constructor
+ */
+ ConstructorElement get staticElement => _staticElement;
+
+ /**
* Set the list of arguments to the constructor to the given list.
* @param argumentList the list of arguments to the constructor
*/
void set argumentList(ArgumentList argumentList2) {
this._argumentList = becomeParentOf(argumentList2);
}
+
/**
* Set the name of the constructor that is being invoked to the given identifier.
* @param identifier the name of the constructor that is being invoked
@@ -9508,13 +11131,16 @@
void set constructorName(SimpleIdentifier identifier) {
_constructorName = becomeParentOf(identifier);
}
+
/**
- * Set the element associated with the constructor to the given element.
- * @param element the element associated with the constructor
+ * Set the element associated with the constructor based on propagated type information to the
+ * given element.
+ * @param element the element to be associated with the constructor
*/
void set element(ConstructorElement element2) {
- this._element = element2;
+ _propagatedElement = element2;
}
+
/**
* Set the token for the 'super' keyword to the given token.
* @param keyword the token for the 'super' keyword
@@ -9522,6 +11148,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the token for the period before the name of the constructor that is being invoked to the
* given token.
@@ -9530,11 +11157,21 @@
void set period(Token period2) {
this._period = period2;
}
+
+ /**
+ * Set the element associated with the constructor based on static type information to the given
+ * element.
+ * @param element the element to be associated with the constructor
+ */
+ void set staticElement(ConstructorElement element) {
+ this._staticElement = element;
+ }
void visitChildren(ASTVisitor<Object> visitor) {
safelyVisitChild(_constructorName, visitor);
safelyVisitChild(_argumentList, visitor);
}
}
+
/**
* Instances of the class {@code SuperExpression} represent a super expression.
* <pre>
@@ -9544,10 +11181,12 @@
* @coverage dart.engine.ast
*/
class SuperExpression extends Expression {
+
/**
* The token representing the keyword.
*/
Token _keyword;
+
/**
* Initialize a newly created super expression.
* @param keyword the token representing the keyword
@@ -9555,6 +11194,7 @@
SuperExpression.full(Token keyword) {
this._keyword = keyword;
}
+
/**
* Initialize a newly created super expression.
* @param keyword the token representing the keyword
@@ -9563,11 +11203,13 @@
accept(ASTVisitor visitor) => visitor.visitSuperExpression(this);
Token get beginToken => _keyword;
Token get endToken => _keyword;
+
/**
* Return the token representing the keyword.
* @return the token representing the keyword
*/
Token get keyword => _keyword;
+
/**
* Set the token representing the keyword to the given token.
* @param keyword the token representing the keyword
@@ -9578,6 +11220,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code SwitchCase} represent the case in a switch statement.
* <pre>
@@ -9585,10 +11228,12 @@
* @coverage dart.engine.ast
*/
class SwitchCase extends SwitchMember {
+
/**
* The expression controlling whether the statements will be executed.
*/
Expression _expression;
+
/**
* Initialize a newly created switch case.
* @param labels the labels associated with the switch member
@@ -9600,6 +11245,7 @@
SwitchCase.full(List<Label> labels, Token keyword, Expression expression, Token colon, List<Statement> statements) : super.full(labels, keyword, colon, statements) {
this._expression = becomeParentOf(expression);
}
+
/**
* Initialize a newly created switch case.
* @param labels the labels associated with the switch member
@@ -9610,11 +11256,13 @@
*/
SwitchCase({List<Label> labels, Token keyword, Expression expression, Token colon, List<Statement> statements}) : this.full(labels, keyword, expression, colon, statements);
accept(ASTVisitor visitor) => visitor.visitSwitchCase(this);
+
/**
* Return the expression controlling whether the statements will be executed.
* @return the expression controlling whether the statements will be executed
*/
Expression get expression => _expression;
+
/**
* Set the expression controlling whether the statements will be executed to the given expression.
* @param expression the expression controlling whether the statements will be executed
@@ -9628,6 +11276,7 @@
statements.accept(visitor);
}
}
+
/**
* Instances of the class {@code SwitchDefault} represent the default case in a switch statement.
* <pre>
@@ -9635,6 +11284,7 @@
* @coverage dart.engine.ast
*/
class SwitchDefault extends SwitchMember {
+
/**
* Initialize a newly created switch default.
* @param labels the labels associated with the switch member
@@ -9644,6 +11294,7 @@
*/
SwitchDefault.full(List<Label> labels, Token keyword, Token colon, List<Statement> statements) : super.full(labels, keyword, colon, statements) {
}
+
/**
* Initialize a newly created switch default.
* @param labels the labels associated with the switch member
@@ -9658,6 +11309,7 @@
statements.accept(visitor);
}
}
+
/**
* The abstract class {@code SwitchMember} defines the behavior common to objects representing
* elements within a switch statement.
@@ -9669,22 +11321,27 @@
* @coverage dart.engine.ast
*/
abstract class SwitchMember extends ASTNode {
+
/**
* The labels associated with the switch member.
*/
NodeList<Label> _labels;
+
/**
* The token representing the 'case' or 'default' keyword.
*/
Token _keyword;
+
/**
* The colon separating the keyword or the expression from the statements.
*/
Token _colon;
+
/**
* The statements that will be executed if this switch member is selected.
*/
NodeList<Statement> _statements;
+
/**
* Initialize a newly created switch member.
* @param labels the labels associated with the switch member
@@ -9700,6 +11357,7 @@
this._colon = colon;
this._statements.addAll(statements);
}
+
/**
* Initialize a newly created switch member.
* @param labels the labels associated with the switch member
@@ -9714,6 +11372,7 @@
}
return _keyword;
}
+
/**
* Return the colon separating the keyword or the expression from the statements.
* @return the colon separating the keyword or the expression from the statements
@@ -9725,21 +11384,25 @@
}
return _colon;
}
+
/**
* Return the token representing the 'case' or 'default' keyword.
* @return the token representing the 'case' or 'default' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the labels associated with the switch member.
* @return the labels associated with the switch member
*/
NodeList<Label> get labels => _labels;
+
/**
* Return the statements that will be executed if this switch member is selected.
* @return the statements that will be executed if this switch member is selected
*/
NodeList<Statement> get statements => _statements;
+
/**
* Set the colon separating the keyword or the expression from the statements to the given token.
* @param colon the colon separating the keyword or the expression from the statements
@@ -9747,6 +11410,7 @@
void set colon(Token colon2) {
this._colon = colon2;
}
+
/**
* Set the token representing the 'case' or 'default' keyword to the given token.
* @param keyword the token representing the 'case' or 'default' keyword
@@ -9755,6 +11419,7 @@
this._keyword = keyword2;
}
}
+
/**
* Instances of the class {@code SwitchStatement} represent a switch statement.
* <pre>
@@ -9764,34 +11429,42 @@
* @coverage dart.engine.ast
*/
class SwitchStatement extends Statement {
+
/**
* The token representing the 'switch' keyword.
*/
Token _keyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The expression used to determine which of the switch members will be selected.
*/
Expression _expression;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The left curly bracket.
*/
Token _leftBracket;
+
/**
* The switch members that can be selected by the expression.
*/
NodeList<SwitchMember> _members;
+
/**
* The right curly bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created switch statement.
* @param keyword the token representing the 'switch' keyword
@@ -9812,6 +11485,7 @@
this._members.addAll(members);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created switch statement.
* @param keyword the token representing the 'switch' keyword
@@ -9826,41 +11500,49 @@
accept(ASTVisitor visitor) => visitor.visitSwitchStatement(this);
Token get beginToken => _keyword;
Token get endToken => _rightBracket;
+
/**
* Return the expression used to determine which of the switch members will be selected.
* @return the expression used to determine which of the switch members will be selected
*/
Expression get expression => _expression;
+
/**
* Return the token representing the 'switch' keyword.
* @return the token representing the 'switch' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the left curly bracket.
* @return the left curly bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the switch members that can be selected by the expression.
* @return the switch members that can be selected by the expression
*/
NodeList<SwitchMember> get members => _members;
+
/**
* Return the right curly bracket.
* @return the right curly bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the expression used to determine which of the switch members will be selected to the given
* expression.
@@ -9869,6 +11551,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the token representing the 'switch' keyword to the given token.
* @param keyword the token representing the 'switch' keyword
@@ -9876,6 +11559,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the left curly bracket to the given token.
* @param leftBracket the left curly bracket
@@ -9883,6 +11567,7 @@
void set leftBracket(Token leftBracket2) {
this._leftBracket = leftBracket2;
}
+
/**
* Set the left parenthesis to the given token.
* @param leftParenthesis the left parenthesis
@@ -9890,6 +11575,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the right curly bracket to the given token.
* @param rightBracket the right curly bracket
@@ -9897,6 +11583,7 @@
void set rightBracket(Token rightBracket2) {
this._rightBracket = rightBracket2;
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -9909,6 +11596,7 @@
_members.accept(visitor);
}
}
+
/**
* Instances of the class {@code ThisExpression} represent a this expression.
* <pre>
@@ -9918,10 +11606,12 @@
* @coverage dart.engine.ast
*/
class ThisExpression extends Expression {
+
/**
* The token representing the keyword.
*/
Token _keyword;
+
/**
* Initialize a newly created this expression.
* @param keyword the token representing the keyword
@@ -9929,6 +11619,7 @@
ThisExpression.full(Token keyword) {
this._keyword = keyword;
}
+
/**
* Initialize a newly created this expression.
* @param keyword the token representing the keyword
@@ -9937,11 +11628,13 @@
accept(ASTVisitor visitor) => visitor.visitThisExpression(this);
Token get beginToken => _keyword;
Token get endToken => _keyword;
+
/**
* Return the token representing the keyword.
* @return the token representing the keyword
*/
Token get keyword => _keyword;
+
/**
* Set the token representing the keyword to the given token.
* @param keyword the token representing the keyword
@@ -9952,6 +11645,7 @@
void visitChildren(ASTVisitor<Object> visitor) {
}
}
+
/**
* Instances of the class {@code ThrowExpression} represent a throw expression.
* <pre>
@@ -9960,14 +11654,17 @@
* @coverage dart.engine.ast
*/
class ThrowExpression extends Expression {
+
/**
* The token representing the 'throw' keyword.
*/
Token _keyword;
+
/**
* The expression computing the exception to be thrown.
*/
Expression _expression;
+
/**
* Initialize a newly created throw expression.
* @param keyword the token representing the 'throw' keyword
@@ -9977,6 +11674,7 @@
this._keyword = keyword;
this._expression = becomeParentOf(expression);
}
+
/**
* Initialize a newly created throw expression.
* @param keyword the token representing the 'throw' keyword
@@ -9991,16 +11689,19 @@
}
return _keyword;
}
+
/**
* Return the expression computing the exception to be thrown.
* @return the expression computing the exception to be thrown
*/
Expression get expression => _expression;
+
/**
* Return the token representing the 'throw' keyword.
* @return the token representing the 'throw' keyword
*/
Token get keyword => _keyword;
+
/**
* Set the expression computing the exception to be thrown to the given expression.
* @param expression the expression computing the exception to be thrown
@@ -10008,6 +11709,7 @@
void set expression(Expression expression2) {
this._expression = becomeParentOf(expression2);
}
+
/**
* Set the token representing the 'throw' keyword to the given token.
* @param keyword the token representing the 'throw' keyword
@@ -10019,6 +11721,7 @@
safelyVisitChild(_expression, visitor);
}
}
+
/**
* Instances of the class {@code TopLevelVariableDeclaration} represent the declaration of one or
* more top-level variables of the same type.
@@ -10030,14 +11733,17 @@
* @coverage dart.engine.ast
*/
class TopLevelVariableDeclaration extends CompilationUnitMember {
+
/**
* The top-level variables being declared.
*/
VariableDeclarationList _variableList;
+
/**
* The semicolon terminating the declaration.
*/
Token _semicolon;
+
/**
* Initialize a newly created top-level variable declaration.
* @param comment the documentation comment associated with this variable
@@ -10049,6 +11755,7 @@
this._variableList = becomeParentOf(variableList);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created top-level variable declaration.
* @param comment the documentation comment associated with this variable
@@ -10060,16 +11767,19 @@
accept(ASTVisitor visitor) => visitor.visitTopLevelVariableDeclaration(this);
Element get element => null;
Token get endToken => _semicolon;
+
/**
* Return the semicolon terminating the declaration.
* @return the semicolon terminating the declaration
*/
Token get semicolon => _semicolon;
+
/**
* Return the top-level variables being declared.
* @return the top-level variables being declared
*/
VariableDeclarationList get variables => _variableList;
+
/**
* Set the semicolon terminating the declaration to the given token.
* @param semicolon the semicolon terminating the declaration
@@ -10077,6 +11787,7 @@
void set semicolon(Token semicolon2) {
this._semicolon = semicolon2;
}
+
/**
* Set the top-level variables being declared to the given list of variables.
* @param variableList the top-level variables being declared
@@ -10090,6 +11801,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken;
}
+
/**
* Instances of the class {@code TryStatement} represent a try statement.
* <pre>
@@ -10100,28 +11812,34 @@
* @coverage dart.engine.ast
*/
class TryStatement extends Statement {
+
/**
* The token representing the 'try' keyword.
*/
Token _tryKeyword;
+
/**
* The body of the statement.
*/
Block _body;
+
/**
* The catch clauses contained in the try statement.
*/
NodeList<CatchClause> _catchClauses;
+
/**
* The token representing the 'finally' keyword, or {@code null} if the statement does not contain
* a finally clause.
*/
Token _finallyKeyword;
+
/**
* The finally clause contained in the try statement, or {@code null} if the statement does not
* contain a finally clause.
*/
Block _finallyClause;
+
/**
* Initialize a newly created try statement.
* @param tryKeyword the token representing the 'try' keyword
@@ -10138,6 +11856,7 @@
this._finallyKeyword = finallyKeyword;
this._finallyClause = becomeParentOf(finallyClause);
}
+
/**
* Initialize a newly created try statement.
* @param tryKeyword the token representing the 'try' keyword
@@ -10149,11 +11868,13 @@
TryStatement({Token tryKeyword, Block body, List<CatchClause> catchClauses, Token finallyKeyword, Block finallyClause}) : this.full(tryKeyword, body, catchClauses, finallyKeyword, finallyClause);
accept(ASTVisitor visitor) => visitor.visitTryStatement(this);
Token get beginToken => _tryKeyword;
+
/**
* Return the body of the statement.
* @return the body of the statement
*/
Block get body => _body;
+
/**
* Return the catch clauses contained in the try statement.
* @return the catch clauses contained in the try statement
@@ -10169,23 +11890,27 @@
}
return _body.endToken;
}
+
/**
* Return the finally clause contained in the try statement, or {@code null} if the statement does
* not contain a finally clause.
* @return the finally clause contained in the try statement
*/
Block get finallyClause => _finallyClause;
+
/**
* Return the token representing the 'finally' keyword, or {@code null} if the statement does not
* contain a finally clause.
* @return the token representing the 'finally' keyword
*/
Token get finallyKeyword => _finallyKeyword;
+
/**
* Return the token representing the 'try' keyword.
* @return the token representing the 'try' keyword
*/
Token get tryKeyword => _tryKeyword;
+
/**
* Set the body of the statement to the given block.
* @param block the body of the statement
@@ -10193,6 +11918,7 @@
void set body(Block block) {
_body = becomeParentOf(block);
}
+
/**
* Set the finally clause contained in the try statement to the given block.
* @param block the finally clause contained in the try statement
@@ -10200,6 +11926,7 @@
void set finallyClause(Block block) {
_finallyClause = becomeParentOf(block);
}
+
/**
* Set the token representing the 'finally' keyword to the given token.
* @param finallyKeyword the token representing the 'finally' keyword
@@ -10207,6 +11934,7 @@
void set finallyKeyword(Token finallyKeyword2) {
this._finallyKeyword = finallyKeyword2;
}
+
/**
* Set the token representing the 'try' keyword to the given token.
* @param tryKeyword the token representing the 'try' keyword
@@ -10220,6 +11948,7 @@
safelyVisitChild(_finallyClause, visitor);
}
}
+
/**
* The abstract class {@code TypeAlias} defines the behavior common to declarations of type aliases.
* <pre>
@@ -10232,14 +11961,17 @@
* @coverage dart.engine.ast
*/
abstract class TypeAlias extends CompilationUnitMember {
+
/**
* The token representing the 'typedef' keyword.
*/
Token _keyword;
+
/**
* The semicolon terminating the declaration.
*/
Token _semicolon;
+
/**
* Initialize a newly created type alias.
* @param comment the documentation comment associated with this type alias
@@ -10251,6 +11983,7 @@
this._keyword = keyword;
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created type alias.
* @param comment the documentation comment associated with this type alias
@@ -10260,16 +11993,19 @@
*/
TypeAlias({Comment comment, List<Annotation> metadata, Token keyword, Token semicolon}) : this.full(comment, metadata, keyword, semicolon);
Token get endToken => _semicolon;
+
/**
* Return the token representing the 'typedef' keyword.
* @return the token representing the 'typedef' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the semicolon terminating the declaration.
* @return the semicolon terminating the declaration
*/
Token get semicolon => _semicolon;
+
/**
* Set the token representing the 'typedef' keyword to the given token.
* @param keyword the token representing the 'typedef' keyword
@@ -10277,6 +12013,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the semicolon terminating the declaration to the given token.
* @param semicolon the semicolon terminating the declaration
@@ -10286,6 +12023,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _keyword;
}
+
/**
* Instances of the class {@code TypeArgumentList} represent a list of type arguments.
* <pre>
@@ -10295,18 +12033,22 @@
* @coverage dart.engine.ast
*/
class TypeArgumentList extends ASTNode {
+
/**
* The left bracket.
*/
Token _leftBracket;
+
/**
* The type arguments associated with the type.
*/
NodeList<TypeName> _arguments;
+
/**
* The right bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created list of type arguments.
* @param leftBracket the left bracket
@@ -10319,6 +12061,7 @@
this._arguments.addAll(arguments);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created list of type arguments.
* @param leftBracket the left bracket
@@ -10327,6 +12070,7 @@
*/
TypeArgumentList({Token leftBracket, List<TypeName> arguments, Token rightBracket}) : this.full(leftBracket, arguments, rightBracket);
accept(ASTVisitor visitor) => visitor.visitTypeArgumentList(this);
+
/**
* Return the type arguments associated with the type.
* @return the type arguments associated with the type
@@ -10334,16 +12078,19 @@
NodeList<TypeName> get arguments => _arguments;
Token get beginToken => _leftBracket;
Token get endToken => _rightBracket;
+
/**
* Return the left bracket.
* @return the left bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right bracket.
* @return the right bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Set the left bracket to the given token.
* @param leftBracket the left bracket
@@ -10351,6 +12098,7 @@
void set leftBracket(Token leftBracket2) {
this._leftBracket = leftBracket2;
}
+
/**
* Set the right bracket to the given token.
* @param rightBracket the right bracket
@@ -10362,6 +12110,7 @@
_arguments.accept(visitor);
}
}
+
/**
* Instances of the class {@code TypeName} represent the name of a type, which can optionally
* include type arguments.
@@ -10371,18 +12120,22 @@
* @coverage dart.engine.ast
*/
class TypeName extends ASTNode {
+
/**
* The name of the type.
*/
Identifier _name;
+
/**
* The type arguments associated with the type, or {@code null} if there are no type arguments.
*/
TypeArgumentList _typeArguments;
+
/**
* The type being named, or {@code null} if the AST structure has not been resolved.
*/
Type2 _type;
+
/**
* Initialize a newly created type name.
* @param name the name of the type
@@ -10393,6 +12146,7 @@
this._name = becomeParentOf(name);
this._typeArguments = becomeParentOf(typeArguments);
}
+
/**
* Initialize a newly created type name.
* @param name the name of the type
@@ -10408,16 +12162,19 @@
}
return _name.endToken;
}
+
/**
* Return the name of the type.
* @return the name of the type
*/
Identifier get name => _name;
+
/**
* Return the type being named, or {@code null} if the AST structure has not been resolved.
* @return the type being named
*/
Type2 get type => _type;
+
/**
* Return the type arguments associated with the type, or {@code null} if there are no type
* arguments.
@@ -10425,6 +12182,7 @@
*/
TypeArgumentList get typeArguments => _typeArguments;
bool isSynthetic() => _name.isSynthetic() && _typeArguments == null;
+
/**
* Set the name of the type to the given identifier.
* @param identifier the name of the type
@@ -10432,6 +12190,7 @@
void set name(Identifier identifier) {
_name = becomeParentOf(identifier);
}
+
/**
* Set the type being named to the given type.
* @param type the type being named
@@ -10439,6 +12198,7 @@
void set type(Type2 type2) {
this._type = type2;
}
+
/**
* Set the type arguments associated with the type to the given type arguments.
* @param typeArguments the type arguments associated with the type
@@ -10451,6 +12211,7 @@
safelyVisitChild(_typeArguments, visitor);
}
}
+
/**
* Instances of the class {@code TypeParameter} represent a type parameter.
* <pre>
@@ -10459,20 +12220,24 @@
* @coverage dart.engine.ast
*/
class TypeParameter extends Declaration {
+
/**
* The name of the type parameter.
*/
SimpleIdentifier _name;
+
/**
* The token representing the 'extends' keyword, or {@code null} if there was no explicit upper
* bound.
*/
Token _keyword;
+
/**
* The name of the upper bound for legal arguments, or {@code null} if there was no explicit upper
* bound.
*/
TypeName _bound;
+
/**
* Initialize a newly created type parameter.
* @param comment the documentation comment associated with the type parameter
@@ -10486,6 +12251,7 @@
this._keyword = keyword;
this._bound = becomeParentOf(bound);
}
+
/**
* Initialize a newly created type parameter.
* @param comment the documentation comment associated with the type parameter
@@ -10496,6 +12262,7 @@
*/
TypeParameter({Comment comment, List<Annotation> metadata, SimpleIdentifier name, Token keyword, TypeName bound}) : this.full(comment, metadata, name, keyword, bound);
accept(ASTVisitor visitor) => visitor.visitTypeParameter(this);
+
/**
* Return the name of the upper bound for legal arguments, or {@code null} if there was no
* explicit upper bound.
@@ -10509,16 +12276,19 @@
}
return _bound.endToken;
}
+
/**
* Return the token representing the 'assert' keyword.
* @return the token representing the 'assert' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the name of the type parameter.
* @return the name of the type parameter
*/
SimpleIdentifier get name => _name;
+
/**
* Set the name of the upper bound for legal arguments to the given type name.
* @param typeName the name of the upper bound for legal arguments
@@ -10526,6 +12296,7 @@
void set bound(TypeName typeName) {
_bound = becomeParentOf(typeName);
}
+
/**
* Set the token representing the 'assert' keyword to the given token.
* @param keyword the token representing the 'assert' keyword
@@ -10533,6 +12304,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the name of the type parameter to the given identifier.
* @param identifier the name of the type parameter
@@ -10547,6 +12319,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
}
+
/**
* Instances of the class {@code TypeParameterList} represent type parameters within a declaration.
* <pre>
@@ -10556,18 +12329,22 @@
* @coverage dart.engine.ast
*/
class TypeParameterList extends ASTNode {
+
/**
* The left angle bracket.
*/
Token _leftBracket;
+
/**
* The type parameters in the list.
*/
NodeList<TypeParameter> _typeParameters;
+
/**
* The right angle bracket.
*/
Token _rightBracket;
+
/**
* Initialize a newly created list of type parameters.
* @param leftBracket the left angle bracket
@@ -10580,6 +12357,7 @@
this._typeParameters.addAll(typeParameters);
this._rightBracket = rightBracket;
}
+
/**
* Initialize a newly created list of type parameters.
* @param leftBracket the left angle bracket
@@ -10590,16 +12368,19 @@
accept(ASTVisitor visitor) => visitor.visitTypeParameterList(this);
Token get beginToken => _leftBracket;
Token get endToken => _rightBracket;
+
/**
* Return the left angle bracket.
* @return the left angle bracket
*/
Token get leftBracket => _leftBracket;
+
/**
* Return the right angle bracket.
* @return the right angle bracket
*/
Token get rightBracket => _rightBracket;
+
/**
* Return the type parameters for the type.
* @return the type parameters for the type
@@ -10609,6 +12390,7 @@
_typeParameters.accept(visitor);
}
}
+
/**
* The abstract class {@code TypedLiteral} defines the behavior common to literals that have a type
* associated with them.
@@ -10617,16 +12399,19 @@
* @coverage dart.engine.ast
*/
abstract class TypedLiteral extends Literal {
+
/**
* The const modifier associated with this literal, or {@code null} if the literal is not a
* constant.
*/
Token _modifier;
+
/**
* The type argument associated with this literal, or {@code null} if no type arguments were
* declared.
*/
TypeArgumentList _typeArguments;
+
/**
* Initialize a newly created typed literal.
* @param modifier the const modifier associated with this literal
@@ -10637,6 +12422,7 @@
this._modifier = modifier;
this._typeArguments = becomeParentOf(typeArguments);
}
+
/**
* Initialize a newly created typed literal.
* @param modifier the const modifier associated with this literal
@@ -10644,17 +12430,20 @@
* arguments were declared
*/
TypedLiteral({Token modifier, TypeArgumentList typeArguments}) : this.full(modifier, typeArguments);
+
/**
* Return the const modifier associated with this literal.
* @return the const modifier associated with this literal
*/
Token get modifier => _modifier;
+
/**
* Return the type argument associated with this literal, or {@code null} if no type arguments
* were declared.
* @return the type argument associated with this literal
*/
TypeArgumentList get typeArguments => _typeArguments;
+
/**
* Set the modifiers associated with this literal to the given modifiers.
* @param modifiers the modifiers associated with this literal
@@ -10662,6 +12451,7 @@
void set modifier(Token modifier2) {
this._modifier = modifier2;
}
+
/**
* Set the type argument associated with this literal to the given arguments.
* @param typeArguments the type argument associated with this literal
@@ -10673,6 +12463,7 @@
safelyVisitChild(_typeArguments, visitor);
}
}
+
/**
* The abstract class {@code UriBasedDirective} defines the behavior common to nodes that represent
* a directive that references a URI.
@@ -10681,10 +12472,12 @@
* @coverage dart.engine.ast
*/
abstract class UriBasedDirective extends Directive {
+
/**
* The URI referenced by this directive.
*/
StringLiteral _uri;
+
/**
* Initialize a newly create URI-based directive.
* @param comment the documentation comment associated with this directive
@@ -10694,6 +12487,7 @@
UriBasedDirective.full(Comment comment, List<Annotation> metadata, StringLiteral uri) : super.full(comment, metadata) {
this._uri = becomeParentOf(uri);
}
+
/**
* Initialize a newly create URI-based directive.
* @param comment the documentation comment associated with this directive
@@ -10701,12 +12495,22 @@
* @param uri the URI referenced by this directive
*/
UriBasedDirective({Comment comment, List<Annotation> metadata, StringLiteral uri}) : this.full(comment, metadata, uri);
+
/**
* Return the URI referenced by this directive.
* @return the URI referenced by this directive
*/
StringLiteral get uri => _uri;
+
/**
+ * Return the element associated with the URI of this directive, or {@code null} if the AST
+ * structure has not been resolved or if this URI could not be resolved. Examples of the latter
+ * case include a directive that contains an invalid URL or a URL that does not exist.
+ * @return the element associated with this directive
+ */
+ Element get uriElement;
+
+ /**
* Set the URI referenced by this directive to the given URI.
* @param uri the URI referenced by this directive
*/
@@ -10718,6 +12522,7 @@
safelyVisitChild(_uri, visitor);
}
}
+
/**
* Instances of the class {@code VariableDeclaration} represent an identifier that has an initial
* value associated with it. Instances of this class are always children of the class{@link VariableDeclarationList}.
@@ -10727,20 +12532,24 @@
* @coverage dart.engine.ast
*/
class VariableDeclaration extends Declaration {
+
/**
* The name of the variable being declared.
*/
SimpleIdentifier _name;
+
/**
* The equal sign separating the variable name from the initial value, or {@code null} if the
* initial value was not specified.
*/
Token _equals;
+
/**
* The expression used to compute the initial value for the variable, or {@code null} if the
* initial value was not specified.
*/
Expression _initializer;
+
/**
* Initialize a newly created variable declaration.
* @param comment the documentation comment associated with this declaration
@@ -10754,6 +12563,7 @@
this._equals = equals;
this._initializer = becomeParentOf(initializer);
}
+
/**
* Initialize a newly created variable declaration.
* @param comment the documentation comment associated with this declaration
@@ -10771,23 +12581,27 @@
}
return _name.endToken;
}
+
/**
* Return the equal sign separating the variable name from the initial value, or {@code null} if
* the initial value was not specified.
* @return the equal sign separating the variable name from the initial value
*/
Token get equals => _equals;
+
/**
* Return the expression used to compute the initial value for the variable, or {@code null} if
* the initial value was not specified.
* @return the expression used to compute the initial value for the variable
*/
Expression get initializer => _initializer;
+
/**
* Return the name of the variable being declared.
* @return the name of the variable being declared
*/
SimpleIdentifier get name => _name;
+
/**
* Return {@code true} if this variable was declared with the 'const' modifier.
* @return {@code true} if this variable was declared with the 'const' modifier
@@ -10796,6 +12610,7 @@
ASTNode parent2 = parent;
return parent2 is VariableDeclarationList && ((parent2 as VariableDeclarationList)).isConst();
}
+
/**
* Return {@code true} if this variable was declared with the 'final' modifier. Variables that are
* declared with the 'const' modifier will return {@code false} even though they are implicitly
@@ -10806,6 +12621,7 @@
ASTNode parent2 = parent;
return parent2 is VariableDeclarationList && ((parent2 as VariableDeclarationList)).isFinal();
}
+
/**
* Set the equal sign separating the variable name from the initial value to the given token.
* @param equals the equal sign separating the variable name from the initial value
@@ -10813,6 +12629,7 @@
void set equals(Token equals2) {
this._equals = equals2;
}
+
/**
* Set the expression used to compute the initial value for the variable to the given expression.
* @param initializer the expression used to compute the initial value for the variable
@@ -10820,6 +12637,7 @@
void set initializer(Expression initializer2) {
this._initializer = becomeParentOf(initializer2);
}
+
/**
* Set the name of the variable being declared to the given identifier.
* @param name the name of the variable being declared
@@ -10834,6 +12652,7 @@
}
Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
}
+
/**
* Instances of the class {@code VariableDeclarationList} represent the declaration of one or more
* variables of the same type.
@@ -10848,19 +12667,23 @@
* @coverage dart.engine.ast
*/
class VariableDeclarationList extends AnnotatedNode {
+
/**
* The token representing the 'final', 'const' or 'var' keyword, or {@code null} if no keyword was
* included.
*/
Token _keyword;
+
/**
* The type of the variables being declared, or {@code null} if no type was provided.
*/
TypeName _type;
+
/**
* A list containing the individual variables being declared.
*/
NodeList<VariableDeclaration> _variables;
+
/**
* Initialize a newly created variable declaration list.
* @param comment the documentation comment associated with this declaration list
@@ -10875,6 +12698,7 @@
this._type = becomeParentOf(type);
this._variables.addAll(variables);
}
+
/**
* Initialize a newly created variable declaration list.
* @param comment the documentation comment associated with this declaration list
@@ -10886,27 +12710,32 @@
VariableDeclarationList({Comment comment, List<Annotation> metadata, Token keyword, TypeName type, List<VariableDeclaration> variables}) : this.full(comment, metadata, keyword, type, variables);
accept(ASTVisitor visitor) => visitor.visitVariableDeclarationList(this);
Token get endToken => _variables.endToken;
+
/**
* Return the token representing the 'final', 'const' or 'var' keyword, or {@code null} if no
* keyword was included.
* @return the token representing the 'final', 'const' or 'var' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the type of the variables being declared, or {@code null} if no type was provided.
* @return the type of the variables being declared
*/
TypeName get type => _type;
+
/**
* Return a list containing the individual variables being declared.
* @return a list containing the individual variables being declared
*/
NodeList<VariableDeclaration> get variables => _variables;
+
/**
* Return {@code true} if the variables in this list were declared with the 'const' modifier.
* @return {@code true} if the variables in this list were declared with the 'const' modifier
*/
bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordToken)).keyword, Keyword.CONST);
+
/**
* Return {@code true} if the variables in this list were declared with the 'final' modifier.
* Variables that are declared with the 'const' modifier will return {@code false} even though
@@ -10914,6 +12743,7 @@
* @return {@code true} if the variables in this list were declared with the 'final' modifier
*/
bool isFinal() => _keyword is KeywordToken && identical(((_keyword as KeywordToken)).keyword, Keyword.FINAL);
+
/**
* Set the token representing the 'final', 'const' or 'var' keyword to the given token.
* @param keyword the token representing the 'final', 'const' or 'var' keyword
@@ -10921,6 +12751,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the type of the variables being declared to the given type name.
* @param typeName the type of the variables being declared
@@ -10941,6 +12772,7 @@
return _variables.beginToken;
}
}
+
/**
* Instances of the class {@code VariableDeclarationStatement} represent a list of variables that
* are being declared in a context where a statement is required.
@@ -10950,14 +12782,17 @@
* @coverage dart.engine.ast
*/
class VariableDeclarationStatement extends Statement {
+
/**
* The variables being declared.
*/
VariableDeclarationList _variableList;
+
/**
* The semicolon terminating the statement.
*/
Token _semicolon;
+
/**
* Initialize a newly created variable declaration statement.
* @param variableList the fields being declared
@@ -10967,6 +12802,7 @@
this._variableList = becomeParentOf(variableList);
this._semicolon = semicolon;
}
+
/**
* Initialize a newly created variable declaration statement.
* @param variableList the fields being declared
@@ -10976,16 +12812,19 @@
accept(ASTVisitor visitor) => visitor.visitVariableDeclarationStatement(this);
Token get beginToken => _variableList.beginToken;
Token get endToken => _semicolon;
+
/**
* Return the semicolon terminating the statement.
* @return the semicolon terminating the statement
*/
Token get semicolon => _semicolon;
+
/**
* Return the variables being declared.
* @return the variables being declared
*/
VariableDeclarationList get variables => _variableList;
+
/**
* Set the semicolon terminating the statement to the given token.
* @param semicolon the semicolon terminating the statement
@@ -10993,6 +12832,7 @@
void set semicolon(Token semicolon2) {
this._semicolon = semicolon2;
}
+
/**
* Set the variables being declared to the given list of variables.
* @param variableList the variables being declared
@@ -11004,6 +12844,7 @@
safelyVisitChild(_variableList, visitor);
}
}
+
/**
* Instances of the class {@code WhileStatement} represent a while statement.
* <pre>
@@ -11012,26 +12853,32 @@
* @coverage dart.engine.ast
*/
class WhileStatement extends Statement {
+
/**
* The token representing the 'while' keyword.
*/
Token _keyword;
+
/**
* The left parenthesis.
*/
Token _leftParenthesis;
+
/**
* The expression used to determine whether to execute the body of the loop.
*/
Expression _condition;
+
/**
* The right parenthesis.
*/
Token _rightParenthesis;
+
/**
* The body of the loop.
*/
Statement _body;
+
/**
* Initialize a newly created while statement.
* @param keyword the token representing the 'while' keyword
@@ -11047,6 +12894,7 @@
this._rightParenthesis = rightParenthesis;
this._body = becomeParentOf(body);
}
+
/**
* Initialize a newly created while statement.
* @param keyword the token representing the 'while' keyword
@@ -11058,32 +12906,38 @@
WhileStatement({Token keyword, Token leftParenthesis, Expression condition, Token rightParenthesis, Statement body}) : this.full(keyword, leftParenthesis, condition, rightParenthesis, body);
accept(ASTVisitor visitor) => visitor.visitWhileStatement(this);
Token get beginToken => _keyword;
+
/**
* Return the body of the loop.
* @return the body of the loop
*/
Statement get body => _body;
+
/**
* Return the expression used to determine whether to execute the body of the loop.
* @return the expression used to determine whether to execute the body of the loop
*/
Expression get condition => _condition;
Token get endToken => _body.endToken;
+
/**
* Return the token representing the 'while' keyword.
* @return the token representing the 'while' keyword
*/
Token get keyword => _keyword;
+
/**
* Return the left parenthesis.
* @return the left parenthesis
*/
Token get leftParenthesis => _leftParenthesis;
+
/**
* Return the right parenthesis.
* @return the right parenthesis
*/
Token get rightParenthesis => _rightParenthesis;
+
/**
* Set the body of the loop to the given statement.
* @param statement the body of the loop
@@ -11091,6 +12945,7 @@
void set body(Statement statement) {
_body = becomeParentOf(statement);
}
+
/**
* Set the expression used to determine whether to execute the body of the loop to the given
* expression.
@@ -11099,6 +12954,7 @@
void set condition(Expression expression) {
_condition = becomeParentOf(expression);
}
+
/**
* Set the token representing the 'while' keyword to the given token.
* @param keyword the token representing the 'while' keyword
@@ -11106,6 +12962,7 @@
void set keyword(Token keyword2) {
this._keyword = keyword2;
}
+
/**
* Set the left parenthesis to the given token.
* @param leftParenthesis the left parenthesis
@@ -11113,6 +12970,7 @@
void set leftParenthesis(Token leftParenthesis2) {
this._leftParenthesis = leftParenthesis2;
}
+
/**
* Set the right parenthesis to the given token.
* @param rightParenthesis the right parenthesis
@@ -11125,6 +12983,7 @@
safelyVisitChild(_body, visitor);
}
}
+
/**
* Instances of the class {@code WithClause} represent the with clause in a class declaration.
* <pre>
@@ -11134,14 +12993,17 @@
* @coverage dart.engine.ast
*/
class WithClause extends ASTNode {
+
/**
* The token representing the 'with' keyword.
*/
Token _withKeyword;
+
/**
* The names of the mixins that were specified.
*/
NodeList<TypeName> _mixinTypes;
+
/**
* Initialize a newly created with clause.
* @param withKeyword the token representing the 'with' keyword
@@ -11152,6 +13014,7 @@
this._withKeyword = withKeyword;
this._mixinTypes.addAll(mixinTypes);
}
+
/**
* Initialize a newly created with clause.
* @param withKeyword the token representing the 'with' keyword
@@ -11161,16 +13024,19 @@
accept(ASTVisitor visitor) => visitor.visitWithClause(this);
Token get beginToken => _withKeyword;
Token get endToken => _mixinTypes.endToken;
+
/**
* Return the names of the mixins that were specified.
* @return the names of the mixins that were specified
*/
NodeList<TypeName> get mixinTypes => _mixinTypes;
+
/**
* Return the token representing the 'with' keyword.
* @return the token representing the 'with' keyword
*/
Token get withKeyword => _withKeyword;
+
/**
* Set the token representing the 'with' keyword to the given token.
* @param withKeyword the token representing the 'with' keyword
@@ -11182,7 +13048,46 @@
_mixinTypes.accept(visitor);
}
}
+
/**
+ * Instances of the class {@code BreadthFirstVisitor} implement an AST visitor that will recursively
+ * visit all of the nodes in an AST structure, similar to {@link GeneralizingASTVisitor}. This
+ * visitor uses a breadth-first ordering rather than the depth-first ordering of{@link GeneralizingASTVisitor}.
+ * @coverage dart.engine.ast
+ */
+class BreadthFirstVisitor<R> extends GeneralizingASTVisitor<R> {
+ Queue<ASTNode> _queue = new Queue<ASTNode>();
+ GeneralizingASTVisitor<Object> _childVisitor;
+
+ /**
+ * Visit all nodes in the tree starting at the given {@code root} node, in depth-first order.
+ * @param root the root of the ASTNode tree
+ */
+ void visitAllNodes(ASTNode root) {
+ _queue.add(root);
+ while (!_queue.isEmpty) {
+ ASTNode next = _queue.removeFirst();
+ next.accept(this);
+ }
+ }
+ R visitNode(ASTNode node) {
+ node.visitChildren(_childVisitor);
+ return null;
+ }
+ BreadthFirstVisitor() {
+ this._childVisitor = new GeneralizingASTVisitor_1(this);
+ }
+}
+class GeneralizingASTVisitor_1 extends GeneralizingASTVisitor<Object> {
+ final BreadthFirstVisitor BreadthFirstVisitor_this;
+ GeneralizingASTVisitor_1(this.BreadthFirstVisitor_this) : super();
+ Object visitNode(ASTNode node) {
+ BreadthFirstVisitor_this._queue.add(node);
+ return null;
+ }
+}
+
+/**
* Instances of the class {@code ConstantEvaluator} evaluate constant expressions to produce their
* compile-time value. According to the Dart Language Specification: <blockquote> A constant
* expression is one of the following:
@@ -11215,16 +13120,12 @@
* @coverage dart.engine.ast
*/
class ConstantEvaluator extends GeneralizingASTVisitor<Object> {
+
/**
* The value returned for expressions (or non-expression nodes) that are not compile-time constant
* expressions.
*/
static Object NOT_A_CONSTANT = new Object();
- /**
- * Initialize a newly created constant evaluator.
- */
- ConstantEvaluator() {
- }
Object visitAdjacentStrings(AdjacentStrings node) {
JavaStringBuilder builder = new JavaStringBuilder();
for (StringLiteral string in node.strings) {
@@ -11449,6 +13350,7 @@
}
return builder.toString();
}
+
/**
* Return the constant value of the static constant represented by the given element.
* @param element the element whose value is to be returned
@@ -11463,11 +13365,13 @@
return NOT_A_CONSTANT;
}
}
+
/**
* Instances of the class {@code ElementLocator} locate the {@link Element Dart model element}associated with a given {@link ASTNode AST node}.
* @coverage dart.engine.ast
*/
class ElementLocator {
+
/**
* Locate the {@link Element Dart model element} associated with the given {@link ASTNode AST
* node}.
@@ -11478,12 +13382,8 @@
ElementLocator_ElementMapper mapper = new ElementLocator_ElementMapper();
return node.accept(mapper);
}
- /**
- * Clients should use {@link #locate(ASTNode)}.
- */
- ElementLocator() {
- }
}
+
/**
* Visitor that maps nodes to elements.
*/
@@ -11509,6 +13409,15 @@
}
}
}
+ if (parent2 is LibraryIdentifier) {
+ ASTNode grandParent = ((parent2 as LibraryIdentifier)).parent;
+ if (grandParent is PartOfDirective) {
+ Element element3 = ((grandParent as PartOfDirective)).element;
+ if (element3 is LibraryElement) {
+ return ((element3 as LibraryElement)).definingCompilationUnit;
+ }
+ }
+ }
return node.element;
}
Element visitImportDirective(ImportDirective node) => node.element;
@@ -11523,12 +13432,13 @@
Element visitStringLiteral(StringLiteral node) {
ASTNode parent2 = node.parent;
if (parent2 is UriBasedDirective) {
- return ((parent2 as UriBasedDirective)).element;
+ return ((parent2 as UriBasedDirective)).uriElement;
}
return null;
}
Element visitVariableDeclaration(VariableDeclaration node) => node.element;
}
+
/**
* Instances of the class {@code GeneralizingASTVisitor} implement an AST visitor that will
* recursively visit all of the nodes in an AST structure (like instances of the class{@link RecursiveASTVisitor}). In addition, when a node of a specific type is visited not only
@@ -11595,7 +13505,7 @@
R visitFormalParameterList(FormalParameterList node) => visitNode(node);
R visitForStatement(ForStatement node) => visitStatement(node);
R visitFunctionBody(FunctionBody node) => visitNode(node);
- R visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node);
+ R visitFunctionDeclaration(FunctionDeclaration node) => visitCompilationUnitMember(node);
R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) => visitStatement(node);
R visitFunctionExpression(FunctionExpression node) => visitExpression(node);
R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) => visitExpression(node);
@@ -11673,6 +13583,7 @@
R visitWhileStatement(WhileStatement node) => visitStatement(node);
R visitWithClause(WithClause node) => visitNode(node);
}
+
/**
* Instances of the class {@code NodeLocator} locate the {@link ASTNode AST node} associated with a
* source range, given the AST structure built from the source. More specifically, they will return
@@ -11681,19 +13592,23 @@
* @coverage dart.engine.ast
*/
class NodeLocator extends GeneralizingASTVisitor<Object> {
+
/**
* The start offset of the range used to identify the node.
*/
int _startOffset = 0;
+
/**
* The end offset of the range used to identify the node.
*/
int _endOffset = 0;
+
/**
* The element that was found that corresponds to the given source range, or {@code null} if there
* is no such element.
*/
ASTNode _foundNode;
+
/**
* Initialize a newly created locator to locate one or more {@link ASTNode AST nodes} by locating
* the node within an AST structure that corresponds to the given offset in the source.
@@ -11705,6 +13620,7 @@
_jtd_constructor_120_impl(int offset) {
_jtd_constructor_121_impl(offset, offset);
}
+
/**
* Initialize a newly created locator to locate one or more {@link ASTNode AST nodes} by locating
* the node within an AST structure that corresponds to the given range of characters in the
@@ -11719,12 +13635,14 @@
this._startOffset = start;
this._endOffset = end;
}
+
/**
* Return the node that was found that corresponds to the given source range, or {@code null} if
* there is no such node.
* @return the node that was found
*/
ASTNode get foundNode => _foundNode;
+
/**
* Search within the given AST node for an identifier representing a {@link DartElement Dart
* element} in the specified source range. Return the element that was found, or {@code null} if
@@ -11765,6 +13683,7 @@
return null;
}
}
+
/**
* Instances of the class {@code NodeFoundException} are used to cancel visiting after a node has
* been found.
@@ -11772,6 +13691,7 @@
class NodeLocator_NodeFoundException extends RuntimeException {
static int _serialVersionUID = 1;
}
+
/**
* Instances of the class {@code RecursiveASTVisitor} implement an AST visitor that will recursively
* visit all of the nodes in an AST structure. For example, using an instance of this class to visit
@@ -12188,6 +14108,7 @@
return null;
}
}
+
/**
* Instances of the class {@code SimpleASTVisitor} implement an AST visitor that will do nothing
* when visiting an AST node. It is intended to be a superclass for classes that use the visitor
@@ -12298,16 +14219,19 @@
R visitWhileStatement(WhileStatement node) => null;
R visitWithClause(WithClause node) => null;
}
+
/**
* Instances of the class {@code ToSourceVisitor} write a source representation of a visited AST
* node (and all of it's children) to a writer.
* @coverage dart.engine.ast
*/
class ToSourceVisitor implements ASTVisitor<Object> {
+
/**
* The writer to which the source is to be written.
*/
PrintWriter _writer;
+
/**
* Initialize a newly created visitor to write source code representing the visited nodes to the
* given writer.
@@ -12999,6 +14923,7 @@
visitList2(node.mixinTypes, ", ");
return null;
}
+
/**
* Safely visit the given node.
* @param node the node to be visited
@@ -13008,6 +14933,7 @@
node.accept(this);
}
}
+
/**
* Safely visit the given node, printing the suffix after the node if it is non-{@code null}.
* @param suffix the suffix to be printed if there is a node to visit
@@ -13019,6 +14945,7 @@
_writer.print(suffix);
}
}
+
/**
* Safely visit the given node, printing the prefix before the node if it is non-{@code null}.
* @param prefix the prefix to be printed if there is a node to visit
@@ -13030,6 +14957,7 @@
node.accept(this);
}
}
+
/**
* Visit the given function body, printing the prefix before if given body is not empty.
* @param prefix the prefix to be printed if there is a node to visit
@@ -13041,6 +14969,7 @@
}
visit(body);
}
+
/**
* Safely visit the given node, printing the suffix after the node if it is non-{@code null}.
* @param suffix the suffix to be printed if there is a node to visit
@@ -13052,6 +14981,7 @@
_writer.print(suffix);
}
}
+
/**
* Print a list of nodes without any separation.
* @param nodes the nodes to be printed
@@ -13060,6 +14990,7 @@
void visitList(NodeList<ASTNode> nodes) {
visitList2(nodes, "");
}
+
/**
* Print a list of nodes, separated by the given separator.
* @param nodes the nodes to be printed
@@ -13076,6 +15007,7 @@
}
}
}
+
/**
* Print a list of nodes, separated by the given separator.
* @param nodes the nodes to be printed
@@ -13096,6 +15028,7 @@
}
}
}
+
/**
* Print a list of nodes, separated by the given separator.
* @param prefix the prefix to be printed if the list is not empty
@@ -13117,6 +15050,7 @@
}
}
}
+
/**
* Instances of the class {@code ASTCloner} implement an object that will clone any AST structure
* that it visits. The cloner will only clone the structure, it will not preserve any resolution
@@ -13258,7 +15192,147 @@
return clonedNodes;
}
}
+
/**
+ * Traverse the AST from initial child node to successive parents, building a collection of local
+ * variable and parameter names visible to the initial child node. In case of name shadowing, the
+ * first name seen is the most specific one so names are not redefined.
+ * <p>
+ * Completion test code coverage is 95%. The two basic blocks that are not executed cannot be
+ * executed. They are included for future reference.
+ * @coverage com.google.dart.engine.services.completion
+ */
+class ScopedNameFinder extends GeneralizingASTVisitor<Object> {
+ Declaration _declarationNode;
+ ASTNode _immediateChild;
+ Map<String, SimpleIdentifier> _locals = new Map<String, SimpleIdentifier>();
+ int _position = 0;
+ bool _referenceIsWithinLocalFunction = false;
+ ScopedNameFinder(int position) {
+ this._position = position;
+ }
+ Declaration get declaration => _declarationNode;
+ Map<String, SimpleIdentifier> get locals => _locals;
+ Object visitBlock(Block node) {
+ checkStatements(node.statements);
+ return super.visitBlock(node);
+ }
+ Object visitCatchClause(CatchClause node) {
+ addToScope(node.exceptionParameter);
+ addToScope(node.stackTraceParameter);
+ return super.visitCatchClause(node);
+ }
+ Object visitConstructorDeclaration(ConstructorDeclaration node) {
+ if (_immediateChild != node.parameters) {
+ addParameters(node.parameters.parameters);
+ }
+ _declarationNode = node;
+ return null;
+ }
+ Object visitFieldDeclaration(FieldDeclaration node) {
+ _declarationNode = node;
+ return null;
+ }
+ Object visitForEachStatement(ForEachStatement node) {
+ addToScope(node.loopVariable.identifier);
+ return super.visitForEachStatement(node);
+ }
+ Object visitForStatement(ForStatement node) {
+ if (_immediateChild != node.variables && node.variables != null) {
+ addVariables(node.variables.variables);
+ }
+ return super.visitForStatement(node);
+ }
+ Object visitFunctionDeclaration(FunctionDeclaration node) {
+ if (node.parent is! FunctionDeclarationStatement) {
+ _declarationNode = node;
+ return null;
+ }
+ return super.visitFunctionDeclaration(node);
+ }
+ Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
+ _referenceIsWithinLocalFunction = true;
+ return super.visitFunctionDeclarationStatement(node);
+ }
+ Object visitFunctionExpression(FunctionExpression node) {
+ if (_immediateChild != node.parameters) {
+ addParameters(node.parameters.parameters);
+ }
+ return super.visitFunctionExpression(node);
+ }
+ Object visitMethodDeclaration(MethodDeclaration node) {
+ if (node.parameters == null) {
+ return null;
+ }
+ if (_immediateChild != node.parameters) {
+ addParameters(node.parameters.parameters);
+ }
+ _declarationNode = node;
+ return null;
+ }
+ Object visitNode(ASTNode node) {
+ _immediateChild = node;
+ ASTNode parent2 = node.parent;
+ if (parent2 != null) {
+ parent2.accept(this);
+ }
+ return null;
+ }
+ Object visitSwitchMember(SwitchMember node) {
+ checkStatements(node.statements);
+ return super.visitSwitchMember(node);
+ }
+ Object visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+ _declarationNode = node;
+ return null;
+ }
+ Object visitTypeAlias(TypeAlias node) {
+ _declarationNode = node;
+ return null;
+ }
+ void addParameters(NodeList<FormalParameter> vars) {
+ for (FormalParameter var2 in vars) {
+ addToScope(var2.identifier);
+ }
+ }
+ void addToScope(SimpleIdentifier identifier) {
+ if (identifier != null && isInRange(identifier)) {
+ String name2 = identifier.name;
+ if (!_locals.containsKey(name2)) {
+ _locals[name2] = identifier;
+ }
+ }
+ }
+ void addVariables(NodeList<VariableDeclaration> vars) {
+ for (VariableDeclaration var2 in vars) {
+ addToScope(var2.name);
+ }
+ }
+
+ /**
+ * Some statements define names that are visible downstream. There aren't many of these.
+ * @param statements the list of statements to check for name definitions
+ */
+ void checkStatements(List<Statement> statements) {
+ for (Statement stmt in statements) {
+ if (identical(stmt, _immediateChild)) {
+ return;
+ }
+ if (stmt is VariableDeclarationStatement) {
+ addVariables(((stmt as VariableDeclarationStatement)).variables.variables);
+ } else if (stmt is FunctionDeclarationStatement && !_referenceIsWithinLocalFunction) {
+ addToScope(((stmt as FunctionDeclarationStatement)).functionDeclaration.name);
+ }
+ }
+ }
+ bool isInRange(ASTNode node) {
+ if (_position < 0) {
+ return true;
+ }
+ return node.end < _position;
+ }
+}
+/**
* Instances of the class {@code NodeList} represent a list of AST nodes that have a common parent.
*/
class NodeList<E extends ASTNode> extends ListWrapper<E> {

Powered by Google App Engine
This is Rietveld 408576698