| OLD | NEW |
| 1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
| 2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
| 3 | 3 |
| 4 library engine.ast; | 4 library engine.ast; |
| 5 | 5 |
| 6 import 'dart:collection'; | 6 import 'dart:collection'; |
| 7 import 'java_core.dart'; | 7 import 'java_core.dart'; |
| 8 import 'java_engine.dart'; | 8 import 'java_engine.dart'; |
| 9 import 'error.dart'; | 9 import 'error.dart'; |
| 10 import 'source.dart' show LineInfo; | 10 import 'source.dart' show LineInfo; |
| 11 import 'scanner.dart'; | 11 import 'scanner.dart'; |
| 12 import 'engine.dart' show AnalysisEngine; | 12 import 'engine.dart' show AnalysisEngine; |
| 13 import 'utilities_dart.dart'; | 13 import 'utilities_dart.dart'; |
| 14 import 'element.dart' hide Annotation; | 14 import 'element.dart' hide Annotation; |
| 15 | 15 |
| 16 |
| 16 /** | 17 /** |
| 17 * The abstract class {@code ASTNode} defines the behavior common to all nodes i
n the AST structure | 18 * The abstract class {@code ASTNode} defines the behavior common to all nodes i
n the AST structure |
| 18 * for a Dart program. | 19 * for a Dart program. |
| 19 * @coverage dart.engine.ast | 20 * @coverage dart.engine.ast |
| 20 */ | 21 */ |
| 21 abstract class ASTNode { | 22 abstract class ASTNode { |
| 23 |
| 22 /** | 24 /** |
| 23 * The parent of the node, or {@code null} if the node is the root of an AST s
tructure. | 25 * The parent of the node, or {@code null} if the node is the root of an AST s
tructure. |
| 24 */ | 26 */ |
| 25 ASTNode _parent; | 27 ASTNode _parent; |
| 28 |
| 26 /** | 29 /** |
| 27 * A table mapping the names of properties to their values, or {@code null} if
this node does not | 30 * A table mapping the names of properties to their values, or {@code null} if
this node does not |
| 28 * have any properties associated with it. | 31 * have any properties associated with it. |
| 29 */ | 32 */ |
| 30 Map<String, Object> _propertyMap; | 33 Map<String, Object> _propertyMap; |
| 34 |
| 31 /** | 35 /** |
| 32 * 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 no
de is less than the | 36 * 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 no
de is less than the |
| 33 * offset of the second node, zero (0) if the nodes have the same offset, and
a positive value if | 37 * offset of the second node, zero (0) if the nodes have the same offset, and
a positive value if |
| 34 * if the offset of the first node is greater than the offset of the second no
de. | 38 * if the offset of the first node is greater than the offset of the second no
de. |
| 35 */ | 39 */ |
| 36 static Comparator<ASTNode> LEXICAL_ORDER = (ASTNode first, ASTNode second) =>
second.offset - first.offset; | 40 static Comparator<ASTNode> LEXICAL_ORDER = (ASTNode first, ASTNode second) =>
second.offset - first.offset; |
| 41 |
| 37 /** | 42 /** |
| 38 * Use the given visitor to visit this node. | 43 * Use the given visitor to visit this node. |
| 39 * @param visitor the visitor that will visit this node | 44 * @param visitor the visitor that will visit this node |
| 40 * @return the value returned by the visitor as a result of visiting this node | 45 * @return the value returned by the visitor as a result of visiting this node |
| 41 */ | 46 */ |
| 42 accept(ASTVisitor visitor); | 47 accept(ASTVisitor visitor); |
| 48 |
| 43 /** | 49 /** |
| 44 * @return the {@link ASTNode} of given {@link Class} which is {@link ASTNode}
itself, or one of | 50 * @return the {@link ASTNode} of given {@link Class} which is {@link ASTNode}
itself, or one of |
| 45 * its parents. | 51 * its parents. |
| 46 */ | 52 */ |
| 47 ASTNode getAncestor(Type enclosingClass) { | 53 ASTNode getAncestor(Type enclosingClass) { |
| 48 ASTNode node = this; | 54 ASTNode node = this; |
| 49 while (node != null && !isInstanceOf(node, enclosingClass)) { | 55 while (node != null && !isInstanceOf(node, enclosingClass)) { |
| 50 node = node.parent; | 56 node = node.parent; |
| 51 } | 57 } |
| 52 ; | 58 ; |
| 53 return node as ASTNode; | 59 return node as ASTNode; |
| 54 } | 60 } |
| 61 |
| 55 /** | 62 /** |
| 56 * Return the first token included in this node's source range. | 63 * Return the first token included in this node's source range. |
| 57 * @return the first token included in this node's source range | 64 * @return the first token included in this node's source range |
| 58 */ | 65 */ |
| 59 Token get beginToken; | 66 Token get beginToken; |
| 67 |
| 60 /** | 68 /** |
| 61 * Return the offset of the character immediately following the last character
of this node's | 69 * Return the offset of the character immediately following the last character
of this node's |
| 62 * source range. This is equivalent to {@code node.getOffset() + node.getLengt
h()}. For a | 70 * source range. This is equivalent to {@code node.getOffset() + node.getLengt
h()}. For a |
| 63 * compilation unit this will be equal to the length of the unit's source. For
synthetic nodes | 71 * compilation unit this will be equal to the length of the unit's source. For
synthetic nodes |
| 64 * this will be equivalent to the node's offset (because the length is zero (0
) by definition). | 72 * this will be equivalent to the node's offset (because the length is zero (0
) by definition). |
| 65 * @return the offset of the character just past the node's source range | 73 * @return the offset of the character just past the node's source range |
| 66 */ | 74 */ |
| 67 int get end => offset + length; | 75 int get end => offset + length; |
| 76 |
| 68 /** | 77 /** |
| 69 * Return the last token included in this node's source range. | 78 * Return the last token included in this node's source range. |
| 70 * @return the last token included in this node's source range | 79 * @return the last token included in this node's source range |
| 71 */ | 80 */ |
| 72 Token get endToken; | 81 Token get endToken; |
| 82 |
| 73 /** | 83 /** |
| 74 * Return the number of characters in the node's source range. | 84 * Return the number of characters in the node's source range. |
| 75 * @return the number of characters in the node's source range | 85 * @return the number of characters in the node's source range |
| 76 */ | 86 */ |
| 77 int get length { | 87 int get length { |
| 78 Token beginToken2 = beginToken; | 88 Token beginToken2 = beginToken; |
| 79 Token endToken2 = endToken; | 89 Token endToken2 = endToken; |
| 80 if (beginToken2 == null || endToken2 == null) { | 90 if (beginToken2 == null || endToken2 == null) { |
| 81 return -1; | 91 return -1; |
| 82 } | 92 } |
| 83 return endToken2.offset + endToken2.length - beginToken2.offset; | 93 return endToken2.offset + endToken2.length - beginToken2.offset; |
| 84 } | 94 } |
| 95 |
| 85 /** | 96 /** |
| 86 * Return the offset from the beginning of the file to the first character in
the node's source | 97 * Return the offset from the beginning of the file to the first character in
the node's source |
| 87 * range. | 98 * range. |
| 88 * @return the offset from the beginning of the file to the first character in
the node's source | 99 * @return the offset from the beginning of the file to the first character in
the node's source |
| 89 * range | 100 * range |
| 90 */ | 101 */ |
| 91 int get offset { | 102 int get offset { |
| 92 Token beginToken2 = beginToken; | 103 Token beginToken2 = beginToken; |
| 93 if (beginToken2 == null) { | 104 if (beginToken2 == null) { |
| 94 return -1; | 105 return -1; |
| 95 } | 106 } |
| 96 return beginToken.offset; | 107 return beginToken.offset; |
| 97 } | 108 } |
| 109 |
| 98 /** | 110 /** |
| 99 * Return this node's parent node, or {@code null} if this node is the root of
an AST structure. | 111 * Return this node's parent node, or {@code null} if this node is the root of
an AST structure. |
| 100 * <p> | 112 * <p> |
| 101 * Note that the relationship between an AST node and its parent node may chan
ge over the lifetime | 113 * Note that the relationship between an AST node and its parent node may chan
ge over the lifetime |
| 102 * of a node. | 114 * of a node. |
| 103 * @return the parent of this node, or {@code null} if none | 115 * @return the parent of this node, or {@code null} if none |
| 104 */ | 116 */ |
| 105 ASTNode get parent => _parent; | 117 ASTNode get parent => _parent; |
| 118 |
| 106 /** | 119 /** |
| 107 * Return the value of the property with the given name, or {@code null} if th
is node does not | 120 * Return the value of the property with the given name, or {@code null} if th
is node does not |
| 108 * have a property with the given name. | 121 * have a property with the given name. |
| 109 * @return the value of the property with the given name | 122 * @return the value of the property with the given name |
| 110 */ | 123 */ |
| 111 Object getProperty(String propertyName) { | 124 Object getProperty(String propertyName) { |
| 112 if (_propertyMap == null) { | 125 if (_propertyMap == null) { |
| 113 return null; | 126 return null; |
| 114 } | 127 } |
| 115 return _propertyMap[propertyName]; | 128 return _propertyMap[propertyName]; |
| 116 } | 129 } |
| 130 |
| 117 /** | 131 /** |
| 118 * Return the node at the root of this node's AST structure. Note that this me
thod's performance | 132 * Return the node at the root of this node's AST structure. Note that this me
thod's performance |
| 119 * is linear with respect to the depth of the node in the AST structure (O(dep
th)). | 133 * is linear with respect to the depth of the node in the AST structure (O(dep
th)). |
| 120 * @return the node at the root of this node's AST structure | 134 * @return the node at the root of this node's AST structure |
| 121 */ | 135 */ |
| 122 ASTNode get root { | 136 ASTNode get root { |
| 123 ASTNode root = this; | 137 ASTNode root = this; |
| 124 ASTNode parent2 = parent; | 138 ASTNode parent2 = parent; |
| 125 while (parent2 != null) { | 139 while (parent2 != null) { |
| 126 root = parent2; | 140 root = parent2; |
| 127 parent2 = root.parent; | 141 parent2 = root.parent; |
| 128 } | 142 } |
| 129 return root; | 143 return root; |
| 130 } | 144 } |
| 145 |
| 131 /** | 146 /** |
| 132 * Return {@code true} if this node is a synthetic node. A synthetic node is a
node that was | 147 * Return {@code true} if this node is a synthetic node. A synthetic node is a
node that was |
| 133 * introduced by the parser in order to recover from an error in the code. Syn
thetic nodes always | 148 * introduced by the parser in order to recover from an error in the code. Syn
thetic nodes always |
| 134 * have a length of zero ({@code 0}). | 149 * have a length of zero ({@code 0}). |
| 135 * @return {@code true} if this node is a synthetic node | 150 * @return {@code true} if this node is a synthetic node |
| 136 */ | 151 */ |
| 137 bool isSynthetic() => false; | 152 bool isSynthetic() => false; |
| 153 |
| 138 /** | 154 /** |
| 139 * Set the value of the property with the given name to the given value. If th
e value is{@code null}, the property will effectively be removed. | 155 * Set the value of the property with the given name to the given value. If th
e value is{@code null}, the property will effectively be removed. |
| 140 * @param propertyName the name of the property whose value is to be set | 156 * @param propertyName the name of the property whose value is to be set |
| 141 * @param propertyValue the new value of the property | 157 * @param propertyValue the new value of the property |
| 142 */ | 158 */ |
| 143 void setProperty(String propertyName, Object propertyValue) { | 159 void setProperty(String propertyName, Object propertyValue) { |
| 144 if (propertyValue == null) { | 160 if (propertyValue == null) { |
| 145 if (_propertyMap != null) { | 161 if (_propertyMap != null) { |
| 146 _propertyMap.remove(propertyName); | 162 _propertyMap.remove(propertyName); |
| 147 if (_propertyMap.isEmpty) { | 163 if (_propertyMap.isEmpty) { |
| 148 _propertyMap = null; | 164 _propertyMap = null; |
| 149 } | 165 } |
| 150 } | 166 } |
| 151 } else { | 167 } else { |
| 152 if (_propertyMap == null) { | 168 if (_propertyMap == null) { |
| 153 _propertyMap = new Map<String, Object>(); | 169 _propertyMap = new Map<String, Object>(); |
| 154 } | 170 } |
| 155 _propertyMap[propertyName] = propertyValue; | 171 _propertyMap[propertyName] = propertyValue; |
| 156 } | 172 } |
| 157 } | 173 } |
| 174 |
| 158 /** | 175 /** |
| 159 * Return a textual description of this node in a form approximating valid sou
rce. The returned | 176 * Return a textual description of this node in a form approximating valid sou
rce. The returned |
| 160 * string will not be valid source primarily in the case where the node itself
is not well-formed. | 177 * string will not be valid source primarily in the case where the node itself
is not well-formed. |
| 161 * @return the source code equivalent of this node | 178 * @return the source code equivalent of this node |
| 162 */ | 179 */ |
| 163 String toSource() { | 180 String toSource() { |
| 164 PrintStringWriter writer = new PrintStringWriter(); | 181 PrintStringWriter writer = new PrintStringWriter(); |
| 165 accept(new ToSourceVisitor(writer)); | 182 accept(new ToSourceVisitor(writer)); |
| 166 return writer.toString(); | 183 return writer.toString(); |
| 167 } | 184 } |
| 168 String toString() => toSource(); | 185 String toString() => toSource(); |
| 186 |
| 169 /** | 187 /** |
| 170 * Use the given visitor to visit all of the children of this node. The childr
en will be visited | 188 * Use the given visitor to visit all of the children of this node. The childr
en will be visited |
| 171 * in source order. | 189 * in source order. |
| 172 * @param visitor the visitor that will be used to visit the children of this
node | 190 * @param visitor the visitor that will be used to visit the children of this
node |
| 173 */ | 191 */ |
| 174 void visitChildren(ASTVisitor<Object> visitor); | 192 void visitChildren(ASTVisitor<Object> visitor); |
| 193 |
| 175 /** | 194 /** |
| 176 * Make this node the parent of the given child node. | 195 * Make this node the parent of the given child node. |
| 177 * @param child the node that will become a child of this node | 196 * @param child the node that will become a child of this node |
| 178 * @return the node that was made a child of this node | 197 * @return the node that was made a child of this node |
| 179 */ | 198 */ |
| 180 ASTNode becomeParentOf(ASTNode child) { | 199 ASTNode becomeParentOf(ASTNode child) { |
| 181 if (child != null) { | 200 if (child != null) { |
| 182 ASTNode node = child; | 201 ASTNode node = child; |
| 183 node.parent = this; | 202 node.parent = this; |
| 184 } | 203 } |
| 185 return child; | 204 return child; |
| 186 } | 205 } |
| 206 |
| 187 /** | 207 /** |
| 188 * If the given child is not {@code null}, use the given visitor to visit it. | 208 * If the given child is not {@code null}, use the given visitor to visit it. |
| 189 * @param child the child to be visited | 209 * @param child the child to be visited |
| 190 * @param visitor the visitor that will be used to visit the child | 210 * @param visitor the visitor that will be used to visit the child |
| 191 */ | 211 */ |
| 192 void safelyVisitChild(ASTNode child, ASTVisitor<Object> visitor) { | 212 void safelyVisitChild(ASTNode child, ASTVisitor<Object> visitor) { |
| 193 if (child != null) { | 213 if (child != null) { |
| 194 child.accept(visitor); | 214 child.accept(visitor); |
| 195 } | 215 } |
| 196 } | 216 } |
| 217 |
| 197 /** | 218 /** |
| 198 * Set the parent of this node to the given node. | 219 * Set the parent of this node to the given node. |
| 199 * @param newParent the node that is to be made the parent of this node | 220 * @param newParent the node that is to be made the parent of this node |
| 200 */ | 221 */ |
| 201 void set parent(ASTNode newParent) { | 222 void set parent(ASTNode newParent) { |
| 202 _parent = newParent; | 223 _parent = newParent; |
| 203 } | 224 } |
| 204 static int _hashCodeGenerator = 0; | 225 static int _hashCodeGenerator = 0; |
| 205 final int hashCode = ++_hashCodeGenerator; | 226 final int hashCode = ++_hashCodeGenerator; |
| 206 } | 227 } |
| 228 |
| 207 /** | 229 /** |
| 208 * The interface {@code ASTVisitor} defines the behavior of objects that can be
used to visit an AST | 230 * The interface {@code ASTVisitor} defines the behavior of objects that can be
used to visit an AST |
| 209 * structure. | 231 * structure. |
| 210 * @coverage dart.engine.ast | 232 * @coverage dart.engine.ast |
| 211 */ | 233 */ |
| 212 abstract class ASTVisitor<R> { | 234 abstract class ASTVisitor<R> { |
| 213 R visitAdjacentStrings(AdjacentStrings node); | 235 R visitAdjacentStrings(AdjacentStrings node); |
| 214 R visitAnnotation(Annotation node); | 236 R visitAnnotation(Annotation node); |
| 215 R visitArgumentDefinitionTest(ArgumentDefinitionTest node); | 237 R visitArgumentDefinitionTest(ArgumentDefinitionTest node); |
| 216 R visitArgumentList(ArgumentList node); | 238 R visitArgumentList(ArgumentList node); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 R visitTypeArgumentList(TypeArgumentList node); | 327 R visitTypeArgumentList(TypeArgumentList node); |
| 306 R visitTypeName(TypeName node); | 328 R visitTypeName(TypeName node); |
| 307 R visitTypeParameter(TypeParameter node); | 329 R visitTypeParameter(TypeParameter node); |
| 308 R visitTypeParameterList(TypeParameterList node); | 330 R visitTypeParameterList(TypeParameterList node); |
| 309 R visitVariableDeclaration(VariableDeclaration node); | 331 R visitVariableDeclaration(VariableDeclaration node); |
| 310 R visitVariableDeclarationList(VariableDeclarationList node); | 332 R visitVariableDeclarationList(VariableDeclarationList node); |
| 311 R visitVariableDeclarationStatement(VariableDeclarationStatement node); | 333 R visitVariableDeclarationStatement(VariableDeclarationStatement node); |
| 312 R visitWhileStatement(WhileStatement node); | 334 R visitWhileStatement(WhileStatement node); |
| 313 R visitWithClause(WithClause node); | 335 R visitWithClause(WithClause node); |
| 314 } | 336 } |
| 337 |
| 315 /** | 338 /** |
| 316 * Instances of the class {@code AdjacentStrings} represents two or more string
literals that are | 339 * Instances of the class {@code AdjacentStrings} represents two or more string
literals that are |
| 317 * implicitly concatenated because of being adjacent (separated only by whitespa
ce). | 340 * implicitly concatenated because of being adjacent (separated only by whitespa
ce). |
| 318 * <p> | 341 * <p> |
| 319 * While the grammar only allows adjacent strings when all of the strings are of
the same kind | 342 * While the grammar only allows adjacent strings when all of the strings are of
the same kind |
| 320 * (single line or multi-line), this class doesn't enforce that restriction. | 343 * (single line or multi-line), this class doesn't enforce that restriction. |
| 321 * <pre> | 344 * <pre> |
| 322 * adjacentStrings ::={@link StringLiteral string} {@link StringLiteral string}+ | 345 * adjacentStrings ::={@link StringLiteral string} {@link StringLiteral string}+ |
| 323 * </pre> | 346 * </pre> |
| 324 * @coverage dart.engine.ast | 347 * @coverage dart.engine.ast |
| 325 */ | 348 */ |
| 326 class AdjacentStrings extends StringLiteral { | 349 class AdjacentStrings extends StringLiteral { |
| 350 |
| 327 /** | 351 /** |
| 328 * The strings that are implicitly concatenated. | 352 * The strings that are implicitly concatenated. |
| 329 */ | 353 */ |
| 330 NodeList<StringLiteral> _strings; | 354 NodeList<StringLiteral> _strings; |
| 355 |
| 331 /** | 356 /** |
| 332 * Initialize a newly created list of adjacent strings. | 357 * Initialize a newly created list of adjacent strings. |
| 333 * @param strings the strings that are implicitly concatenated | 358 * @param strings the strings that are implicitly concatenated |
| 334 */ | 359 */ |
| 335 AdjacentStrings.full(List<StringLiteral> strings) { | 360 AdjacentStrings.full(List<StringLiteral> strings) { |
| 336 this._strings = new NodeList<StringLiteral>(this); | 361 this._strings = new NodeList<StringLiteral>(this); |
| 337 this._strings.addAll(strings); | 362 this._strings.addAll(strings); |
| 338 } | 363 } |
| 364 |
| 339 /** | 365 /** |
| 340 * Initialize a newly created list of adjacent strings. | 366 * Initialize a newly created list of adjacent strings. |
| 341 * @param strings the strings that are implicitly concatenated | 367 * @param strings the strings that are implicitly concatenated |
| 342 */ | 368 */ |
| 343 AdjacentStrings({List<StringLiteral> strings}) : this.full(strings); | 369 AdjacentStrings({List<StringLiteral> strings}) : this.full(strings); |
| 344 accept(ASTVisitor visitor) => visitor.visitAdjacentStrings(this); | 370 accept(ASTVisitor visitor) => visitor.visitAdjacentStrings(this); |
| 345 Token get beginToken => _strings.beginToken; | 371 Token get beginToken => _strings.beginToken; |
| 346 Token get endToken => _strings.endToken; | 372 Token get endToken => _strings.endToken; |
| 373 |
| 347 /** | 374 /** |
| 348 * Return the strings that are implicitly concatenated. | 375 * Return the strings that are implicitly concatenated. |
| 349 * @return the strings that are implicitly concatenated | 376 * @return the strings that are implicitly concatenated |
| 350 */ | 377 */ |
| 351 NodeList<StringLiteral> get strings => _strings; | 378 NodeList<StringLiteral> get strings => _strings; |
| 352 void visitChildren(ASTVisitor<Object> visitor) { | 379 void visitChildren(ASTVisitor<Object> visitor) { |
| 353 _strings.accept(visitor); | 380 _strings.accept(visitor); |
| 354 } | 381 } |
| 382 void appendStringValue(JavaStringBuilder builder) { |
| 383 for (StringLiteral stringLiteral in strings) { |
| 384 stringLiteral.appendStringValue(builder); |
| 385 } |
| 386 } |
| 355 } | 387 } |
| 388 |
| 356 /** | 389 /** |
| 357 * The abstract class {@code AnnotatedNode} defines the behavior of nodes that c
an be annotated with | 390 * The abstract class {@code AnnotatedNode} defines the behavior of nodes that c
an be annotated with |
| 358 * both a comment and metadata. | 391 * both a comment and metadata. |
| 359 * @coverage dart.engine.ast | 392 * @coverage dart.engine.ast |
| 360 */ | 393 */ |
| 361 abstract class AnnotatedNode extends ASTNode { | 394 abstract class AnnotatedNode extends ASTNode { |
| 395 |
| 362 /** | 396 /** |
| 363 * The documentation comment associated with this node, or {@code null} if thi
s node does not have | 397 * The documentation comment associated with this node, or {@code null} if thi
s node does not have |
| 364 * a documentation comment associated with it. | 398 * a documentation comment associated with it. |
| 365 */ | 399 */ |
| 366 Comment _comment; | 400 Comment _comment; |
| 401 |
| 367 /** | 402 /** |
| 368 * The annotations associated with this node. | 403 * The annotations associated with this node. |
| 369 */ | 404 */ |
| 370 NodeList<Annotation> _metadata; | 405 NodeList<Annotation> _metadata; |
| 406 |
| 371 /** | 407 /** |
| 372 * Initialize a newly created node. | 408 * Initialize a newly created node. |
| 373 * @param comment the documentation comment associated with this node | 409 * @param comment the documentation comment associated with this node |
| 374 * @param metadata the annotations associated with this node | 410 * @param metadata the annotations associated with this node |
| 375 */ | 411 */ |
| 376 AnnotatedNode.full(Comment comment, List<Annotation> metadata) { | 412 AnnotatedNode.full(Comment comment, List<Annotation> metadata) { |
| 377 this._metadata = new NodeList<Annotation>(this); | 413 this._metadata = new NodeList<Annotation>(this); |
| 378 this._comment = becomeParentOf(comment); | 414 this._comment = becomeParentOf(comment); |
| 379 this._metadata.addAll(metadata); | 415 this._metadata.addAll(metadata); |
| 380 } | 416 } |
| 417 |
| 381 /** | 418 /** |
| 382 * Initialize a newly created node. | 419 * Initialize a newly created node. |
| 383 * @param comment the documentation comment associated with this node | 420 * @param comment the documentation comment associated with this node |
| 384 * @param metadata the annotations associated with this node | 421 * @param metadata the annotations associated with this node |
| 385 */ | 422 */ |
| 386 AnnotatedNode({Comment comment, List<Annotation> metadata}) : this.full(commen
t, metadata); | 423 AnnotatedNode({Comment comment, List<Annotation> metadata}) : this.full(commen
t, metadata); |
| 387 Token get beginToken { | 424 Token get beginToken { |
| 388 if (_comment == null) { | 425 if (_comment == null) { |
| 389 if (_metadata.isEmpty) { | 426 if (_metadata.isEmpty) { |
| 390 return firstTokenAfterCommentAndMetadata; | 427 return firstTokenAfterCommentAndMetadata; |
| 391 } else { | 428 } else { |
| 392 return _metadata.beginToken; | 429 return _metadata.beginToken; |
| 393 } | 430 } |
| 394 } else if (_metadata.isEmpty) { | 431 } else if (_metadata.isEmpty) { |
| 395 return _comment.beginToken; | 432 return _comment.beginToken; |
| 396 } | 433 } |
| 397 Token commentToken = _comment.beginToken; | 434 Token commentToken = _comment.beginToken; |
| 398 Token metadataToken = _metadata.beginToken; | 435 Token metadataToken = _metadata.beginToken; |
| 399 if (commentToken.offset < metadataToken.offset) { | 436 if (commentToken.offset < metadataToken.offset) { |
| 400 return commentToken; | 437 return commentToken; |
| 401 } | 438 } |
| 402 return metadataToken; | 439 return metadataToken; |
| 403 } | 440 } |
| 441 |
| 404 /** | 442 /** |
| 405 * Return the documentation comment associated with this node, or {@code null}
if this node does | 443 * Return the documentation comment associated with this node, or {@code null}
if this node does |
| 406 * not have a documentation comment associated with it. | 444 * not have a documentation comment associated with it. |
| 407 * @return the documentation comment associated with this node | 445 * @return the documentation comment associated with this node |
| 408 */ | 446 */ |
| 409 Comment get documentationComment => _comment; | 447 Comment get documentationComment => _comment; |
| 448 |
| 410 /** | 449 /** |
| 411 * Return the annotations associated with this node. | 450 * Return the annotations associated with this node. |
| 412 * @return the annotations associated with this node | 451 * @return the annotations associated with this node |
| 413 */ | 452 */ |
| 414 NodeList<Annotation> get metadata => _metadata; | 453 NodeList<Annotation> get metadata => _metadata; |
| 454 |
| 415 /** | 455 /** |
| 416 * Set the documentation comment associated with this node to the given commen
t. | 456 * Set the documentation comment associated with this node to the given commen
t. |
| 417 * @param comment the documentation comment to be associated with this node | 457 * @param comment the documentation comment to be associated with this node |
| 418 */ | 458 */ |
| 419 void set documentationComment(Comment comment2) { | 459 void set documentationComment(Comment comment2) { |
| 420 this._comment = becomeParentOf(comment2); | 460 this._comment = becomeParentOf(comment2); |
| 421 } | 461 } |
| 462 |
| 422 /** | 463 /** |
| 423 * Set the metadata associated with this node to the given metadata. | 464 * Set the metadata associated with this node to the given metadata. |
| 424 * @param metadata the metadata to be associated with this node | 465 * @param metadata the metadata to be associated with this node |
| 425 */ | 466 */ |
| 426 void set metadata(List<Annotation> metadata2) { | 467 void set metadata(List<Annotation> metadata2) { |
| 427 this._metadata.clear(); | 468 this._metadata.clear(); |
| 428 this._metadata.addAll(metadata2); | 469 this._metadata.addAll(metadata2); |
| 429 } | 470 } |
| 430 void visitChildren(ASTVisitor<Object> visitor) { | 471 void visitChildren(ASTVisitor<Object> visitor) { |
| 431 if (commentIsBeforeAnnotations()) { | 472 if (commentIsBeforeAnnotations()) { |
| 432 safelyVisitChild(_comment, visitor); | 473 safelyVisitChild(_comment, visitor); |
| 433 _metadata.accept(visitor); | 474 _metadata.accept(visitor); |
| 434 } else { | 475 } else { |
| 435 for (ASTNode child in sortedCommentAndAnnotations) { | 476 for (ASTNode child in sortedCommentAndAnnotations) { |
| 436 child.accept(visitor); | 477 child.accept(visitor); |
| 437 } | 478 } |
| 438 } | 479 } |
| 439 } | 480 } |
| 481 |
| 440 /** | 482 /** |
| 441 * Return the first token following the comment and metadata. | 483 * Return the first token following the comment and metadata. |
| 442 * @return the first token following the comment and metadata | 484 * @return the first token following the comment and metadata |
| 443 */ | 485 */ |
| 444 Token get firstTokenAfterCommentAndMetadata; | 486 Token get firstTokenAfterCommentAndMetadata; |
| 487 |
| 445 /** | 488 /** |
| 446 * Return {@code true} if the comment is lexically before any annotations. | 489 * Return {@code true} if the comment is lexically before any annotations. |
| 447 * @return {@code true} if the comment is lexically before any annotations | 490 * @return {@code true} if the comment is lexically before any annotations |
| 448 */ | 491 */ |
| 449 bool commentIsBeforeAnnotations() { | 492 bool commentIsBeforeAnnotations() { |
| 450 if (_comment == null || _metadata.isEmpty) { | 493 if (_comment == null || _metadata.isEmpty) { |
| 451 return true; | 494 return true; |
| 452 } | 495 } |
| 453 Annotation firstAnnotation = _metadata[0]; | 496 Annotation firstAnnotation = _metadata[0]; |
| 454 return _comment.offset < firstAnnotation.offset; | 497 return _comment.offset < firstAnnotation.offset; |
| 455 } | 498 } |
| 499 |
| 456 /** | 500 /** |
| 457 * Return an array containing the comment and annotations associated with this
node, sorted in | 501 * Return an array containing the comment and annotations associated with this
node, sorted in |
| 458 * lexical order. | 502 * lexical order. |
| 459 * @return the comment and annotations associated with this node in the order
in which they | 503 * @return the comment and annotations associated with this node in the order
in which they |
| 460 * appeared in the original source | 504 * appeared in the original source |
| 461 */ | 505 */ |
| 462 List<ASTNode> get sortedCommentAndAnnotations { | 506 List<ASTNode> get sortedCommentAndAnnotations { |
| 463 List<ASTNode> childList = new List<ASTNode>(); | 507 List<ASTNode> childList = new List<ASTNode>(); |
| 464 childList.add(_comment); | 508 childList.add(_comment); |
| 465 childList.addAll(_metadata); | 509 childList.addAll(_metadata); |
| 466 List<ASTNode> children = new List.from(childList); | 510 List<ASTNode> children = new List.from(childList); |
| 467 children.sort(); | 511 children.sort(); |
| 468 return children; | 512 return children; |
| 469 } | 513 } |
| 470 } | 514 } |
| 515 |
| 471 /** | 516 /** |
| 472 * Instances of the class {@code Annotation} represent an annotation that can be
associated with an | 517 * Instances of the class {@code Annotation} represent an annotation that can be
associated with an |
| 473 * AST node. | 518 * AST node. |
| 474 * <pre> | 519 * <pre> |
| 475 * metadata ::= | 520 * metadata ::= |
| 476 * annotation | 521 * annotation |
| 477 * annotation ::= | 522 * annotation ::= |
| 478 * '@' {@link Identifier qualified} ('.' {@link SimpleIdentifier identifier})? {
@link ArgumentList arguments}? | 523 * '@' {@link Identifier qualified} ('.' {@link SimpleIdentifier identifier})? {
@link ArgumentList arguments}? |
| 479 * </pre> | 524 * </pre> |
| 480 * @coverage dart.engine.ast | 525 * @coverage dart.engine.ast |
| 481 */ | 526 */ |
| 482 class Annotation extends ASTNode { | 527 class Annotation extends ASTNode { |
| 528 |
| 483 /** | 529 /** |
| 484 * The at sign that introduced the annotation. | 530 * The at sign that introduced the annotation. |
| 485 */ | 531 */ |
| 486 Token _atSign; | 532 Token _atSign; |
| 533 |
| 487 /** | 534 /** |
| 488 * The name of the class defining the constructor that is being invoked or the
name of the field | 535 * The name of the class defining the constructor that is being invoked or the
name of the field |
| 489 * that is being referenced. | 536 * that is being referenced. |
| 490 */ | 537 */ |
| 491 Identifier _name; | 538 Identifier _name; |
| 539 |
| 492 /** | 540 /** |
| 493 * The period before the constructor name, or {@code null} if this annotation
is not the | 541 * The period before the constructor name, or {@code null} if this annotation
is not the |
| 494 * invocation of a named constructor. | 542 * invocation of a named constructor. |
| 495 */ | 543 */ |
| 496 Token _period; | 544 Token _period; |
| 545 |
| 497 /** | 546 /** |
| 498 * The name of the constructor being invoked, or {@code null} if this annotati
on is not the | 547 * The name of the constructor being invoked, or {@code null} if this annotati
on is not the |
| 499 * invocation of a named constructor. | 548 * invocation of a named constructor. |
| 500 */ | 549 */ |
| 501 SimpleIdentifier _constructorName; | 550 SimpleIdentifier _constructorName; |
| 551 |
| 502 /** | 552 /** |
| 503 * The arguments to the constructor being invoked, or {@code null} if this ann
otation is not the | 553 * The arguments to the constructor being invoked, or {@code null} if this ann
otation is not the |
| 504 * invocation of a constructor. | 554 * invocation of a constructor. |
| 505 */ | 555 */ |
| 506 ArgumentList _arguments; | 556 ArgumentList _arguments; |
| 557 |
| 507 /** | 558 /** |
| 508 * Initialize a newly created annotation. | 559 * Initialize a newly created annotation. |
| 509 * @param atSign the at sign that introduced the annotation | 560 * @param atSign the at sign that introduced the annotation |
| 510 * @param name the name of the class defining the constructor that is being in
voked or the name of | 561 * @param name the name of the class defining the constructor that is being in
voked or the name of |
| 511 * the field that is being referenced | 562 * the field that is being referenced |
| 512 * @param period the period before the constructor name, or {@code null} if th
is annotation is not | 563 * @param period the period before the constructor name, or {@code null} if th
is annotation is not |
| 513 * the invocation of a named constructor | 564 * the invocation of a named constructor |
| 514 * @param constructorName the name of the constructor being invoked, or {@code
null} if this | 565 * @param constructorName the name of the constructor being invoked, or {@code
null} if this |
| 515 * annotation is not the invocation of a named constructor | 566 * annotation is not the invocation of a named constructor |
| 516 * @param arguments the arguments to the constructor being invoked, or {@code
null} if this | 567 * @param arguments the arguments to the constructor being invoked, or {@code
null} if this |
| 517 * annotation is not the invocation of a constructor | 568 * annotation is not the invocation of a constructor |
| 518 */ | 569 */ |
| 519 Annotation.full(Token atSign, Identifier name, Token period, SimpleIdentifier
constructorName, ArgumentList arguments) { | 570 Annotation.full(Token atSign, Identifier name, Token period, SimpleIdentifier
constructorName, ArgumentList arguments) { |
| 520 this._atSign = atSign; | 571 this._atSign = atSign; |
| 521 this._name = becomeParentOf(name); | 572 this._name = becomeParentOf(name); |
| 522 this._period = period; | 573 this._period = period; |
| 523 this._constructorName = becomeParentOf(constructorName); | 574 this._constructorName = becomeParentOf(constructorName); |
| 524 this._arguments = becomeParentOf(arguments); | 575 this._arguments = becomeParentOf(arguments); |
| 525 } | 576 } |
| 577 |
| 526 /** | 578 /** |
| 527 * Initialize a newly created annotation. | 579 * Initialize a newly created annotation. |
| 528 * @param atSign the at sign that introduced the annotation | 580 * @param atSign the at sign that introduced the annotation |
| 529 * @param name the name of the class defining the constructor that is being in
voked or the name of | 581 * @param name the name of the class defining the constructor that is being in
voked or the name of |
| 530 * the field that is being referenced | 582 * the field that is being referenced |
| 531 * @param period the period before the constructor name, or {@code null} if th
is annotation is not | 583 * @param period the period before the constructor name, or {@code null} if th
is annotation is not |
| 532 * the invocation of a named constructor | 584 * the invocation of a named constructor |
| 533 * @param constructorName the name of the constructor being invoked, or {@code
null} if this | 585 * @param constructorName the name of the constructor being invoked, or {@code
null} if this |
| 534 * annotation is not the invocation of a named constructor | 586 * annotation is not the invocation of a named constructor |
| 535 * @param arguments the arguments to the constructor being invoked, or {@code
null} if this | 587 * @param arguments the arguments to the constructor being invoked, or {@code
null} if this |
| 536 * annotation is not the invocation of a constructor | 588 * annotation is not the invocation of a constructor |
| 537 */ | 589 */ |
| 538 Annotation({Token atSign, Identifier name, Token period, SimpleIdentifier cons
tructorName, ArgumentList arguments}) : this.full(atSign, name, period, construc
torName, arguments); | 590 Annotation({Token atSign, Identifier name, Token period, SimpleIdentifier cons
tructorName, ArgumentList arguments}) : this.full(atSign, name, period, construc
torName, arguments); |
| 539 accept(ASTVisitor visitor) => visitor.visitAnnotation(this); | 591 accept(ASTVisitor visitor) => visitor.visitAnnotation(this); |
| 592 |
| 540 /** | 593 /** |
| 541 * Return the arguments to the constructor being invoked, or {@code null} if t
his annotation is | 594 * Return the arguments to the constructor being invoked, or {@code null} if t
his annotation is |
| 542 * not the invocation of a constructor. | 595 * not the invocation of a constructor. |
| 543 * @return the arguments to the constructor being invoked | 596 * @return the arguments to the constructor being invoked |
| 544 */ | 597 */ |
| 545 ArgumentList get arguments => _arguments; | 598 ArgumentList get arguments => _arguments; |
| 599 |
| 546 /** | 600 /** |
| 547 * Return the at sign that introduced the annotation. | 601 * Return the at sign that introduced the annotation. |
| 548 * @return the at sign that introduced the annotation | 602 * @return the at sign that introduced the annotation |
| 549 */ | 603 */ |
| 550 Token get atSign => _atSign; | 604 Token get atSign => _atSign; |
| 551 Token get beginToken => _atSign; | 605 Token get beginToken => _atSign; |
| 606 |
| 552 /** | 607 /** |
| 553 * Return the name of the constructor being invoked, or {@code null} if this a
nnotation is not the | 608 * Return the name of the constructor being invoked, or {@code null} if this a
nnotation is not the |
| 554 * invocation of a named constructor. | 609 * invocation of a named constructor. |
| 555 * @return the name of the constructor being invoked | 610 * @return the name of the constructor being invoked |
| 556 */ | 611 */ |
| 557 SimpleIdentifier get constructorName => _constructorName; | 612 SimpleIdentifier get constructorName => _constructorName; |
| 613 |
| 614 /** |
| 615 * Return the element associated with this annotation, or {@code null} if the
AST structure has |
| 616 * not been resolved or if this annotation could not be resolved. |
| 617 * @return the element associated with this annotation |
| 618 */ |
| 619 Element get element { |
| 620 if (_constructorName != null) { |
| 621 return _constructorName.element; |
| 622 } else if (_name != null) { |
| 623 return _name.element; |
| 624 } |
| 625 return null; |
| 626 } |
| 558 Token get endToken { | 627 Token get endToken { |
| 559 if (_arguments != null) { | 628 if (_arguments != null) { |
| 560 return _arguments.endToken; | 629 return _arguments.endToken; |
| 561 } else if (_constructorName != null) { | 630 } else if (_constructorName != null) { |
| 562 return _constructorName.endToken; | 631 return _constructorName.endToken; |
| 563 } | 632 } |
| 564 return _name.endToken; | 633 return _name.endToken; |
| 565 } | 634 } |
| 635 |
| 566 /** | 636 /** |
| 567 * Return the name of the class defining the constructor that is being invoked
or the name of the | 637 * Return the name of the class defining the constructor that is being invoked
or the name of the |
| 568 * field that is being referenced. | 638 * field that is being referenced. |
| 569 * @return the name of the constructor being invoked or the name of the field
being referenced | 639 * @return the name of the constructor being invoked or the name of the field
being referenced |
| 570 */ | 640 */ |
| 571 Identifier get name => _name; | 641 Identifier get name => _name; |
| 642 |
| 572 /** | 643 /** |
| 573 * Return the period before the constructor name, or {@code null} if this anno
tation is not the | 644 * Return the period before the constructor name, or {@code null} if this anno
tation is not the |
| 574 * invocation of a named constructor. | 645 * invocation of a named constructor. |
| 575 * @return the period before the constructor name | 646 * @return the period before the constructor name |
| 576 */ | 647 */ |
| 577 Token get period => _period; | 648 Token get period => _period; |
| 649 |
| 578 /** | 650 /** |
| 579 * Set the arguments to the constructor being invoked to the given arguments. | 651 * Set the arguments to the constructor being invoked to the given arguments. |
| 580 * @param arguments the arguments to the constructor being invoked | 652 * @param arguments the arguments to the constructor being invoked |
| 581 */ | 653 */ |
| 582 void set arguments(ArgumentList arguments2) { | 654 void set arguments(ArgumentList arguments2) { |
| 583 this._arguments = becomeParentOf(arguments2); | 655 this._arguments = becomeParentOf(arguments2); |
| 584 } | 656 } |
| 657 |
| 585 /** | 658 /** |
| 586 * Set the at sign that introduced the annotation to the given token. | 659 * Set the at sign that introduced the annotation to the given token. |
| 587 * @param atSign the at sign that introduced the annotation | 660 * @param atSign the at sign that introduced the annotation |
| 588 */ | 661 */ |
| 589 void set atSign(Token atSign2) { | 662 void set atSign(Token atSign2) { |
| 590 this._atSign = atSign2; | 663 this._atSign = atSign2; |
| 591 } | 664 } |
| 665 |
| 592 /** | 666 /** |
| 593 * Set the name of the constructor being invoked to the given name. | 667 * Set the name of the constructor being invoked to the given name. |
| 594 * @param constructorName the name of the constructor being invoked | 668 * @param constructorName the name of the constructor being invoked |
| 595 */ | 669 */ |
| 596 void set constructorName(SimpleIdentifier constructorName2) { | 670 void set constructorName(SimpleIdentifier constructorName2) { |
| 597 this._constructorName = becomeParentOf(constructorName2); | 671 this._constructorName = becomeParentOf(constructorName2); |
| 598 } | 672 } |
| 673 |
| 599 /** | 674 /** |
| 600 * Set the name of the class defining the constructor that is being invoked or
the name of the | 675 * Set the name of the class defining the constructor that is being invoked or
the name of the |
| 601 * field that is being referenced to the given name. | 676 * field that is being referenced to the given name. |
| 602 * @param name the name of the constructor being invoked or the name of the fi
eld being referenced | 677 * @param name the name of the constructor being invoked or the name of the fi
eld being referenced |
| 603 */ | 678 */ |
| 604 void set name(Identifier name2) { | 679 void set name(Identifier name2) { |
| 605 this._name = becomeParentOf(name2); | 680 this._name = becomeParentOf(name2); |
| 606 } | 681 } |
| 682 |
| 607 /** | 683 /** |
| 608 * Set the period before the constructor name to the given token. | 684 * Set the period before the constructor name to the given token. |
| 609 * @param period the period before the constructor name | 685 * @param period the period before the constructor name |
| 610 */ | 686 */ |
| 611 void set period(Token period2) { | 687 void set period(Token period2) { |
| 612 this._period = period2; | 688 this._period = period2; |
| 613 } | 689 } |
| 614 void visitChildren(ASTVisitor<Object> visitor) { | 690 void visitChildren(ASTVisitor<Object> visitor) { |
| 615 safelyVisitChild(_name, visitor); | 691 safelyVisitChild(_name, visitor); |
| 616 safelyVisitChild(_constructorName, visitor); | 692 safelyVisitChild(_constructorName, visitor); |
| 617 safelyVisitChild(_arguments, visitor); | 693 safelyVisitChild(_arguments, visitor); |
| 618 } | 694 } |
| 619 } | 695 } |
| 696 |
| 620 /** | 697 /** |
| 621 * Instances of the class {@code ArgumentDefinitionTest} represent an argument d
efinition test. | 698 * Instances of the class {@code ArgumentDefinitionTest} represent an argument d
efinition test. |
| 622 * <pre> | 699 * <pre> |
| 623 * argumentDefinitionTest ::= | 700 * argumentDefinitionTest ::= |
| 624 * '?' {@link SimpleIdentifier identifier}</pre> | 701 * '?' {@link SimpleIdentifier identifier}</pre> |
| 625 * @coverage dart.engine.ast | 702 * @coverage dart.engine.ast |
| 626 */ | 703 */ |
| 627 class ArgumentDefinitionTest extends Expression { | 704 class ArgumentDefinitionTest extends Expression { |
| 705 |
| 628 /** | 706 /** |
| 629 * The token representing the question mark. | 707 * The token representing the question mark. |
| 630 */ | 708 */ |
| 631 Token _question; | 709 Token _question; |
| 710 |
| 632 /** | 711 /** |
| 633 * The identifier representing the argument being tested. | 712 * The identifier representing the argument being tested. |
| 634 */ | 713 */ |
| 635 SimpleIdentifier _identifier; | 714 SimpleIdentifier _identifier; |
| 715 |
| 636 /** | 716 /** |
| 637 * Initialize a newly created argument definition test. | 717 * Initialize a newly created argument definition test. |
| 638 * @param question the token representing the question mark | 718 * @param question the token representing the question mark |
| 639 * @param identifier the identifier representing the argument being tested | 719 * @param identifier the identifier representing the argument being tested |
| 640 */ | 720 */ |
| 641 ArgumentDefinitionTest.full(Token question, SimpleIdentifier identifier) { | 721 ArgumentDefinitionTest.full(Token question, SimpleIdentifier identifier) { |
| 642 this._question = question; | 722 this._question = question; |
| 643 this._identifier = becomeParentOf(identifier); | 723 this._identifier = becomeParentOf(identifier); |
| 644 } | 724 } |
| 725 |
| 645 /** | 726 /** |
| 646 * Initialize a newly created argument definition test. | 727 * Initialize a newly created argument definition test. |
| 647 * @param question the token representing the question mark | 728 * @param question the token representing the question mark |
| 648 * @param identifier the identifier representing the argument being tested | 729 * @param identifier the identifier representing the argument being tested |
| 649 */ | 730 */ |
| 650 ArgumentDefinitionTest({Token question, SimpleIdentifier identifier}) : this.f
ull(question, identifier); | 731 ArgumentDefinitionTest({Token question, SimpleIdentifier identifier}) : this.f
ull(question, identifier); |
| 651 accept(ASTVisitor visitor) => visitor.visitArgumentDefinitionTest(this); | 732 accept(ASTVisitor visitor) => visitor.visitArgumentDefinitionTest(this); |
| 652 Token get beginToken => _question; | 733 Token get beginToken => _question; |
| 653 Token get endToken => _identifier.endToken; | 734 Token get endToken => _identifier.endToken; |
| 735 |
| 654 /** | 736 /** |
| 655 * Return the identifier representing the argument being tested. | 737 * Return the identifier representing the argument being tested. |
| 656 * @return the identifier representing the argument being tested | 738 * @return the identifier representing the argument being tested |
| 657 */ | 739 */ |
| 658 SimpleIdentifier get identifier => _identifier; | 740 SimpleIdentifier get identifier => _identifier; |
| 741 |
| 659 /** | 742 /** |
| 660 * Return the token representing the question mark. | 743 * Return the token representing the question mark. |
| 661 * @return the token representing the question mark | 744 * @return the token representing the question mark |
| 662 */ | 745 */ |
| 663 Token get question => _question; | 746 Token get question => _question; |
| 747 |
| 664 /** | 748 /** |
| 665 * Set the identifier representing the argument being tested to the given iden
tifier. | 749 * Set the identifier representing the argument being tested to the given iden
tifier. |
| 666 * @param identifier the identifier representing the argument being tested | 750 * @param identifier the identifier representing the argument being tested |
| 667 */ | 751 */ |
| 668 void set identifier(SimpleIdentifier identifier2) { | 752 void set identifier(SimpleIdentifier identifier2) { |
| 669 this._identifier = becomeParentOf(identifier2); | 753 this._identifier = becomeParentOf(identifier2); |
| 670 } | 754 } |
| 755 |
| 671 /** | 756 /** |
| 672 * Set the token representing the question mark to the given token. | 757 * Set the token representing the question mark to the given token. |
| 673 * @param question the token representing the question mark | 758 * @param question the token representing the question mark |
| 674 */ | 759 */ |
| 675 void set question(Token question2) { | 760 void set question(Token question2) { |
| 676 this._question = question2; | 761 this._question = question2; |
| 677 } | 762 } |
| 678 void visitChildren(ASTVisitor<Object> visitor) { | 763 void visitChildren(ASTVisitor<Object> visitor) { |
| 679 safelyVisitChild(_identifier, visitor); | 764 safelyVisitChild(_identifier, visitor); |
| 680 } | 765 } |
| 681 } | 766 } |
| 767 |
| 682 /** | 768 /** |
| 683 * Instances of the class {@code ArgumentList} represent a list of arguments in
the invocation of a | 769 * Instances of the class {@code ArgumentList} represent a list of arguments in
the invocation of a |
| 684 * executable element: a function, method, or constructor. | 770 * executable element: a function, method, or constructor. |
| 685 * <pre> | 771 * <pre> |
| 686 * argumentList ::= | 772 * argumentList ::= |
| 687 * '(' arguments? ')' | 773 * '(' arguments? ')' |
| 688 * arguments ::={@link NamedExpression namedArgument} (',' {@link NamedExpressio
n namedArgument}) | 774 * arguments ::={@link NamedExpression namedArgument} (',' {@link NamedExpressio
n namedArgument}) |
| 689 * | {@link Expression expressionList} (',' {@link NamedExpression namedArgument
}) | 775 * | {@link Expression expressionList} (',' {@link NamedExpression namedArgument
}) |
| 690 * </pre> | 776 * </pre> |
| 691 * @coverage dart.engine.ast | 777 * @coverage dart.engine.ast |
| 692 */ | 778 */ |
| 693 class ArgumentList extends ASTNode { | 779 class ArgumentList extends ASTNode { |
| 780 |
| 694 /** | 781 /** |
| 695 * The left parenthesis. | 782 * The left parenthesis. |
| 696 */ | 783 */ |
| 697 Token _leftParenthesis; | 784 Token _leftParenthesis; |
| 785 |
| 698 /** | 786 /** |
| 699 * The expressions producing the values of the arguments. | 787 * The expressions producing the values of the arguments. |
| 700 */ | 788 */ |
| 701 NodeList<Expression> _arguments; | 789 NodeList<Expression> _arguments; |
| 790 |
| 702 /** | 791 /** |
| 703 * The right parenthesis. | 792 * The right parenthesis. |
| 704 */ | 793 */ |
| 705 Token _rightParenthesis; | 794 Token _rightParenthesis; |
| 795 |
| 706 /** | 796 /** |
| 707 * An array containing the elements representing the parameters corresponding
to each of the | 797 * An array containing the elements representing the parameters corresponding
to each of the |
| 708 * arguments in this list, or {@code null} if the AST has not been resolved or
if the function or | 798 * arguments in this list, or {@code null} if the AST has not been resolved or
if the function or |
| 709 * method being invoked could not be determined. The array must be the same le
ngth as the number | 799 * method being invoked could not be determined. The array must be the same le
ngth as the number |
| 710 * of arguments, but can contain {@code null} entries if a given argument does
not correspond to a | 800 * of arguments, but can contain {@code null} entries if a given argument does
not correspond to a |
| 711 * formal parameter. | 801 * formal parameter. |
| 712 */ | 802 */ |
| 713 List<ParameterElement> _correspondingParameters; | 803 List<ParameterElement> _correspondingParameters; |
| 804 |
| 714 /** | 805 /** |
| 715 * Initialize a newly created list of arguments. | 806 * Initialize a newly created list of arguments. |
| 716 * @param leftParenthesis the left parenthesis | 807 * @param leftParenthesis the left parenthesis |
| 717 * @param arguments the expressions producing the values of the arguments | 808 * @param arguments the expressions producing the values of the arguments |
| 718 * @param rightParenthesis the right parenthesis | 809 * @param rightParenthesis the right parenthesis |
| 719 */ | 810 */ |
| 720 ArgumentList.full(Token leftParenthesis, List<Expression> arguments, Token rig
htParenthesis) { | 811 ArgumentList.full(Token leftParenthesis, List<Expression> arguments, Token rig
htParenthesis) { |
| 721 this._arguments = new NodeList<Expression>(this); | 812 this._arguments = new NodeList<Expression>(this); |
| 722 this._leftParenthesis = leftParenthesis; | 813 this._leftParenthesis = leftParenthesis; |
| 723 this._arguments.addAll(arguments); | 814 this._arguments.addAll(arguments); |
| 724 this._rightParenthesis = rightParenthesis; | 815 this._rightParenthesis = rightParenthesis; |
| 725 } | 816 } |
| 817 |
| 726 /** | 818 /** |
| 727 * Initialize a newly created list of arguments. | 819 * Initialize a newly created list of arguments. |
| 728 * @param leftParenthesis the left parenthesis | 820 * @param leftParenthesis the left parenthesis |
| 729 * @param arguments the expressions producing the values of the arguments | 821 * @param arguments the expressions producing the values of the arguments |
| 730 * @param rightParenthesis the right parenthesis | 822 * @param rightParenthesis the right parenthesis |
| 731 */ | 823 */ |
| 732 ArgumentList({Token leftParenthesis, List<Expression> arguments, Token rightPa
renthesis}) : this.full(leftParenthesis, arguments, rightParenthesis); | 824 ArgumentList({Token leftParenthesis, List<Expression> arguments, Token rightPa
renthesis}) : this.full(leftParenthesis, arguments, rightParenthesis); |
| 733 accept(ASTVisitor visitor) => visitor.visitArgumentList(this); | 825 accept(ASTVisitor visitor) => visitor.visitArgumentList(this); |
| 826 |
| 734 /** | 827 /** |
| 735 * Return the expressions producing the values of the arguments. Although the
language requires | 828 * Return the expressions producing the values of the arguments. Although the
language requires |
| 736 * that positional arguments appear before named arguments, this class allows
them to be | 829 * that positional arguments appear before named arguments, this class allows
them to be |
| 737 * intermixed. | 830 * intermixed. |
| 738 * @return the expressions producing the values of the arguments | 831 * @return the expressions producing the values of the arguments |
| 739 */ | 832 */ |
| 740 NodeList<Expression> get arguments => _arguments; | 833 NodeList<Expression> get arguments => _arguments; |
| 741 Token get beginToken => _leftParenthesis; | 834 Token get beginToken => _leftParenthesis; |
| 742 Token get endToken => _rightParenthesis; | 835 Token get endToken => _rightParenthesis; |
| 836 |
| 743 /** | 837 /** |
| 744 * Return the left parenthesis. | 838 * Return the left parenthesis. |
| 745 * @return the left parenthesis | 839 * @return the left parenthesis |
| 746 */ | 840 */ |
| 747 Token get leftParenthesis => _leftParenthesis; | 841 Token get leftParenthesis => _leftParenthesis; |
| 842 |
| 748 /** | 843 /** |
| 749 * Return the right parenthesis. | 844 * Return the right parenthesis. |
| 750 * @return the right parenthesis | 845 * @return the right parenthesis |
| 751 */ | 846 */ |
| 752 Token get rightParenthesis => _rightParenthesis; | 847 Token get rightParenthesis => _rightParenthesis; |
| 848 |
| 753 /** | 849 /** |
| 754 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given | 850 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given |
| 755 * array of parameters. The array of parameters must be the same length as the
number of | 851 * array of parameters. The array of parameters must be the same length as the
number of |
| 756 * arguments, but can contain {@code null} entries if a given argument does no
t correspond to a | 852 * arguments, but can contain {@code null} entries if a given argument does no
t correspond to a |
| 757 * formal parameter. | 853 * formal parameter. |
| 758 * @param parameters the parameter elements corresponding to the arguments | 854 * @param parameters the parameter elements corresponding to the arguments |
| 759 */ | 855 */ |
| 760 void set correspondingParameters(List<ParameterElement> parameters) { | 856 void set correspondingParameters(List<ParameterElement> parameters) { |
| 761 if (parameters.length != _arguments.length) { | 857 if (parameters.length != _arguments.length) { |
| 762 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); | 858 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); |
| 763 } | 859 } |
| 764 _correspondingParameters = parameters; | 860 _correspondingParameters = parameters; |
| 765 } | 861 } |
| 862 |
| 766 /** | 863 /** |
| 767 * Set the left parenthesis to the given token. | 864 * Set the left parenthesis to the given token. |
| 768 * @param parenthesis the left parenthesis | 865 * @param parenthesis the left parenthesis |
| 769 */ | 866 */ |
| 770 void set leftParenthesis(Token parenthesis) { | 867 void set leftParenthesis(Token parenthesis) { |
| 771 _leftParenthesis = parenthesis; | 868 _leftParenthesis = parenthesis; |
| 772 } | 869 } |
| 870 |
| 773 /** | 871 /** |
| 774 * Set the right parenthesis to the given token. | 872 * Set the right parenthesis to the given token. |
| 775 * @param parenthesis the right parenthesis | 873 * @param parenthesis the right parenthesis |
| 776 */ | 874 */ |
| 777 void set rightParenthesis(Token parenthesis) { | 875 void set rightParenthesis(Token parenthesis) { |
| 778 _rightParenthesis = parenthesis; | 876 _rightParenthesis = parenthesis; |
| 779 } | 877 } |
| 780 void visitChildren(ASTVisitor<Object> visitor) { | 878 void visitChildren(ASTVisitor<Object> visitor) { |
| 781 _arguments.accept(visitor); | 879 _arguments.accept(visitor); |
| 782 } | 880 } |
| 881 |
| 783 /** | 882 /** |
| 784 * If the given expression is a child of this list, and the AST structure has
been resolved, and | 883 * If the given expression is a child of this list, and the AST structure has
been resolved, and |
| 785 * the function being invoked is known, and the expression corresponds to one
of the parameters of | 884 * the function being invoked is known, and the expression corresponds to one
of the parameters of |
| 786 * the function being invoked, then return the parameter element representing
the parameter to | 885 * the function being invoked, then return the parameter element representing
the parameter to |
| 787 * which the value of the given expression will be bound. Otherwise, return {@
code null}. | 886 * which the value of the given expression will be bound. Otherwise, return {@
code null}. |
| 788 * <p> | 887 * <p> |
| 789 * This method is only intended to be used by {@link Expression#getParameterEl
ement()}. | 888 * This method is only intended to be used by {@link Expression#getParameterEl
ement()}. |
| 790 * @param expression the expression corresponding to the parameter to be retur
ned | 889 * @param expression the expression corresponding to the parameter to be retur
ned |
| 791 * @return the parameter element representing the parameter to which the value
of the expression | 890 * @return the parameter element representing the parameter to which the value
of the expression |
| 792 * will be bound | 891 * will be bound |
| 793 */ | 892 */ |
| 794 ParameterElement getParameterElementFor(Expression expression) { | 893 ParameterElement getParameterElementFor(Expression expression) { |
| 795 if (_correspondingParameters == null) { | 894 if (_correspondingParameters == null) { |
| 796 return null; | 895 return null; |
| 797 } | 896 } |
| 798 int index = _arguments.indexOf(expression); | 897 int index = _arguments.indexOf(expression); |
| 799 if (index < 0) { | 898 if (index < 0) { |
| 800 return null; | 899 return null; |
| 801 } | 900 } |
| 802 return _correspondingParameters[index]; | 901 return _correspondingParameters[index]; |
| 803 } | 902 } |
| 804 } | 903 } |
| 904 |
| 805 /** | 905 /** |
| 806 * Instances of the class {@code AsExpression} represent an 'as' expression. | 906 * Instances of the class {@code AsExpression} represent an 'as' expression. |
| 807 * <pre> | 907 * <pre> |
| 808 * asExpression ::={@link Expression expression} 'as' {@link TypeName type}</pre
> | 908 * asExpression ::={@link Expression expression} 'as' {@link TypeName type}</pre
> |
| 809 * @coverage dart.engine.ast | 909 * @coverage dart.engine.ast |
| 810 */ | 910 */ |
| 811 class AsExpression extends Expression { | 911 class AsExpression extends Expression { |
| 912 |
| 812 /** | 913 /** |
| 813 * The expression used to compute the value being cast. | 914 * The expression used to compute the value being cast. |
| 814 */ | 915 */ |
| 815 Expression _expression; | 916 Expression _expression; |
| 917 |
| 816 /** | 918 /** |
| 817 * The as operator. | 919 * The as operator. |
| 818 */ | 920 */ |
| 819 Token _asOperator; | 921 Token _asOperator; |
| 922 |
| 820 /** | 923 /** |
| 821 * The name of the type being cast to. | 924 * The name of the type being cast to. |
| 822 */ | 925 */ |
| 823 TypeName _type; | 926 TypeName _type; |
| 927 |
| 824 /** | 928 /** |
| 825 * Initialize a newly created as expression. | 929 * Initialize a newly created as expression. |
| 826 * @param expression the expression used to compute the value being cast | 930 * @param expression the expression used to compute the value being cast |
| 827 * @param isOperator the is operator | 931 * @param isOperator the is operator |
| 828 * @param type the name of the type being cast to | 932 * @param type the name of the type being cast to |
| 829 */ | 933 */ |
| 830 AsExpression.full(Expression expression, Token isOperator, TypeName type) { | 934 AsExpression.full(Expression expression, Token isOperator, TypeName type) { |
| 831 this._expression = becomeParentOf(expression); | 935 this._expression = becomeParentOf(expression); |
| 832 this._asOperator = isOperator; | 936 this._asOperator = isOperator; |
| 833 this._type = becomeParentOf(type); | 937 this._type = becomeParentOf(type); |
| 834 } | 938 } |
| 939 |
| 835 /** | 940 /** |
| 836 * Initialize a newly created as expression. | 941 * Initialize a newly created as expression. |
| 837 * @param expression the expression used to compute the value being cast | 942 * @param expression the expression used to compute the value being cast |
| 838 * @param isOperator the is operator | 943 * @param isOperator the is operator |
| 839 * @param type the name of the type being cast to | 944 * @param type the name of the type being cast to |
| 840 */ | 945 */ |
| 841 AsExpression({Expression expression, Token isOperator, TypeName type}) : this.
full(expression, isOperator, type); | 946 AsExpression({Expression expression, Token isOperator, TypeName type}) : this.
full(expression, isOperator, type); |
| 842 accept(ASTVisitor visitor) => visitor.visitAsExpression(this); | 947 accept(ASTVisitor visitor) => visitor.visitAsExpression(this); |
| 948 |
| 843 /** | 949 /** |
| 844 * Return the is operator being applied. | 950 * Return the is operator being applied. |
| 845 * @return the is operator being applied | 951 * @return the is operator being applied |
| 846 */ | 952 */ |
| 847 Token get asOperator => _asOperator; | 953 Token get asOperator => _asOperator; |
| 848 Token get beginToken => _expression.beginToken; | 954 Token get beginToken => _expression.beginToken; |
| 849 Token get endToken => _type.endToken; | 955 Token get endToken => _type.endToken; |
| 956 |
| 850 /** | 957 /** |
| 851 * Return the expression used to compute the value being cast. | 958 * Return the expression used to compute the value being cast. |
| 852 * @return the expression used to compute the value being cast | 959 * @return the expression used to compute the value being cast |
| 853 */ | 960 */ |
| 854 Expression get expression => _expression; | 961 Expression get expression => _expression; |
| 962 |
| 855 /** | 963 /** |
| 856 * Return the name of the type being cast to. | 964 * Return the name of the type being cast to. |
| 857 * @return the name of the type being cast to | 965 * @return the name of the type being cast to |
| 858 */ | 966 */ |
| 859 TypeName get type => _type; | 967 TypeName get type => _type; |
| 968 |
| 860 /** | 969 /** |
| 861 * Set the is operator being applied to the given operator. | 970 * Set the is operator being applied to the given operator. |
| 862 * @param asOperator the is operator being applied | 971 * @param asOperator the is operator being applied |
| 863 */ | 972 */ |
| 864 void set asOperator(Token asOperator2) { | 973 void set asOperator(Token asOperator2) { |
| 865 this._asOperator = asOperator2; | 974 this._asOperator = asOperator2; |
| 866 } | 975 } |
| 976 |
| 867 /** | 977 /** |
| 868 * Set the expression used to compute the value being cast to the given expres
sion. | 978 * Set the expression used to compute the value being cast to the given expres
sion. |
| 869 * @param expression the expression used to compute the value being cast | 979 * @param expression the expression used to compute the value being cast |
| 870 */ | 980 */ |
| 871 void set expression(Expression expression2) { | 981 void set expression(Expression expression2) { |
| 872 this._expression = becomeParentOf(expression2); | 982 this._expression = becomeParentOf(expression2); |
| 873 } | 983 } |
| 984 |
| 874 /** | 985 /** |
| 875 * Set the name of the type being cast to to the given name. | 986 * Set the name of the type being cast to to the given name. |
| 876 * @param name the name of the type being cast to | 987 * @param name the name of the type being cast to |
| 877 */ | 988 */ |
| 878 void set type(TypeName name) { | 989 void set type(TypeName name) { |
| 879 this._type = becomeParentOf(name); | 990 this._type = becomeParentOf(name); |
| 880 } | 991 } |
| 881 void visitChildren(ASTVisitor<Object> visitor) { | 992 void visitChildren(ASTVisitor<Object> visitor) { |
| 882 safelyVisitChild(_expression, visitor); | 993 safelyVisitChild(_expression, visitor); |
| 883 safelyVisitChild(_type, visitor); | 994 safelyVisitChild(_type, visitor); |
| 884 } | 995 } |
| 885 } | 996 } |
| 997 |
| 886 /** | 998 /** |
| 887 * Instances of the class {@code AssertStatement} represent an assert statement. | 999 * Instances of the class {@code AssertStatement} represent an assert statement. |
| 888 * <pre> | 1000 * <pre> |
| 889 * assertStatement ::= | 1001 * assertStatement ::= |
| 890 * 'assert' '(' {@link Expression conditionalExpression} ')' ';' | 1002 * 'assert' '(' {@link Expression conditionalExpression} ')' ';' |
| 891 * </pre> | 1003 * </pre> |
| 892 * @coverage dart.engine.ast | 1004 * @coverage dart.engine.ast |
| 893 */ | 1005 */ |
| 894 class AssertStatement extends Statement { | 1006 class AssertStatement extends Statement { |
| 1007 |
| 895 /** | 1008 /** |
| 896 * The token representing the 'assert' keyword. | 1009 * The token representing the 'assert' keyword. |
| 897 */ | 1010 */ |
| 898 Token _keyword; | 1011 Token _keyword; |
| 1012 |
| 899 /** | 1013 /** |
| 900 * The left parenthesis. | 1014 * The left parenthesis. |
| 901 */ | 1015 */ |
| 902 Token _leftParenthesis; | 1016 Token _leftParenthesis; |
| 1017 |
| 903 /** | 1018 /** |
| 904 * The condition that is being asserted to be {@code true}. | 1019 * The condition that is being asserted to be {@code true}. |
| 905 */ | 1020 */ |
| 906 Expression _condition; | 1021 Expression _condition; |
| 1022 |
| 907 /** | 1023 /** |
| 908 * The right parenthesis. | 1024 * The right parenthesis. |
| 909 */ | 1025 */ |
| 910 Token _rightParenthesis; | 1026 Token _rightParenthesis; |
| 1027 |
| 911 /** | 1028 /** |
| 912 * The semicolon terminating the statement. | 1029 * The semicolon terminating the statement. |
| 913 */ | 1030 */ |
| 914 Token _semicolon; | 1031 Token _semicolon; |
| 1032 |
| 915 /** | 1033 /** |
| 916 * Initialize a newly created assert statement. | 1034 * Initialize a newly created assert statement. |
| 917 * @param keyword the token representing the 'assert' keyword | 1035 * @param keyword the token representing the 'assert' keyword |
| 918 * @param leftParenthesis the left parenthesis | 1036 * @param leftParenthesis the left parenthesis |
| 919 * @param condition the condition that is being asserted to be {@code true} | 1037 * @param condition the condition that is being asserted to be {@code true} |
| 920 * @param rightParenthesis the right parenthesis | 1038 * @param rightParenthesis the right parenthesis |
| 921 * @param semicolon the semicolon terminating the statement | 1039 * @param semicolon the semicolon terminating the statement |
| 922 */ | 1040 */ |
| 923 AssertStatement.full(Token keyword, Token leftParenthesis, Expression conditio
n, Token rightParenthesis, Token semicolon) { | 1041 AssertStatement.full(Token keyword, Token leftParenthesis, Expression conditio
n, Token rightParenthesis, Token semicolon) { |
| 924 this._keyword = keyword; | 1042 this._keyword = keyword; |
| 925 this._leftParenthesis = leftParenthesis; | 1043 this._leftParenthesis = leftParenthesis; |
| 926 this._condition = becomeParentOf(condition); | 1044 this._condition = becomeParentOf(condition); |
| 927 this._rightParenthesis = rightParenthesis; | 1045 this._rightParenthesis = rightParenthesis; |
| 928 this._semicolon = semicolon; | 1046 this._semicolon = semicolon; |
| 929 } | 1047 } |
| 1048 |
| 930 /** | 1049 /** |
| 931 * Initialize a newly created assert statement. | 1050 * Initialize a newly created assert statement. |
| 932 * @param keyword the token representing the 'assert' keyword | 1051 * @param keyword the token representing the 'assert' keyword |
| 933 * @param leftParenthesis the left parenthesis | 1052 * @param leftParenthesis the left parenthesis |
| 934 * @param condition the condition that is being asserted to be {@code true} | 1053 * @param condition the condition that is being asserted to be {@code true} |
| 935 * @param rightParenthesis the right parenthesis | 1054 * @param rightParenthesis the right parenthesis |
| 936 * @param semicolon the semicolon terminating the statement | 1055 * @param semicolon the semicolon terminating the statement |
| 937 */ | 1056 */ |
| 938 AssertStatement({Token keyword, Token leftParenthesis, Expression condition, T
oken rightParenthesis, Token semicolon}) : this.full(keyword, leftParenthesis, c
ondition, rightParenthesis, semicolon); | 1057 AssertStatement({Token keyword, Token leftParenthesis, Expression condition, T
oken rightParenthesis, Token semicolon}) : this.full(keyword, leftParenthesis, c
ondition, rightParenthesis, semicolon); |
| 939 accept(ASTVisitor visitor) => visitor.visitAssertStatement(this); | 1058 accept(ASTVisitor visitor) => visitor.visitAssertStatement(this); |
| 940 Token get beginToken => _keyword; | 1059 Token get beginToken => _keyword; |
| 1060 |
| 941 /** | 1061 /** |
| 942 * Return the condition that is being asserted to be {@code true}. | 1062 * Return the condition that is being asserted to be {@code true}. |
| 943 * @return the condition that is being asserted to be {@code true} | 1063 * @return the condition that is being asserted to be {@code true} |
| 944 */ | 1064 */ |
| 945 Expression get condition => _condition; | 1065 Expression get condition => _condition; |
| 946 Token get endToken => _semicolon; | 1066 Token get endToken => _semicolon; |
| 1067 |
| 947 /** | 1068 /** |
| 948 * Return the token representing the 'assert' keyword. | 1069 * Return the token representing the 'assert' keyword. |
| 949 * @return the token representing the 'assert' keyword | 1070 * @return the token representing the 'assert' keyword |
| 950 */ | 1071 */ |
| 951 Token get keyword => _keyword; | 1072 Token get keyword => _keyword; |
| 1073 |
| 952 /** | 1074 /** |
| 953 * Return the left parenthesis. | 1075 * Return the left parenthesis. |
| 954 * @return the left parenthesis | 1076 * @return the left parenthesis |
| 955 */ | 1077 */ |
| 956 Token get leftParenthesis => _leftParenthesis; | 1078 Token get leftParenthesis => _leftParenthesis; |
| 1079 |
| 957 /** | 1080 /** |
| 958 * Return the right parenthesis. | 1081 * Return the right parenthesis. |
| 959 * @return the right parenthesis | 1082 * @return the right parenthesis |
| 960 */ | 1083 */ |
| 961 Token get rightParenthesis => _rightParenthesis; | 1084 Token get rightParenthesis => _rightParenthesis; |
| 1085 |
| 962 /** | 1086 /** |
| 963 * Return the semicolon terminating the statement. | 1087 * Return the semicolon terminating the statement. |
| 964 * @return the semicolon terminating the statement | 1088 * @return the semicolon terminating the statement |
| 965 */ | 1089 */ |
| 966 Token get semicolon => _semicolon; | 1090 Token get semicolon => _semicolon; |
| 1091 |
| 967 /** | 1092 /** |
| 968 * Set the condition that is being asserted to be {@code true} to the given ex
pression. | 1093 * Set the condition that is being asserted to be {@code true} to the given ex
pression. |
| 969 * @param the condition that is being asserted to be {@code true} | 1094 * @param the condition that is being asserted to be {@code true} |
| 970 */ | 1095 */ |
| 971 void set condition(Expression condition2) { | 1096 void set condition(Expression condition2) { |
| 972 this._condition = becomeParentOf(condition2); | 1097 this._condition = becomeParentOf(condition2); |
| 973 } | 1098 } |
| 1099 |
| 974 /** | 1100 /** |
| 975 * Set the token representing the 'assert' keyword to the given token. | 1101 * Set the token representing the 'assert' keyword to the given token. |
| 976 * @param keyword the token representing the 'assert' keyword | 1102 * @param keyword the token representing the 'assert' keyword |
| 977 */ | 1103 */ |
| 978 void set keyword(Token keyword2) { | 1104 void set keyword(Token keyword2) { |
| 979 this._keyword = keyword2; | 1105 this._keyword = keyword2; |
| 980 } | 1106 } |
| 1107 |
| 981 /** | 1108 /** |
| 982 * Set the left parenthesis to the given token. | 1109 * Set the left parenthesis to the given token. |
| 983 * @param the left parenthesis | 1110 * @param the left parenthesis |
| 984 */ | 1111 */ |
| 985 void set leftParenthesis(Token leftParenthesis2) { | 1112 void set leftParenthesis(Token leftParenthesis2) { |
| 986 this._leftParenthesis = leftParenthesis2; | 1113 this._leftParenthesis = leftParenthesis2; |
| 987 } | 1114 } |
| 1115 |
| 988 /** | 1116 /** |
| 989 * Set the right parenthesis to the given token. | 1117 * Set the right parenthesis to the given token. |
| 990 * @param rightParenthesis the right parenthesis | 1118 * @param rightParenthesis the right parenthesis |
| 991 */ | 1119 */ |
| 992 void set rightParenthesis(Token rightParenthesis2) { | 1120 void set rightParenthesis(Token rightParenthesis2) { |
| 993 this._rightParenthesis = rightParenthesis2; | 1121 this._rightParenthesis = rightParenthesis2; |
| 994 } | 1122 } |
| 1123 |
| 995 /** | 1124 /** |
| 996 * Set the semicolon terminating the statement to the given token. | 1125 * Set the semicolon terminating the statement to the given token. |
| 997 * @param semicolon the semicolon terminating the statement | 1126 * @param semicolon the semicolon terminating the statement |
| 998 */ | 1127 */ |
| 999 void set semicolon(Token semicolon2) { | 1128 void set semicolon(Token semicolon2) { |
| 1000 this._semicolon = semicolon2; | 1129 this._semicolon = semicolon2; |
| 1001 } | 1130 } |
| 1002 void visitChildren(ASTVisitor<Object> visitor) { | 1131 void visitChildren(ASTVisitor<Object> visitor) { |
| 1003 safelyVisitChild(_condition, visitor); | 1132 safelyVisitChild(_condition, visitor); |
| 1004 } | 1133 } |
| 1005 } | 1134 } |
| 1135 |
| 1006 /** | 1136 /** |
| 1007 * Instances of the class {@code AssignmentExpression} represent an assignment e
xpression. | 1137 * Instances of the class {@code AssignmentExpression} represent an assignment e
xpression. |
| 1008 * <pre> | 1138 * <pre> |
| 1009 * assignmentExpression ::={@link Expression leftHandSide} {@link Token operator
} {@link Expression rightHandSide}</pre> | 1139 * assignmentExpression ::={@link Expression leftHandSide} {@link Token operator
} {@link Expression rightHandSide}</pre> |
| 1010 * @coverage dart.engine.ast | 1140 * @coverage dart.engine.ast |
| 1011 */ | 1141 */ |
| 1012 class AssignmentExpression extends Expression { | 1142 class AssignmentExpression extends Expression { |
| 1143 |
| 1013 /** | 1144 /** |
| 1014 * The expression used to compute the left hand side. | 1145 * The expression used to compute the left hand side. |
| 1015 */ | 1146 */ |
| 1016 Expression _leftHandSide; | 1147 Expression _leftHandSide; |
| 1148 |
| 1017 /** | 1149 /** |
| 1018 * The assignment operator being applied. | 1150 * The assignment operator being applied. |
| 1019 */ | 1151 */ |
| 1020 Token _operator; | 1152 Token _operator; |
| 1153 |
| 1021 /** | 1154 /** |
| 1022 * The expression used to compute the right hand side. | 1155 * The expression used to compute the right hand side. |
| 1023 */ | 1156 */ |
| 1024 Expression _rightHandSide; | 1157 Expression _rightHandSide; |
| 1158 |
| 1025 /** | 1159 /** |
| 1026 * The element associated with the operator, or {@code null} if the AST struct
ure has not been | 1160 * The element associated with the operator based on the static type of the le
ft-hand-side, or{@code null} if the AST structure has not been resolved, if the
operator is not a compound |
| 1027 * resolved, if the operator is not a compound operator, or if the operator co
uld not be resolved. | 1161 * operator, or if the operator could not be resolved. |
| 1028 */ | 1162 */ |
| 1029 MethodElement _element; | 1163 MethodElement _staticElement; |
| 1164 |
| 1165 /** |
| 1166 * The element associated with the operator based on the propagated type of th
e left-hand-side, or{@code null} if the AST structure has not been resolved, if
the operator is not a compound |
| 1167 * operator, or if the operator could not be resolved. |
| 1168 */ |
| 1169 MethodElement _propagatedElement; |
| 1170 |
| 1030 /** | 1171 /** |
| 1031 * Initialize a newly created assignment expression. | 1172 * Initialize a newly created assignment expression. |
| 1032 * @param leftHandSide the expression used to compute the left hand side | 1173 * @param leftHandSide the expression used to compute the left hand side |
| 1033 * @param operator the assignment operator being applied | 1174 * @param operator the assignment operator being applied |
| 1034 * @param rightHandSide the expression used to compute the right hand side | 1175 * @param rightHandSide the expression used to compute the right hand side |
| 1035 */ | 1176 */ |
| 1036 AssignmentExpression.full(Expression leftHandSide, Token operator, Expression
rightHandSide) { | 1177 AssignmentExpression.full(Expression leftHandSide, Token operator, Expression
rightHandSide) { |
| 1037 this._leftHandSide = becomeParentOf(leftHandSide); | 1178 this._leftHandSide = becomeParentOf(leftHandSide); |
| 1038 this._operator = operator; | 1179 this._operator = operator; |
| 1039 this._rightHandSide = becomeParentOf(rightHandSide); | 1180 this._rightHandSide = becomeParentOf(rightHandSide); |
| 1040 } | 1181 } |
| 1182 |
| 1041 /** | 1183 /** |
| 1042 * Initialize a newly created assignment expression. | 1184 * Initialize a newly created assignment expression. |
| 1043 * @param leftHandSide the expression used to compute the left hand side | 1185 * @param leftHandSide the expression used to compute the left hand side |
| 1044 * @param operator the assignment operator being applied | 1186 * @param operator the assignment operator being applied |
| 1045 * @param rightHandSide the expression used to compute the right hand side | 1187 * @param rightHandSide the expression used to compute the right hand side |
| 1046 */ | 1188 */ |
| 1047 AssignmentExpression({Expression leftHandSide, Token operator, Expression righ
tHandSide}) : this.full(leftHandSide, operator, rightHandSide); | 1189 AssignmentExpression({Expression leftHandSide, Token operator, Expression righ
tHandSide}) : this.full(leftHandSide, operator, rightHandSide); |
| 1048 accept(ASTVisitor visitor) => visitor.visitAssignmentExpression(this); | 1190 accept(ASTVisitor visitor) => visitor.visitAssignmentExpression(this); |
| 1049 Token get beginToken => _leftHandSide.beginToken; | 1191 Token get beginToken => _leftHandSide.beginToken; |
| 1192 |
| 1050 /** | 1193 /** |
| 1051 * Return the element associated with the operator, or {@code null} if the AST
structure has not | 1194 * Return the element associated with the operator based on the propagated typ
e of the |
| 1052 * been resolved, if the operator is not a compound operator, or if the operat
or could not be | 1195 * left-hand-side, or {@code null} if the AST structure has not been resolved,
if the operator is |
| 1053 * resolved. One example of the latter case is an operator that is not defined
for the type of the | 1196 * not a compound operator, or if the operator could not be resolved. One exam
ple of the latter |
| 1054 * left-hand operand. | 1197 * case is an operator that is not defined for the type of the left-hand opera
nd. |
| 1055 * @return the element associated with the operator | 1198 * @return the element associated with the operator |
| 1056 */ | 1199 */ |
| 1057 MethodElement get element => _element; | 1200 MethodElement get element => _propagatedElement; |
| 1058 Token get endToken => _rightHandSide.endToken; | 1201 Token get endToken => _rightHandSide.endToken; |
| 1202 |
| 1059 /** | 1203 /** |
| 1060 * Set the expression used to compute the left hand side to the given expressi
on. | 1204 * Set the expression used to compute the left hand side to the given expressi
on. |
| 1061 * @return the expression used to compute the left hand side | 1205 * @return the expression used to compute the left hand side |
| 1062 */ | 1206 */ |
| 1063 Expression get leftHandSide => _leftHandSide; | 1207 Expression get leftHandSide => _leftHandSide; |
| 1208 |
| 1064 /** | 1209 /** |
| 1065 * Return the assignment operator being applied. | 1210 * Return the assignment operator being applied. |
| 1066 * @return the assignment operator being applied | 1211 * @return the assignment operator being applied |
| 1067 */ | 1212 */ |
| 1068 Token get operator => _operator; | 1213 Token get operator => _operator; |
| 1214 |
| 1069 /** | 1215 /** |
| 1070 * Return the expression used to compute the right hand side. | 1216 * Return the expression used to compute the right hand side. |
| 1071 * @return the expression used to compute the right hand side | 1217 * @return the expression used to compute the right hand side |
| 1072 */ | 1218 */ |
| 1073 Expression get rightHandSide => _rightHandSide; | 1219 Expression get rightHandSide => _rightHandSide; |
| 1220 |
| 1074 /** | 1221 /** |
| 1075 * Set the element associated with the operator to the given element. | 1222 * Return the element associated with the operator based on the static type of
the left-hand-side, |
| 1076 * @param element the element associated with the operator | 1223 * or {@code null} if the AST structure has not been resolved, if the operator
is not a compound |
| 1224 * operator, or if the operator could not be resolved. One example of the latt
er case is an |
| 1225 * operator that is not defined for the type of the left-hand operand. |
| 1226 * @return the element associated with the operator |
| 1227 */ |
| 1228 MethodElement get staticElement => _staticElement; |
| 1229 |
| 1230 /** |
| 1231 * Set the element associated with the operator based on the propagated type o
f the left-hand-side |
| 1232 * to the given element. |
| 1233 * @param element the element to be associated with the operator |
| 1077 */ | 1234 */ |
| 1078 void set element(MethodElement element2) { | 1235 void set element(MethodElement element2) { |
| 1079 this._element = element2; | 1236 _propagatedElement = element2; |
| 1080 } | 1237 } |
| 1238 |
| 1081 /** | 1239 /** |
| 1082 * Return the expression used to compute the left hand side. | 1240 * Return the expression used to compute the left hand side. |
| 1083 * @param expression the expression used to compute the left hand side | 1241 * @param expression the expression used to compute the left hand side |
| 1084 */ | 1242 */ |
| 1085 void set leftHandSide(Expression expression) { | 1243 void set leftHandSide(Expression expression) { |
| 1086 _leftHandSide = becomeParentOf(expression); | 1244 _leftHandSide = becomeParentOf(expression); |
| 1087 } | 1245 } |
| 1246 |
| 1088 /** | 1247 /** |
| 1089 * Set the assignment operator being applied to the given operator. | 1248 * Set the assignment operator being applied to the given operator. |
| 1090 * @param operator the assignment operator being applied | 1249 * @param operator the assignment operator being applied |
| 1091 */ | 1250 */ |
| 1092 void set operator(Token operator2) { | 1251 void set operator(Token operator2) { |
| 1093 this._operator = operator2; | 1252 this._operator = operator2; |
| 1094 } | 1253 } |
| 1254 |
| 1095 /** | 1255 /** |
| 1096 * Set the expression used to compute the left hand side to the given expressi
on. | 1256 * Set the expression used to compute the left hand side to the given expressi
on. |
| 1097 * @param expression the expression used to compute the left hand side | 1257 * @param expression the expression used to compute the left hand side |
| 1098 */ | 1258 */ |
| 1099 void set rightHandSide(Expression expression) { | 1259 void set rightHandSide(Expression expression) { |
| 1100 _rightHandSide = becomeParentOf(expression); | 1260 _rightHandSide = becomeParentOf(expression); |
| 1101 } | 1261 } |
| 1262 |
| 1263 /** |
| 1264 * Set the element associated with the operator based on the static type of th
e left-hand-side to |
| 1265 * the given element. |
| 1266 * @param element the static element to be associated with the operator |
| 1267 */ |
| 1268 void set staticElement(MethodElement element) { |
| 1269 _staticElement = element; |
| 1270 } |
| 1102 void visitChildren(ASTVisitor<Object> visitor) { | 1271 void visitChildren(ASTVisitor<Object> visitor) { |
| 1103 safelyVisitChild(_leftHandSide, visitor); | 1272 safelyVisitChild(_leftHandSide, visitor); |
| 1104 safelyVisitChild(_rightHandSide, visitor); | 1273 safelyVisitChild(_rightHandSide, visitor); |
| 1105 } | 1274 } |
| 1106 } | 1275 } |
| 1276 |
| 1107 /** | 1277 /** |
| 1108 * Instances of the class {@code BinaryExpression} represent a binary (infix) ex
pression. | 1278 * Instances of the class {@code BinaryExpression} represent a binary (infix) ex
pression. |
| 1109 * <pre> | 1279 * <pre> |
| 1110 * binaryExpression ::={@link Expression leftOperand} {@link Token operator} {@l
ink Expression rightOperand}</pre> | 1280 * binaryExpression ::={@link Expression leftOperand} {@link Token operator} {@l
ink Expression rightOperand}</pre> |
| 1111 * @coverage dart.engine.ast | 1281 * @coverage dart.engine.ast |
| 1112 */ | 1282 */ |
| 1113 class BinaryExpression extends Expression { | 1283 class BinaryExpression extends Expression { |
| 1284 |
| 1114 /** | 1285 /** |
| 1115 * The expression used to compute the left operand. | 1286 * The expression used to compute the left operand. |
| 1116 */ | 1287 */ |
| 1117 Expression _leftOperand; | 1288 Expression _leftOperand; |
| 1289 |
| 1118 /** | 1290 /** |
| 1119 * The binary operator being applied. | 1291 * The binary operator being applied. |
| 1120 */ | 1292 */ |
| 1121 Token _operator; | 1293 Token _operator; |
| 1294 |
| 1122 /** | 1295 /** |
| 1123 * The expression used to compute the right operand. | 1296 * The expression used to compute the right operand. |
| 1124 */ | 1297 */ |
| 1125 Expression _rightOperand; | 1298 Expression _rightOperand; |
| 1299 |
| 1126 /** | 1300 /** |
| 1127 * The element associated with the operator, or {@code null} if the AST struct
ure has not been | 1301 * The element associated with the operator based on the static type of the le
ft operand, or{@code null} if the AST structure has not been resolved, if the op
erator is not user definable, |
| 1128 * resolved, if the operator is not user definable, or if the operator could n
ot be resolved. | 1302 * or if the operator could not be resolved. |
| 1129 */ | 1303 */ |
| 1130 MethodElement _element; | 1304 MethodElement _staticElement; |
| 1305 |
| 1306 /** |
| 1307 * The element associated with the operator based on the propagated type of th
e left operand, or{@code null} if the AST structure has not been resolved, if th
e operator is not user definable, |
| 1308 * or if the operator could not be resolved. |
| 1309 */ |
| 1310 MethodElement _propagatedElement; |
| 1311 |
| 1131 /** | 1312 /** |
| 1132 * Initialize a newly created binary expression. | 1313 * Initialize a newly created binary expression. |
| 1133 * @param leftOperand the expression used to compute the left operand | 1314 * @param leftOperand the expression used to compute the left operand |
| 1134 * @param operator the binary operator being applied | 1315 * @param operator the binary operator being applied |
| 1135 * @param rightOperand the expression used to compute the right operand | 1316 * @param rightOperand the expression used to compute the right operand |
| 1136 */ | 1317 */ |
| 1137 BinaryExpression.full(Expression leftOperand, Token operator, Expression right
Operand) { | 1318 BinaryExpression.full(Expression leftOperand, Token operator, Expression right
Operand) { |
| 1138 this._leftOperand = becomeParentOf(leftOperand); | 1319 this._leftOperand = becomeParentOf(leftOperand); |
| 1139 this._operator = operator; | 1320 this._operator = operator; |
| 1140 this._rightOperand = becomeParentOf(rightOperand); | 1321 this._rightOperand = becomeParentOf(rightOperand); |
| 1141 } | 1322 } |
| 1323 |
| 1142 /** | 1324 /** |
| 1143 * Initialize a newly created binary expression. | 1325 * Initialize a newly created binary expression. |
| 1144 * @param leftOperand the expression used to compute the left operand | 1326 * @param leftOperand the expression used to compute the left operand |
| 1145 * @param operator the binary operator being applied | 1327 * @param operator the binary operator being applied |
| 1146 * @param rightOperand the expression used to compute the right operand | 1328 * @param rightOperand the expression used to compute the right operand |
| 1147 */ | 1329 */ |
| 1148 BinaryExpression({Expression leftOperand, Token operator, Expression rightOper
and}) : this.full(leftOperand, operator, rightOperand); | 1330 BinaryExpression({Expression leftOperand, Token operator, Expression rightOper
and}) : this.full(leftOperand, operator, rightOperand); |
| 1149 accept(ASTVisitor visitor) => visitor.visitBinaryExpression(this); | 1331 accept(ASTVisitor visitor) => visitor.visitBinaryExpression(this); |
| 1150 Token get beginToken => _leftOperand.beginToken; | 1332 Token get beginToken => _leftOperand.beginToken; |
| 1333 |
| 1151 /** | 1334 /** |
| 1152 * Return the element associated with the operator, or {@code null} if the AST
structure has not | 1335 * Return the element associated with the operator based on the propagated typ
e of the left |
| 1153 * been resolved, if the operator is not user definable, or if the operator co
uld not be resolved. | 1336 * operand, or {@code null} if the AST structure has not been resolved, if the
operator is not |
| 1154 * One example of the latter case is an operator that is not defined for the t
ype of the left-hand | 1337 * user definable, or if the operator could not be resolved. One example of th
e latter case is an |
| 1155 * operand. | 1338 * operator that is not defined for the type of the left-hand operand. |
| 1156 * @return the element associated with the operator | 1339 * @return the element associated with the operator |
| 1157 */ | 1340 */ |
| 1158 MethodElement get element => _element; | 1341 MethodElement get element => _propagatedElement; |
| 1159 Token get endToken => _rightOperand.endToken; | 1342 Token get endToken => _rightOperand.endToken; |
| 1343 |
| 1160 /** | 1344 /** |
| 1161 * Return the expression used to compute the left operand. | 1345 * Return the expression used to compute the left operand. |
| 1162 * @return the expression used to compute the left operand | 1346 * @return the expression used to compute the left operand |
| 1163 */ | 1347 */ |
| 1164 Expression get leftOperand => _leftOperand; | 1348 Expression get leftOperand => _leftOperand; |
| 1349 |
| 1165 /** | 1350 /** |
| 1166 * Return the binary operator being applied. | 1351 * Return the binary operator being applied. |
| 1167 * @return the binary operator being applied | 1352 * @return the binary operator being applied |
| 1168 */ | 1353 */ |
| 1169 Token get operator => _operator; | 1354 Token get operator => _operator; |
| 1355 |
| 1170 /** | 1356 /** |
| 1171 * Return the expression used to compute the right operand. | 1357 * Return the expression used to compute the right operand. |
| 1172 * @return the expression used to compute the right operand | 1358 * @return the expression used to compute the right operand |
| 1173 */ | 1359 */ |
| 1174 Expression get rightOperand => _rightOperand; | 1360 Expression get rightOperand => _rightOperand; |
| 1361 |
| 1175 /** | 1362 /** |
| 1176 * Set the element associated with the operator to the given element. | 1363 * Return the element associated with the operator based on the static type of
the left operand, |
| 1177 * @param element the element associated with the operator | 1364 * or {@code null} if the AST structure has not been resolved, if the operator
is not user |
| 1365 * definable, or if the operator could not be resolved. One example of the lat
ter case is an |
| 1366 * operator that is not defined for the type of the left operand. |
| 1367 * @return the element associated with the operator |
| 1368 */ |
| 1369 MethodElement get staticElement => _staticElement; |
| 1370 |
| 1371 /** |
| 1372 * Set the element associated with the operator based on the propagated type o
f the left operand |
| 1373 * to the given element. |
| 1374 * @param element the element to be associated with the operator |
| 1178 */ | 1375 */ |
| 1179 void set element(MethodElement element2) { | 1376 void set element(MethodElement element2) { |
| 1180 this._element = element2; | 1377 _propagatedElement = element2; |
| 1181 } | 1378 } |
| 1379 |
| 1182 /** | 1380 /** |
| 1183 * Set the expression used to compute the left operand to the given expression
. | 1381 * Set the expression used to compute the left operand to the given expression
. |
| 1184 * @param expression the expression used to compute the left operand | 1382 * @param expression the expression used to compute the left operand |
| 1185 */ | 1383 */ |
| 1186 void set leftOperand(Expression expression) { | 1384 void set leftOperand(Expression expression) { |
| 1187 _leftOperand = becomeParentOf(expression); | 1385 _leftOperand = becomeParentOf(expression); |
| 1188 } | 1386 } |
| 1387 |
| 1189 /** | 1388 /** |
| 1190 * Set the binary operator being applied to the given operator. | 1389 * Set the binary operator being applied to the given operator. |
| 1191 * @return the binary operator being applied | 1390 * @return the binary operator being applied |
| 1192 */ | 1391 */ |
| 1193 void set operator(Token operator2) { | 1392 void set operator(Token operator2) { |
| 1194 this._operator = operator2; | 1393 this._operator = operator2; |
| 1195 } | 1394 } |
| 1395 |
| 1196 /** | 1396 /** |
| 1197 * Set the expression used to compute the right operand to the given expressio
n. | 1397 * Set the expression used to compute the right operand to the given expressio
n. |
| 1198 * @param expression the expression used to compute the right operand | 1398 * @param expression the expression used to compute the right operand |
| 1199 */ | 1399 */ |
| 1200 void set rightOperand(Expression expression) { | 1400 void set rightOperand(Expression expression) { |
| 1201 _rightOperand = becomeParentOf(expression); | 1401 _rightOperand = becomeParentOf(expression); |
| 1202 } | 1402 } |
| 1403 |
| 1404 /** |
| 1405 * Set the element associated with the operator based on the static type of th
e left operand to |
| 1406 * the given element. |
| 1407 * @param element the static element to be associated with the operator |
| 1408 */ |
| 1409 void set staticElement(MethodElement element) { |
| 1410 _staticElement = element; |
| 1411 } |
| 1203 void visitChildren(ASTVisitor<Object> visitor) { | 1412 void visitChildren(ASTVisitor<Object> visitor) { |
| 1204 safelyVisitChild(_leftOperand, visitor); | 1413 safelyVisitChild(_leftOperand, visitor); |
| 1205 safelyVisitChild(_rightOperand, visitor); | 1414 safelyVisitChild(_rightOperand, visitor); |
| 1206 } | 1415 } |
| 1416 |
| 1417 /** |
| 1418 * Return the parameter element representing the parameter to which the value
of the right operand |
| 1419 * will be bound. May be {@code null}. |
| 1420 * <p> |
| 1421 * This method is only intended to be used by {@link Expression#getParameterEl
ement()}. |
| 1422 * @return the parameter element representing the parameter to which the value
of the right |
| 1423 * operand will be bound |
| 1424 */ |
| 1425 ParameterElement get parameterElementForRightOperand { |
| 1426 if (_propagatedElement == null) { |
| 1427 return null; |
| 1428 } |
| 1429 List<ParameterElement> parameters2 = _propagatedElement.parameters; |
| 1430 if (parameters2.length < 1) { |
| 1431 return null; |
| 1432 } |
| 1433 return parameters2[0]; |
| 1434 } |
| 1207 } | 1435 } |
| 1436 |
| 1208 /** | 1437 /** |
| 1209 * Instances of the class {@code Block} represent a sequence of statements. | 1438 * Instances of the class {@code Block} represent a sequence of statements. |
| 1210 * <pre> | 1439 * <pre> |
| 1211 * block ::= | 1440 * block ::= |
| 1212 * '{' statement* '}' | 1441 * '{' statement* '}' |
| 1213 * </pre> | 1442 * </pre> |
| 1214 * @coverage dart.engine.ast | 1443 * @coverage dart.engine.ast |
| 1215 */ | 1444 */ |
| 1216 class Block extends Statement { | 1445 class Block extends Statement { |
| 1446 |
| 1217 /** | 1447 /** |
| 1218 * The left curly bracket. | 1448 * The left curly bracket. |
| 1219 */ | 1449 */ |
| 1220 Token _leftBracket; | 1450 Token _leftBracket; |
| 1451 |
| 1221 /** | 1452 /** |
| 1222 * The statements contained in the block. | 1453 * The statements contained in the block. |
| 1223 */ | 1454 */ |
| 1224 NodeList<Statement> _statements; | 1455 NodeList<Statement> _statements; |
| 1456 |
| 1225 /** | 1457 /** |
| 1226 * The right curly bracket. | 1458 * The right curly bracket. |
| 1227 */ | 1459 */ |
| 1228 Token _rightBracket; | 1460 Token _rightBracket; |
| 1461 |
| 1229 /** | 1462 /** |
| 1230 * Initialize a newly created block of code. | 1463 * Initialize a newly created block of code. |
| 1231 * @param leftBracket the left curly bracket | 1464 * @param leftBracket the left curly bracket |
| 1232 * @param statements the statements contained in the block | 1465 * @param statements the statements contained in the block |
| 1233 * @param rightBracket the right curly bracket | 1466 * @param rightBracket the right curly bracket |
| 1234 */ | 1467 */ |
| 1235 Block.full(Token leftBracket, List<Statement> statements, Token rightBracket)
{ | 1468 Block.full(Token leftBracket, List<Statement> statements, Token rightBracket)
{ |
| 1236 this._statements = new NodeList<Statement>(this); | 1469 this._statements = new NodeList<Statement>(this); |
| 1237 this._leftBracket = leftBracket; | 1470 this._leftBracket = leftBracket; |
| 1238 this._statements.addAll(statements); | 1471 this._statements.addAll(statements); |
| 1239 this._rightBracket = rightBracket; | 1472 this._rightBracket = rightBracket; |
| 1240 } | 1473 } |
| 1474 |
| 1241 /** | 1475 /** |
| 1242 * Initialize a newly created block of code. | 1476 * Initialize a newly created block of code. |
| 1243 * @param leftBracket the left curly bracket | 1477 * @param leftBracket the left curly bracket |
| 1244 * @param statements the statements contained in the block | 1478 * @param statements the statements contained in the block |
| 1245 * @param rightBracket the right curly bracket | 1479 * @param rightBracket the right curly bracket |
| 1246 */ | 1480 */ |
| 1247 Block({Token leftBracket, List<Statement> statements, Token rightBracket}) : t
his.full(leftBracket, statements, rightBracket); | 1481 Block({Token leftBracket, List<Statement> statements, Token rightBracket}) : t
his.full(leftBracket, statements, rightBracket); |
| 1248 accept(ASTVisitor visitor) => visitor.visitBlock(this); | 1482 accept(ASTVisitor visitor) => visitor.visitBlock(this); |
| 1249 Token get beginToken => _leftBracket; | 1483 Token get beginToken => _leftBracket; |
| 1250 Token get endToken => _rightBracket; | 1484 Token get endToken => _rightBracket; |
| 1485 |
| 1251 /** | 1486 /** |
| 1252 * Return the left curly bracket. | 1487 * Return the left curly bracket. |
| 1253 * @return the left curly bracket | 1488 * @return the left curly bracket |
| 1254 */ | 1489 */ |
| 1255 Token get leftBracket => _leftBracket; | 1490 Token get leftBracket => _leftBracket; |
| 1491 |
| 1256 /** | 1492 /** |
| 1257 * Return the right curly bracket. | 1493 * Return the right curly bracket. |
| 1258 * @return the right curly bracket | 1494 * @return the right curly bracket |
| 1259 */ | 1495 */ |
| 1260 Token get rightBracket => _rightBracket; | 1496 Token get rightBracket => _rightBracket; |
| 1497 |
| 1261 /** | 1498 /** |
| 1262 * Return the statements contained in the block. | 1499 * Return the statements contained in the block. |
| 1263 * @return the statements contained in the block | 1500 * @return the statements contained in the block |
| 1264 */ | 1501 */ |
| 1265 NodeList<Statement> get statements => _statements; | 1502 NodeList<Statement> get statements => _statements; |
| 1503 |
| 1266 /** | 1504 /** |
| 1267 * Set the left curly bracket to the given token. | 1505 * Set the left curly bracket to the given token. |
| 1268 * @param leftBracket the left curly bracket | 1506 * @param leftBracket the left curly bracket |
| 1269 */ | 1507 */ |
| 1270 void set leftBracket(Token leftBracket2) { | 1508 void set leftBracket(Token leftBracket2) { |
| 1271 this._leftBracket = leftBracket2; | 1509 this._leftBracket = leftBracket2; |
| 1272 } | 1510 } |
| 1511 |
| 1273 /** | 1512 /** |
| 1274 * Set the right curly bracket to the given token. | 1513 * Set the right curly bracket to the given token. |
| 1275 * @param rightBracket the right curly bracket | 1514 * @param rightBracket the right curly bracket |
| 1276 */ | 1515 */ |
| 1277 void set rightBracket(Token rightBracket2) { | 1516 void set rightBracket(Token rightBracket2) { |
| 1278 this._rightBracket = rightBracket2; | 1517 this._rightBracket = rightBracket2; |
| 1279 } | 1518 } |
| 1280 void visitChildren(ASTVisitor<Object> visitor) { | 1519 void visitChildren(ASTVisitor<Object> visitor) { |
| 1281 _statements.accept(visitor); | 1520 _statements.accept(visitor); |
| 1282 } | 1521 } |
| 1283 } | 1522 } |
| 1523 |
| 1284 /** | 1524 /** |
| 1285 * Instances of the class {@code BlockFunctionBody} represent a function body th
at consists of a | 1525 * Instances of the class {@code BlockFunctionBody} represent a function body th
at consists of a |
| 1286 * block of statements. | 1526 * block of statements. |
| 1287 * <pre> | 1527 * <pre> |
| 1288 * blockFunctionBody ::={@link Block block}</pre> | 1528 * blockFunctionBody ::={@link Block block}</pre> |
| 1289 * @coverage dart.engine.ast | 1529 * @coverage dart.engine.ast |
| 1290 */ | 1530 */ |
| 1291 class BlockFunctionBody extends FunctionBody { | 1531 class BlockFunctionBody extends FunctionBody { |
| 1532 |
| 1292 /** | 1533 /** |
| 1293 * The block representing the body of the function. | 1534 * The block representing the body of the function. |
| 1294 */ | 1535 */ |
| 1295 Block _block; | 1536 Block _block; |
| 1537 |
| 1296 /** | 1538 /** |
| 1297 * Initialize a newly created function body consisting of a block of statement
s. | 1539 * Initialize a newly created function body consisting of a block of statement
s. |
| 1298 * @param block the block representing the body of the function | 1540 * @param block the block representing the body of the function |
| 1299 */ | 1541 */ |
| 1300 BlockFunctionBody.full(Block block) { | 1542 BlockFunctionBody.full(Block block) { |
| 1301 this._block = becomeParentOf(block); | 1543 this._block = becomeParentOf(block); |
| 1302 } | 1544 } |
| 1545 |
| 1303 /** | 1546 /** |
| 1304 * Initialize a newly created function body consisting of a block of statement
s. | 1547 * Initialize a newly created function body consisting of a block of statement
s. |
| 1305 * @param block the block representing the body of the function | 1548 * @param block the block representing the body of the function |
| 1306 */ | 1549 */ |
| 1307 BlockFunctionBody({Block block}) : this.full(block); | 1550 BlockFunctionBody({Block block}) : this.full(block); |
| 1308 accept(ASTVisitor visitor) => visitor.visitBlockFunctionBody(this); | 1551 accept(ASTVisitor visitor) => visitor.visitBlockFunctionBody(this); |
| 1309 Token get beginToken => _block.beginToken; | 1552 Token get beginToken => _block.beginToken; |
| 1553 |
| 1310 /** | 1554 /** |
| 1311 * Return the block representing the body of the function. | 1555 * Return the block representing the body of the function. |
| 1312 * @return the block representing the body of the function | 1556 * @return the block representing the body of the function |
| 1313 */ | 1557 */ |
| 1314 Block get block => _block; | 1558 Block get block => _block; |
| 1315 Token get endToken => _block.endToken; | 1559 Token get endToken => _block.endToken; |
| 1560 |
| 1316 /** | 1561 /** |
| 1317 * Set the block representing the body of the function to the given block. | 1562 * Set the block representing the body of the function to the given block. |
| 1318 * @param block the block representing the body of the function | 1563 * @param block the block representing the body of the function |
| 1319 */ | 1564 */ |
| 1320 void set block(Block block2) { | 1565 void set block(Block block2) { |
| 1321 this._block = becomeParentOf(block2); | 1566 this._block = becomeParentOf(block2); |
| 1322 } | 1567 } |
| 1323 void visitChildren(ASTVisitor<Object> visitor) { | 1568 void visitChildren(ASTVisitor<Object> visitor) { |
| 1324 safelyVisitChild(_block, visitor); | 1569 safelyVisitChild(_block, visitor); |
| 1325 } | 1570 } |
| 1326 } | 1571 } |
| 1572 |
| 1327 /** | 1573 /** |
| 1328 * Instances of the class {@code BooleanLiteral} represent a boolean literal exp
ression. | 1574 * Instances of the class {@code BooleanLiteral} represent a boolean literal exp
ression. |
| 1329 * <pre> | 1575 * <pre> |
| 1330 * booleanLiteral ::= | 1576 * booleanLiteral ::= |
| 1331 * 'false' | 'true' | 1577 * 'false' | 'true' |
| 1332 * </pre> | 1578 * </pre> |
| 1333 * @coverage dart.engine.ast | 1579 * @coverage dart.engine.ast |
| 1334 */ | 1580 */ |
| 1335 class BooleanLiteral extends Literal { | 1581 class BooleanLiteral extends Literal { |
| 1582 |
| 1336 /** | 1583 /** |
| 1337 * The token representing the literal. | 1584 * The token representing the literal. |
| 1338 */ | 1585 */ |
| 1339 Token _literal; | 1586 Token _literal; |
| 1587 |
| 1340 /** | 1588 /** |
| 1341 * The value of the literal. | 1589 * The value of the literal. |
| 1342 */ | 1590 */ |
| 1343 bool _value = false; | 1591 bool _value = false; |
| 1592 |
| 1344 /** | 1593 /** |
| 1345 * Initialize a newly created boolean literal. | 1594 * Initialize a newly created boolean literal. |
| 1346 * @param literal the token representing the literal | 1595 * @param literal the token representing the literal |
| 1347 * @param value the value of the literal | 1596 * @param value the value of the literal |
| 1348 */ | 1597 */ |
| 1349 BooleanLiteral.full(Token literal, bool value) { | 1598 BooleanLiteral.full(Token literal, bool value) { |
| 1350 this._literal = literal; | 1599 this._literal = literal; |
| 1351 this._value = value; | 1600 this._value = value; |
| 1352 } | 1601 } |
| 1602 |
| 1353 /** | 1603 /** |
| 1354 * Initialize a newly created boolean literal. | 1604 * Initialize a newly created boolean literal. |
| 1355 * @param literal the token representing the literal | 1605 * @param literal the token representing the literal |
| 1356 * @param value the value of the literal | 1606 * @param value the value of the literal |
| 1357 */ | 1607 */ |
| 1358 BooleanLiteral({Token literal, bool value}) : this.full(literal, value); | 1608 BooleanLiteral({Token literal, bool value}) : this.full(literal, value); |
| 1359 accept(ASTVisitor visitor) => visitor.visitBooleanLiteral(this); | 1609 accept(ASTVisitor visitor) => visitor.visitBooleanLiteral(this); |
| 1360 Token get beginToken => _literal; | 1610 Token get beginToken => _literal; |
| 1361 Token get endToken => _literal; | 1611 Token get endToken => _literal; |
| 1612 |
| 1362 /** | 1613 /** |
| 1363 * Return the token representing the literal. | 1614 * Return the token representing the literal. |
| 1364 * @return the token representing the literal | 1615 * @return the token representing the literal |
| 1365 */ | 1616 */ |
| 1366 Token get literal => _literal; | 1617 Token get literal => _literal; |
| 1618 |
| 1367 /** | 1619 /** |
| 1368 * Return the value of the literal. | 1620 * Return the value of the literal. |
| 1369 * @return the value of the literal | 1621 * @return the value of the literal |
| 1370 */ | 1622 */ |
| 1371 bool get value => _value; | 1623 bool get value => _value; |
| 1372 bool isSynthetic() => _literal.isSynthetic(); | 1624 bool isSynthetic() => _literal.isSynthetic(); |
| 1625 |
| 1373 /** | 1626 /** |
| 1374 * Set the token representing the literal to the given token. | 1627 * Set the token representing the literal to the given token. |
| 1375 * @param literal the token representing the literal | 1628 * @param literal the token representing the literal |
| 1376 */ | 1629 */ |
| 1377 void set literal(Token literal2) { | 1630 void set literal(Token literal2) { |
| 1378 this._literal = literal2; | 1631 this._literal = literal2; |
| 1379 } | 1632 } |
| 1633 |
| 1380 /** | 1634 /** |
| 1381 * Set the value of the literal to the given value. | 1635 * Set the value of the literal to the given value. |
| 1382 * @param value the value of the literal | 1636 * @param value the value of the literal |
| 1383 */ | 1637 */ |
| 1384 void set value(bool value2) { | 1638 void set value(bool value2) { |
| 1385 this._value = value2; | 1639 this._value = value2; |
| 1386 } | 1640 } |
| 1387 void visitChildren(ASTVisitor<Object> visitor) { | 1641 void visitChildren(ASTVisitor<Object> visitor) { |
| 1388 } | 1642 } |
| 1389 } | 1643 } |
| 1644 |
| 1390 /** | 1645 /** |
| 1391 * Instances of the class {@code BreakStatement} represent a break statement. | 1646 * Instances of the class {@code BreakStatement} represent a break statement. |
| 1392 * <pre> | 1647 * <pre> |
| 1393 * breakStatement ::= | 1648 * breakStatement ::= |
| 1394 * 'break' {@link SimpleIdentifier label}? ';' | 1649 * 'break' {@link SimpleIdentifier label}? ';' |
| 1395 * </pre> | 1650 * </pre> |
| 1396 * @coverage dart.engine.ast | 1651 * @coverage dart.engine.ast |
| 1397 */ | 1652 */ |
| 1398 class BreakStatement extends Statement { | 1653 class BreakStatement extends Statement { |
| 1654 |
| 1399 /** | 1655 /** |
| 1400 * The token representing the 'break' keyword. | 1656 * The token representing the 'break' keyword. |
| 1401 */ | 1657 */ |
| 1402 Token _keyword; | 1658 Token _keyword; |
| 1659 |
| 1403 /** | 1660 /** |
| 1404 * The label associated with the statement, or {@code null} if there is no lab
el. | 1661 * The label associated with the statement, or {@code null} if there is no lab
el. |
| 1405 */ | 1662 */ |
| 1406 SimpleIdentifier _label; | 1663 SimpleIdentifier _label; |
| 1664 |
| 1407 /** | 1665 /** |
| 1408 * The semicolon terminating the statement. | 1666 * The semicolon terminating the statement. |
| 1409 */ | 1667 */ |
| 1410 Token _semicolon; | 1668 Token _semicolon; |
| 1669 |
| 1411 /** | 1670 /** |
| 1412 * Initialize a newly created break statement. | 1671 * Initialize a newly created break statement. |
| 1413 * @param keyword the token representing the 'break' keyword | 1672 * @param keyword the token representing the 'break' keyword |
| 1414 * @param label the label associated with the statement | 1673 * @param label the label associated with the statement |
| 1415 * @param semicolon the semicolon terminating the statement | 1674 * @param semicolon the semicolon terminating the statement |
| 1416 */ | 1675 */ |
| 1417 BreakStatement.full(Token keyword, SimpleIdentifier label, Token semicolon) { | 1676 BreakStatement.full(Token keyword, SimpleIdentifier label, Token semicolon) { |
| 1418 this._keyword = keyword; | 1677 this._keyword = keyword; |
| 1419 this._label = becomeParentOf(label); | 1678 this._label = becomeParentOf(label); |
| 1420 this._semicolon = semicolon; | 1679 this._semicolon = semicolon; |
| 1421 } | 1680 } |
| 1681 |
| 1422 /** | 1682 /** |
| 1423 * Initialize a newly created break statement. | 1683 * Initialize a newly created break statement. |
| 1424 * @param keyword the token representing the 'break' keyword | 1684 * @param keyword the token representing the 'break' keyword |
| 1425 * @param label the label associated with the statement | 1685 * @param label the label associated with the statement |
| 1426 * @param semicolon the semicolon terminating the statement | 1686 * @param semicolon the semicolon terminating the statement |
| 1427 */ | 1687 */ |
| 1428 BreakStatement({Token keyword, SimpleIdentifier label, Token semicolon}) : thi
s.full(keyword, label, semicolon); | 1688 BreakStatement({Token keyword, SimpleIdentifier label, Token semicolon}) : thi
s.full(keyword, label, semicolon); |
| 1429 accept(ASTVisitor visitor) => visitor.visitBreakStatement(this); | 1689 accept(ASTVisitor visitor) => visitor.visitBreakStatement(this); |
| 1430 Token get beginToken => _keyword; | 1690 Token get beginToken => _keyword; |
| 1431 Token get endToken => _semicolon; | 1691 Token get endToken => _semicolon; |
| 1692 |
| 1432 /** | 1693 /** |
| 1433 * Return the token representing the 'break' keyword. | 1694 * Return the token representing the 'break' keyword. |
| 1434 * @return the token representing the 'break' keyword | 1695 * @return the token representing the 'break' keyword |
| 1435 */ | 1696 */ |
| 1436 Token get keyword => _keyword; | 1697 Token get keyword => _keyword; |
| 1698 |
| 1437 /** | 1699 /** |
| 1438 * Return the label associated with the statement, or {@code null} if there is
no label. | 1700 * Return the label associated with the statement, or {@code null} if there is
no label. |
| 1439 * @return the label associated with the statement | 1701 * @return the label associated with the statement |
| 1440 */ | 1702 */ |
| 1441 SimpleIdentifier get label => _label; | 1703 SimpleIdentifier get label => _label; |
| 1704 |
| 1442 /** | 1705 /** |
| 1443 * Return the semicolon terminating the statement. | 1706 * Return the semicolon terminating the statement. |
| 1444 * @return the semicolon terminating the statement | 1707 * @return the semicolon terminating the statement |
| 1445 */ | 1708 */ |
| 1446 Token get semicolon => _semicolon; | 1709 Token get semicolon => _semicolon; |
| 1710 |
| 1447 /** | 1711 /** |
| 1448 * Set the token representing the 'break' keyword to the given token. | 1712 * Set the token representing the 'break' keyword to the given token. |
| 1449 * @param keyword the token representing the 'break' keyword | 1713 * @param keyword the token representing the 'break' keyword |
| 1450 */ | 1714 */ |
| 1451 void set keyword(Token keyword2) { | 1715 void set keyword(Token keyword2) { |
| 1452 this._keyword = keyword2; | 1716 this._keyword = keyword2; |
| 1453 } | 1717 } |
| 1718 |
| 1454 /** | 1719 /** |
| 1455 * Set the label associated with the statement to the given identifier. | 1720 * Set the label associated with the statement to the given identifier. |
| 1456 * @param identifier the label associated with the statement | 1721 * @param identifier the label associated with the statement |
| 1457 */ | 1722 */ |
| 1458 void set label(SimpleIdentifier identifier) { | 1723 void set label(SimpleIdentifier identifier) { |
| 1459 _label = becomeParentOf(identifier); | 1724 _label = becomeParentOf(identifier); |
| 1460 } | 1725 } |
| 1726 |
| 1461 /** | 1727 /** |
| 1462 * Set the semicolon terminating the statement to the given token. | 1728 * Set the semicolon terminating the statement to the given token. |
| 1463 * @param semicolon the semicolon terminating the statement | 1729 * @param semicolon the semicolon terminating the statement |
| 1464 */ | 1730 */ |
| 1465 void set semicolon(Token semicolon2) { | 1731 void set semicolon(Token semicolon2) { |
| 1466 this._semicolon = semicolon2; | 1732 this._semicolon = semicolon2; |
| 1467 } | 1733 } |
| 1468 void visitChildren(ASTVisitor<Object> visitor) { | 1734 void visitChildren(ASTVisitor<Object> visitor) { |
| 1469 safelyVisitChild(_label, visitor); | 1735 safelyVisitChild(_label, visitor); |
| 1470 } | 1736 } |
| 1471 } | 1737 } |
| 1738 |
| 1472 /** | 1739 /** |
| 1473 * Instances of the class {@code CascadeExpression} represent a sequence of casc
aded expressions: | 1740 * Instances of the class {@code CascadeExpression} represent a sequence of casc
aded expressions: |
| 1474 * expressions that share a common target. There are three kinds of expressions
that can be used in | 1741 * expressions that share a common target. There are three kinds of expressions
that can be used in |
| 1475 * a cascade expression: {@link IndexExpression}, {@link MethodInvocation} and{@
link PropertyAccess}. | 1742 * a cascade expression: {@link IndexExpression}, {@link MethodInvocation} and{@
link PropertyAccess}. |
| 1476 * <pre> | 1743 * <pre> |
| 1477 * cascadeExpression ::={@link Expression conditionalExpression} cascadeSection | 1744 * cascadeExpression ::={@link Expression conditionalExpression} cascadeSection |
| 1478 * cascadeSection ::= | 1745 * cascadeSection ::= |
| 1479 * '..' (cascadeSelector arguments*) (assignableSelector arguments*)* (assignme
ntOperator expressionWithoutCascade)? | 1746 * '..' (cascadeSelector arguments*) (assignableSelector arguments*)* (assignme
ntOperator expressionWithoutCascade)? |
| 1480 * cascadeSelector ::= | 1747 * cascadeSelector ::= |
| 1481 * '\[ ' expression '\] ' | 1748 * '\[ ' expression '\] ' |
| 1482 * | identifier | 1749 * | identifier |
| 1483 * </pre> | 1750 * </pre> |
| 1484 * @coverage dart.engine.ast | 1751 * @coverage dart.engine.ast |
| 1485 */ | 1752 */ |
| 1486 class CascadeExpression extends Expression { | 1753 class CascadeExpression extends Expression { |
| 1754 |
| 1487 /** | 1755 /** |
| 1488 * The target of the cascade sections. | 1756 * The target of the cascade sections. |
| 1489 */ | 1757 */ |
| 1490 Expression _target; | 1758 Expression _target; |
| 1759 |
| 1491 /** | 1760 /** |
| 1492 * The cascade sections sharing the common target. | 1761 * The cascade sections sharing the common target. |
| 1493 */ | 1762 */ |
| 1494 NodeList<Expression> _cascadeSections; | 1763 NodeList<Expression> _cascadeSections; |
| 1764 |
| 1495 /** | 1765 /** |
| 1496 * Initialize a newly created cascade expression. | 1766 * Initialize a newly created cascade expression. |
| 1497 * @param target the target of the cascade sections | 1767 * @param target the target of the cascade sections |
| 1498 * @param cascadeSections the cascade sections sharing the common target | 1768 * @param cascadeSections the cascade sections sharing the common target |
| 1499 */ | 1769 */ |
| 1500 CascadeExpression.full(Expression target, List<Expression> cascadeSections) { | 1770 CascadeExpression.full(Expression target, List<Expression> cascadeSections) { |
| 1501 this._cascadeSections = new NodeList<Expression>(this); | 1771 this._cascadeSections = new NodeList<Expression>(this); |
| 1502 this._target = becomeParentOf(target); | 1772 this._target = becomeParentOf(target); |
| 1503 this._cascadeSections.addAll(cascadeSections); | 1773 this._cascadeSections.addAll(cascadeSections); |
| 1504 } | 1774 } |
| 1775 |
| 1505 /** | 1776 /** |
| 1506 * Initialize a newly created cascade expression. | 1777 * Initialize a newly created cascade expression. |
| 1507 * @param target the target of the cascade sections | 1778 * @param target the target of the cascade sections |
| 1508 * @param cascadeSections the cascade sections sharing the common target | 1779 * @param cascadeSections the cascade sections sharing the common target |
| 1509 */ | 1780 */ |
| 1510 CascadeExpression({Expression target, List<Expression> cascadeSections}) : thi
s.full(target, cascadeSections); | 1781 CascadeExpression({Expression target, List<Expression> cascadeSections}) : thi
s.full(target, cascadeSections); |
| 1511 accept(ASTVisitor visitor) => visitor.visitCascadeExpression(this); | 1782 accept(ASTVisitor visitor) => visitor.visitCascadeExpression(this); |
| 1512 Token get beginToken => _target.beginToken; | 1783 Token get beginToken => _target.beginToken; |
| 1784 |
| 1513 /** | 1785 /** |
| 1514 * Return the cascade sections sharing the common target. | 1786 * Return the cascade sections sharing the common target. |
| 1515 * @return the cascade sections sharing the common target | 1787 * @return the cascade sections sharing the common target |
| 1516 */ | 1788 */ |
| 1517 NodeList<Expression> get cascadeSections => _cascadeSections; | 1789 NodeList<Expression> get cascadeSections => _cascadeSections; |
| 1518 Token get endToken => _cascadeSections.endToken; | 1790 Token get endToken => _cascadeSections.endToken; |
| 1791 |
| 1519 /** | 1792 /** |
| 1520 * Return the target of the cascade sections. | 1793 * Return the target of the cascade sections. |
| 1521 * @return the target of the cascade sections | 1794 * @return the target of the cascade sections |
| 1522 */ | 1795 */ |
| 1523 Expression get target => _target; | 1796 Expression get target => _target; |
| 1797 |
| 1524 /** | 1798 /** |
| 1525 * Set the target of the cascade sections to the given expression. | 1799 * Set the target of the cascade sections to the given expression. |
| 1526 * @param target the target of the cascade sections | 1800 * @param target the target of the cascade sections |
| 1527 */ | 1801 */ |
| 1528 void set target(Expression target2) { | 1802 void set target(Expression target2) { |
| 1529 this._target = becomeParentOf(target2); | 1803 this._target = becomeParentOf(target2); |
| 1530 } | 1804 } |
| 1531 void visitChildren(ASTVisitor<Object> visitor) { | 1805 void visitChildren(ASTVisitor<Object> visitor) { |
| 1532 safelyVisitChild(_target, visitor); | 1806 safelyVisitChild(_target, visitor); |
| 1533 _cascadeSections.accept(visitor); | 1807 _cascadeSections.accept(visitor); |
| 1534 } | 1808 } |
| 1535 } | 1809 } |
| 1810 |
| 1536 /** | 1811 /** |
| 1537 * Instances of the class {@code CatchClause} represent a catch clause within a
try statement. | 1812 * Instances of the class {@code CatchClause} represent a catch clause within a
try statement. |
| 1538 * <pre> | 1813 * <pre> |
| 1539 * onPart ::= | 1814 * onPart ::= |
| 1540 * catchPart {@link Block block}| 'on' type catchPart? {@link Block block}catchP
art ::= | 1815 * catchPart {@link Block block}| 'on' type catchPart? {@link Block block}catchP
art ::= |
| 1541 * 'catch' '(' {@link SimpleIdentifier exceptionParameter} (',' {@link SimpleIde
ntifier stackTraceParameter})? ')' | 1816 * 'catch' '(' {@link SimpleIdentifier exceptionParameter} (',' {@link SimpleIde
ntifier stackTraceParameter})? ')' |
| 1542 * </pre> | 1817 * </pre> |
| 1543 * @coverage dart.engine.ast | 1818 * @coverage dart.engine.ast |
| 1544 */ | 1819 */ |
| 1545 class CatchClause extends ASTNode { | 1820 class CatchClause extends ASTNode { |
| 1821 |
| 1546 /** | 1822 /** |
| 1547 * The token representing the 'on' keyword, or {@code null} if there is no 'on
' keyword. | 1823 * The token representing the 'on' keyword, or {@code null} if there is no 'on
' keyword. |
| 1548 */ | 1824 */ |
| 1549 Token _onKeyword; | 1825 Token _onKeyword; |
| 1826 |
| 1550 /** | 1827 /** |
| 1551 * The type of exceptions caught by this catch clause, or {@code null} if this
catch clause | 1828 * The type of exceptions caught by this catch clause, or {@code null} if this
catch clause |
| 1552 * catches every type of exception. | 1829 * catches every type of exception. |
| 1553 */ | 1830 */ |
| 1554 TypeName _exceptionType; | 1831 TypeName _exceptionType; |
| 1832 |
| 1555 /** | 1833 /** |
| 1556 * The token representing the 'catch' keyword, or {@code null} if there is no
'catch' keyword. | 1834 * The token representing the 'catch' keyword, or {@code null} if there is no
'catch' keyword. |
| 1557 */ | 1835 */ |
| 1558 Token _catchKeyword; | 1836 Token _catchKeyword; |
| 1837 |
| 1559 /** | 1838 /** |
| 1560 * The left parenthesis. | 1839 * The left parenthesis. |
| 1561 */ | 1840 */ |
| 1562 Token _leftParenthesis; | 1841 Token _leftParenthesis; |
| 1842 |
| 1563 /** | 1843 /** |
| 1564 * The parameter whose value will be the exception that was thrown. | 1844 * The parameter whose value will be the exception that was thrown. |
| 1565 */ | 1845 */ |
| 1566 SimpleIdentifier _exceptionParameter; | 1846 SimpleIdentifier _exceptionParameter; |
| 1847 |
| 1567 /** | 1848 /** |
| 1568 * The comma separating the exception parameter from the stack trace parameter
. | 1849 * The comma separating the exception parameter from the stack trace parameter
. |
| 1569 */ | 1850 */ |
| 1570 Token _comma; | 1851 Token _comma; |
| 1852 |
| 1571 /** | 1853 /** |
| 1572 * The parameter whose value will be the stack trace associated with the excep
tion. | 1854 * The parameter whose value will be the stack trace associated with the excep
tion. |
| 1573 */ | 1855 */ |
| 1574 SimpleIdentifier _stackTraceParameter; | 1856 SimpleIdentifier _stackTraceParameter; |
| 1857 |
| 1575 /** | 1858 /** |
| 1576 * The right parenthesis. | 1859 * The right parenthesis. |
| 1577 */ | 1860 */ |
| 1578 Token _rightParenthesis; | 1861 Token _rightParenthesis; |
| 1862 |
| 1579 /** | 1863 /** |
| 1580 * The body of the catch block. | 1864 * The body of the catch block. |
| 1581 */ | 1865 */ |
| 1582 Block _body; | 1866 Block _body; |
| 1867 |
| 1583 /** | 1868 /** |
| 1584 * Initialize a newly created catch clause. | 1869 * Initialize a newly created catch clause. |
| 1585 * @param onKeyword the token representing the 'on' keyword | 1870 * @param onKeyword the token representing the 'on' keyword |
| 1586 * @param exceptionType the type of exceptions caught by this catch clause | 1871 * @param exceptionType the type of exceptions caught by this catch clause |
| 1587 * @param leftParenthesis the left parenthesis | 1872 * @param leftParenthesis the left parenthesis |
| 1588 * @param exceptionParameter the parameter whose value will be the exception t
hat was thrown | 1873 * @param exceptionParameter the parameter whose value will be the exception t
hat was thrown |
| 1589 * @param comma the comma separating the exception parameter from the stack tr
ace parameter | 1874 * @param comma the comma separating the exception parameter from the stack tr
ace parameter |
| 1590 * @param stackTraceParameter the parameter whose value will be the stack trac
e associated with | 1875 * @param stackTraceParameter the parameter whose value will be the stack trac
e associated with |
| 1591 * the exception | 1876 * the exception |
| 1592 * @param rightParenthesis the right parenthesis | 1877 * @param rightParenthesis the right parenthesis |
| 1593 * @param body the body of the catch block | 1878 * @param body the body of the catch block |
| 1594 */ | 1879 */ |
| 1595 CatchClause.full(Token onKeyword, TypeName exceptionType, Token catchKeyword,
Token leftParenthesis, SimpleIdentifier exceptionParameter, Token comma, SimpleI
dentifier stackTraceParameter, Token rightParenthesis, Block body) { | 1880 CatchClause.full(Token onKeyword, TypeName exceptionType, Token catchKeyword,
Token leftParenthesis, SimpleIdentifier exceptionParameter, Token comma, SimpleI
dentifier stackTraceParameter, Token rightParenthesis, Block body) { |
| 1596 this._onKeyword = onKeyword; | 1881 this._onKeyword = onKeyword; |
| 1597 this._exceptionType = becomeParentOf(exceptionType); | 1882 this._exceptionType = becomeParentOf(exceptionType); |
| 1598 this._catchKeyword = catchKeyword; | 1883 this._catchKeyword = catchKeyword; |
| 1599 this._leftParenthesis = leftParenthesis; | 1884 this._leftParenthesis = leftParenthesis; |
| 1600 this._exceptionParameter = becomeParentOf(exceptionParameter); | 1885 this._exceptionParameter = becomeParentOf(exceptionParameter); |
| 1601 this._comma = comma; | 1886 this._comma = comma; |
| 1602 this._stackTraceParameter = becomeParentOf(stackTraceParameter); | 1887 this._stackTraceParameter = becomeParentOf(stackTraceParameter); |
| 1603 this._rightParenthesis = rightParenthesis; | 1888 this._rightParenthesis = rightParenthesis; |
| 1604 this._body = becomeParentOf(body); | 1889 this._body = becomeParentOf(body); |
| 1605 } | 1890 } |
| 1891 |
| 1606 /** | 1892 /** |
| 1607 * Initialize a newly created catch clause. | 1893 * Initialize a newly created catch clause. |
| 1608 * @param onKeyword the token representing the 'on' keyword | 1894 * @param onKeyword the token representing the 'on' keyword |
| 1609 * @param exceptionType the type of exceptions caught by this catch clause | 1895 * @param exceptionType the type of exceptions caught by this catch clause |
| 1610 * @param leftParenthesis the left parenthesis | 1896 * @param leftParenthesis the left parenthesis |
| 1611 * @param exceptionParameter the parameter whose value will be the exception t
hat was thrown | 1897 * @param exceptionParameter the parameter whose value will be the exception t
hat was thrown |
| 1612 * @param comma the comma separating the exception parameter from the stack tr
ace parameter | 1898 * @param comma the comma separating the exception parameter from the stack tr
ace parameter |
| 1613 * @param stackTraceParameter the parameter whose value will be the stack trac
e associated with | 1899 * @param stackTraceParameter the parameter whose value will be the stack trac
e associated with |
| 1614 * the exception | 1900 * the exception |
| 1615 * @param rightParenthesis the right parenthesis | 1901 * @param rightParenthesis the right parenthesis |
| 1616 * @param body the body of the catch block | 1902 * @param body the body of the catch block |
| 1617 */ | 1903 */ |
| 1618 CatchClause({Token onKeyword, TypeName exceptionType, Token catchKeyword, Toke
n leftParenthesis, SimpleIdentifier exceptionParameter, Token comma, SimpleIdent
ifier stackTraceParameter, Token rightParenthesis, Block body}) : this.full(onKe
yword, exceptionType, catchKeyword, leftParenthesis, exceptionParameter, comma,
stackTraceParameter, rightParenthesis, body); | 1904 CatchClause({Token onKeyword, TypeName exceptionType, Token catchKeyword, Toke
n leftParenthesis, SimpleIdentifier exceptionParameter, Token comma, SimpleIdent
ifier stackTraceParameter, Token rightParenthesis, Block body}) : this.full(onKe
yword, exceptionType, catchKeyword, leftParenthesis, exceptionParameter, comma,
stackTraceParameter, rightParenthesis, body); |
| 1619 accept(ASTVisitor visitor) => visitor.visitCatchClause(this); | 1905 accept(ASTVisitor visitor) => visitor.visitCatchClause(this); |
| 1620 Token get beginToken { | 1906 Token get beginToken { |
| 1621 if (_onKeyword != null) { | 1907 if (_onKeyword != null) { |
| 1622 return _onKeyword; | 1908 return _onKeyword; |
| 1623 } | 1909 } |
| 1624 return _catchKeyword; | 1910 return _catchKeyword; |
| 1625 } | 1911 } |
| 1912 |
| 1626 /** | 1913 /** |
| 1627 * Return the body of the catch block. | 1914 * Return the body of the catch block. |
| 1628 * @return the body of the catch block | 1915 * @return the body of the catch block |
| 1629 */ | 1916 */ |
| 1630 Block get body => _body; | 1917 Block get body => _body; |
| 1918 |
| 1631 /** | 1919 /** |
| 1632 * Return the token representing the 'catch' keyword, or {@code null} if there
is no 'catch' | 1920 * Return the token representing the 'catch' keyword, or {@code null} if there
is no 'catch' |
| 1633 * keyword. | 1921 * keyword. |
| 1634 * @return the token representing the 'catch' keyword | 1922 * @return the token representing the 'catch' keyword |
| 1635 */ | 1923 */ |
| 1636 Token get catchKeyword => _catchKeyword; | 1924 Token get catchKeyword => _catchKeyword; |
| 1925 |
| 1637 /** | 1926 /** |
| 1638 * Return the comma. | 1927 * Return the comma. |
| 1639 * @return the comma | 1928 * @return the comma |
| 1640 */ | 1929 */ |
| 1641 Token get comma => _comma; | 1930 Token get comma => _comma; |
| 1642 Token get endToken => _body.endToken; | 1931 Token get endToken => _body.endToken; |
| 1932 |
| 1643 /** | 1933 /** |
| 1644 * Return the parameter whose value will be the exception that was thrown. | 1934 * Return the parameter whose value will be the exception that was thrown. |
| 1645 * @return the parameter whose value will be the exception that was thrown | 1935 * @return the parameter whose value will be the exception that was thrown |
| 1646 */ | 1936 */ |
| 1647 SimpleIdentifier get exceptionParameter => _exceptionParameter; | 1937 SimpleIdentifier get exceptionParameter => _exceptionParameter; |
| 1938 |
| 1648 /** | 1939 /** |
| 1649 * Return the type of exceptions caught by this catch clause, or {@code null}
if this catch clause | 1940 * Return the type of exceptions caught by this catch clause, or {@code null}
if this catch clause |
| 1650 * catches every type of exception. | 1941 * catches every type of exception. |
| 1651 * @return the type of exceptions caught by this catch clause | 1942 * @return the type of exceptions caught by this catch clause |
| 1652 */ | 1943 */ |
| 1653 TypeName get exceptionType => _exceptionType; | 1944 TypeName get exceptionType => _exceptionType; |
| 1945 |
| 1654 /** | 1946 /** |
| 1655 * Return the left parenthesis. | 1947 * Return the left parenthesis. |
| 1656 * @return the left parenthesis | 1948 * @return the left parenthesis |
| 1657 */ | 1949 */ |
| 1658 Token get leftParenthesis => _leftParenthesis; | 1950 Token get leftParenthesis => _leftParenthesis; |
| 1951 |
| 1659 /** | 1952 /** |
| 1660 * Return the token representing the 'on' keyword, or {@code null} if there is
no 'on' keyword. | 1953 * Return the token representing the 'on' keyword, or {@code null} if there is
no 'on' keyword. |
| 1661 * @return the token representing the 'on' keyword | 1954 * @return the token representing the 'on' keyword |
| 1662 */ | 1955 */ |
| 1663 Token get onKeyword => _onKeyword; | 1956 Token get onKeyword => _onKeyword; |
| 1957 |
| 1664 /** | 1958 /** |
| 1665 * Return the right parenthesis. | 1959 * Return the right parenthesis. |
| 1666 * @return the right parenthesis | 1960 * @return the right parenthesis |
| 1667 */ | 1961 */ |
| 1668 Token get rightParenthesis => _rightParenthesis; | 1962 Token get rightParenthesis => _rightParenthesis; |
| 1963 |
| 1669 /** | 1964 /** |
| 1670 * Return the parameter whose value will be the stack trace associated with th
e exception. | 1965 * Return the parameter whose value will be the stack trace associated with th
e exception. |
| 1671 * @return the parameter whose value will be the stack trace associated with t
he exception | 1966 * @return the parameter whose value will be the stack trace associated with t
he exception |
| 1672 */ | 1967 */ |
| 1673 SimpleIdentifier get stackTraceParameter => _stackTraceParameter; | 1968 SimpleIdentifier get stackTraceParameter => _stackTraceParameter; |
| 1969 |
| 1674 /** | 1970 /** |
| 1675 * Set the body of the catch block to the given block. | 1971 * Set the body of the catch block to the given block. |
| 1676 * @param block the body of the catch block | 1972 * @param block the body of the catch block |
| 1677 */ | 1973 */ |
| 1678 void set body(Block block) { | 1974 void set body(Block block) { |
| 1679 _body = becomeParentOf(block); | 1975 _body = becomeParentOf(block); |
| 1680 } | 1976 } |
| 1977 |
| 1681 /** | 1978 /** |
| 1682 * Set the token representing the 'catch' keyword to the given token. | 1979 * Set the token representing the 'catch' keyword to the given token. |
| 1683 * @param catchKeyword the token representing the 'catch' keyword | 1980 * @param catchKeyword the token representing the 'catch' keyword |
| 1684 */ | 1981 */ |
| 1685 void set catchKeyword(Token catchKeyword2) { | 1982 void set catchKeyword(Token catchKeyword2) { |
| 1686 this._catchKeyword = catchKeyword2; | 1983 this._catchKeyword = catchKeyword2; |
| 1687 } | 1984 } |
| 1985 |
| 1688 /** | 1986 /** |
| 1689 * Set the comma to the given token. | 1987 * Set the comma to the given token. |
| 1690 * @param comma the comma | 1988 * @param comma the comma |
| 1691 */ | 1989 */ |
| 1692 void set comma(Token comma2) { | 1990 void set comma(Token comma2) { |
| 1693 this._comma = comma2; | 1991 this._comma = comma2; |
| 1694 } | 1992 } |
| 1993 |
| 1695 /** | 1994 /** |
| 1696 * Set the parameter whose value will be the exception that was thrown to the
given parameter. | 1995 * Set the parameter whose value will be the exception that was thrown to the
given parameter. |
| 1697 * @param parameter the parameter whose value will be the exception that was t
hrown | 1996 * @param parameter the parameter whose value will be the exception that was t
hrown |
| 1698 */ | 1997 */ |
| 1699 void set exceptionParameter(SimpleIdentifier parameter) { | 1998 void set exceptionParameter(SimpleIdentifier parameter) { |
| 1700 _exceptionParameter = becomeParentOf(parameter); | 1999 _exceptionParameter = becomeParentOf(parameter); |
| 1701 } | 2000 } |
| 2001 |
| 1702 /** | 2002 /** |
| 1703 * Set the type of exceptions caught by this catch clause to the given type. | 2003 * Set the type of exceptions caught by this catch clause to the given type. |
| 1704 * @param exceptionType the type of exceptions caught by this catch clause | 2004 * @param exceptionType the type of exceptions caught by this catch clause |
| 1705 */ | 2005 */ |
| 1706 void set exceptionType(TypeName exceptionType2) { | 2006 void set exceptionType(TypeName exceptionType2) { |
| 1707 this._exceptionType = exceptionType2; | 2007 this._exceptionType = exceptionType2; |
| 1708 } | 2008 } |
| 2009 |
| 1709 /** | 2010 /** |
| 1710 * Set the left parenthesis to the given token. | 2011 * Set the left parenthesis to the given token. |
| 1711 * @param parenthesis the left parenthesis | 2012 * @param parenthesis the left parenthesis |
| 1712 */ | 2013 */ |
| 1713 void set leftParenthesis(Token parenthesis) { | 2014 void set leftParenthesis(Token parenthesis) { |
| 1714 _leftParenthesis = parenthesis; | 2015 _leftParenthesis = parenthesis; |
| 1715 } | 2016 } |
| 2017 |
| 1716 /** | 2018 /** |
| 1717 * Set the token representing the 'on' keyword to the given keyword. | 2019 * Set the token representing the 'on' keyword to the given keyword. |
| 1718 * @param onKeyword the token representing the 'on' keyword | 2020 * @param onKeyword the token representing the 'on' keyword |
| 1719 */ | 2021 */ |
| 1720 void set onKeyword(Token onKeyword2) { | 2022 void set onKeyword(Token onKeyword2) { |
| 1721 this._onKeyword = onKeyword2; | 2023 this._onKeyword = onKeyword2; |
| 1722 } | 2024 } |
| 2025 |
| 1723 /** | 2026 /** |
| 1724 * Set the right parenthesis to the given token. | 2027 * Set the right parenthesis to the given token. |
| 1725 * @param parenthesis the right parenthesis | 2028 * @param parenthesis the right parenthesis |
| 1726 */ | 2029 */ |
| 1727 void set rightParenthesis(Token parenthesis) { | 2030 void set rightParenthesis(Token parenthesis) { |
| 1728 _rightParenthesis = parenthesis; | 2031 _rightParenthesis = parenthesis; |
| 1729 } | 2032 } |
| 2033 |
| 1730 /** | 2034 /** |
| 1731 * Set the parameter whose value will be the stack trace associated with the e
xception to the | 2035 * Set the parameter whose value will be the stack trace associated with the e
xception to the |
| 1732 * given parameter. | 2036 * given parameter. |
| 1733 * @param parameter the parameter whose value will be the stack trace associat
ed with the | 2037 * @param parameter the parameter whose value will be the stack trace associat
ed with the |
| 1734 * exception | 2038 * exception |
| 1735 */ | 2039 */ |
| 1736 void set stackTraceParameter(SimpleIdentifier parameter) { | 2040 void set stackTraceParameter(SimpleIdentifier parameter) { |
| 1737 _stackTraceParameter = becomeParentOf(parameter); | 2041 _stackTraceParameter = becomeParentOf(parameter); |
| 1738 } | 2042 } |
| 1739 void visitChildren(ASTVisitor<Object> visitor) { | 2043 void visitChildren(ASTVisitor<Object> visitor) { |
| 1740 safelyVisitChild(_exceptionType, visitor); | 2044 safelyVisitChild(_exceptionType, visitor); |
| 1741 safelyVisitChild(_exceptionParameter, visitor); | 2045 safelyVisitChild(_exceptionParameter, visitor); |
| 1742 safelyVisitChild(_stackTraceParameter, visitor); | 2046 safelyVisitChild(_stackTraceParameter, visitor); |
| 1743 safelyVisitChild(_body, visitor); | 2047 safelyVisitChild(_body, visitor); |
| 1744 } | 2048 } |
| 1745 } | 2049 } |
| 2050 |
| 1746 /** | 2051 /** |
| 1747 * Instances of the class {@code ClassDeclaration} represent the declaration of
a class. | 2052 * Instances of the class {@code ClassDeclaration} represent the declaration of
a class. |
| 1748 * <pre> | 2053 * <pre> |
| 1749 * classDeclaration ::= | 2054 * classDeclaration ::= |
| 1750 * 'abstract'? 'class' {@link SimpleIdentifier name} {@link TypeParameterList ty
peParameterList}? | 2055 * 'abstract'? 'class' {@link SimpleIdentifier name} {@link TypeParameterList ty
peParameterList}? |
| 1751 * ({@link ExtendsClause extendsClause} {@link WithClause withClause}?)?{@link I
mplementsClause implementsClause}? | 2056 * ({@link ExtendsClause extendsClause} {@link WithClause withClause}?)?{@link I
mplementsClause implementsClause}? |
| 1752 * '{' {@link ClassMember classMember}* '}' | 2057 * '{' {@link ClassMember classMember}* '}' |
| 1753 * </pre> | 2058 * </pre> |
| 1754 * @coverage dart.engine.ast | 2059 * @coverage dart.engine.ast |
| 1755 */ | 2060 */ |
| 1756 class ClassDeclaration extends CompilationUnitMember { | 2061 class ClassDeclaration extends CompilationUnitMember { |
| 2062 |
| 1757 /** | 2063 /** |
| 1758 * The 'abstract' keyword, or {@code null} if the keyword was absent. | 2064 * The 'abstract' keyword, or {@code null} if the keyword was absent. |
| 1759 */ | 2065 */ |
| 1760 Token _abstractKeyword; | 2066 Token _abstractKeyword; |
| 2067 |
| 1761 /** | 2068 /** |
| 1762 * The token representing the 'class' keyword. | 2069 * The token representing the 'class' keyword. |
| 1763 */ | 2070 */ |
| 1764 Token _classKeyword; | 2071 Token _classKeyword; |
| 2072 |
| 1765 /** | 2073 /** |
| 1766 * The name of the class being declared. | 2074 * The name of the class being declared. |
| 1767 */ | 2075 */ |
| 1768 SimpleIdentifier _name; | 2076 SimpleIdentifier _name; |
| 2077 |
| 1769 /** | 2078 /** |
| 1770 * The type parameters for the class, or {@code null} if the class does not ha
ve any type | 2079 * The type parameters for the class, or {@code null} if the class does not ha
ve any type |
| 1771 * parameters. | 2080 * parameters. |
| 1772 */ | 2081 */ |
| 1773 TypeParameterList _typeParameters; | 2082 TypeParameterList _typeParameters; |
| 2083 |
| 1774 /** | 2084 /** |
| 1775 * The extends clause for the class, or {@code null} if the class does not ext
end any other class. | 2085 * The extends clause for the class, or {@code null} if the class does not ext
end any other class. |
| 1776 */ | 2086 */ |
| 1777 ExtendsClause _extendsClause; | 2087 ExtendsClause _extendsClause; |
| 2088 |
| 1778 /** | 2089 /** |
| 1779 * The with clause for the class, or {@code null} if the class does not have a
with clause. | 2090 * The with clause for the class, or {@code null} if the class does not have a
with clause. |
| 1780 */ | 2091 */ |
| 1781 WithClause _withClause; | 2092 WithClause _withClause; |
| 2093 |
| 1782 /** | 2094 /** |
| 1783 * The implements clause for the class, or {@code null} if the class does not
implement any | 2095 * The implements clause for the class, or {@code null} if the class does not
implement any |
| 1784 * interfaces. | 2096 * interfaces. |
| 1785 */ | 2097 */ |
| 1786 ImplementsClause _implementsClause; | 2098 ImplementsClause _implementsClause; |
| 2099 |
| 1787 /** | 2100 /** |
| 1788 * The left curly bracket. | 2101 * The left curly bracket. |
| 1789 */ | 2102 */ |
| 1790 Token _leftBracket; | 2103 Token _leftBracket; |
| 2104 |
| 1791 /** | 2105 /** |
| 1792 * The members defined by the class. | 2106 * The members defined by the class. |
| 1793 */ | 2107 */ |
| 1794 NodeList<ClassMember> _members; | 2108 NodeList<ClassMember> _members; |
| 2109 |
| 1795 /** | 2110 /** |
| 1796 * The right curly bracket. | 2111 * The right curly bracket. |
| 1797 */ | 2112 */ |
| 1798 Token _rightBracket; | 2113 Token _rightBracket; |
| 2114 |
| 1799 /** | 2115 /** |
| 1800 * Initialize a newly created class declaration. | 2116 * Initialize a newly created class declaration. |
| 1801 * @param comment the documentation comment associated with this class | 2117 * @param comment the documentation comment associated with this class |
| 1802 * @param metadata the annotations associated with this class | 2118 * @param metadata the annotations associated with this class |
| 1803 * @param abstractKeyword the 'abstract' keyword, or {@code null} if the keywo
rd was absent | 2119 * @param abstractKeyword the 'abstract' keyword, or {@code null} if the keywo
rd was absent |
| 1804 * @param classKeyword the token representing the 'class' keyword | 2120 * @param classKeyword the token representing the 'class' keyword |
| 1805 * @param name the name of the class being declared | 2121 * @param name the name of the class being declared |
| 1806 * @param typeParameters the type parameters for the class | 2122 * @param typeParameters the type parameters for the class |
| 1807 * @param extendsClause the extends clause for the class | 2123 * @param extendsClause the extends clause for the class |
| 1808 * @param withClause the with clause for the class | 2124 * @param withClause the with clause for the class |
| 1809 * @param implementsClause the implements clause for the class | 2125 * @param implementsClause the implements clause for the class |
| 1810 * @param leftBracket the left curly bracket | 2126 * @param leftBracket the left curly bracket |
| 1811 * @param members the members defined by the class | 2127 * @param members the members defined by the class |
| 1812 * @param rightBracket the right curly bracket | 2128 * @param rightBracket the right curly bracket |
| 1813 */ | 2129 */ |
| 1814 ClassDeclaration.full(Comment comment, List<Annotation> metadata, Token abstra
ctKeyword, Token classKeyword, SimpleIdentifier name, TypeParameterList typePara
meters, ExtendsClause extendsClause, WithClause withClause, ImplementsClause imp
lementsClause, Token leftBracket, List<ClassMember> members, Token rightBracket)
: super.full(comment, metadata) { | 2130 ClassDeclaration.full(Comment comment, List<Annotation> metadata, Token abstra
ctKeyword, Token classKeyword, SimpleIdentifier name, TypeParameterList typePara
meters, ExtendsClause extendsClause, WithClause withClause, ImplementsClause imp
lementsClause, Token leftBracket, List<ClassMember> members, Token rightBracket)
: super.full(comment, metadata) { |
| 1815 this._members = new NodeList<ClassMember>(this); | 2131 this._members = new NodeList<ClassMember>(this); |
| 1816 this._abstractKeyword = abstractKeyword; | 2132 this._abstractKeyword = abstractKeyword; |
| 1817 this._classKeyword = classKeyword; | 2133 this._classKeyword = classKeyword; |
| 1818 this._name = becomeParentOf(name); | 2134 this._name = becomeParentOf(name); |
| 1819 this._typeParameters = becomeParentOf(typeParameters); | 2135 this._typeParameters = becomeParentOf(typeParameters); |
| 1820 this._extendsClause = becomeParentOf(extendsClause); | 2136 this._extendsClause = becomeParentOf(extendsClause); |
| 1821 this._withClause = becomeParentOf(withClause); | 2137 this._withClause = becomeParentOf(withClause); |
| 1822 this._implementsClause = becomeParentOf(implementsClause); | 2138 this._implementsClause = becomeParentOf(implementsClause); |
| 1823 this._leftBracket = leftBracket; | 2139 this._leftBracket = leftBracket; |
| 1824 this._members.addAll(members); | 2140 this._members.addAll(members); |
| 1825 this._rightBracket = rightBracket; | 2141 this._rightBracket = rightBracket; |
| 1826 } | 2142 } |
| 2143 |
| 1827 /** | 2144 /** |
| 1828 * Initialize a newly created class declaration. | 2145 * Initialize a newly created class declaration. |
| 1829 * @param comment the documentation comment associated with this class | 2146 * @param comment the documentation comment associated with this class |
| 1830 * @param metadata the annotations associated with this class | 2147 * @param metadata the annotations associated with this class |
| 1831 * @param abstractKeyword the 'abstract' keyword, or {@code null} if the keywo
rd was absent | 2148 * @param abstractKeyword the 'abstract' keyword, or {@code null} if the keywo
rd was absent |
| 1832 * @param classKeyword the token representing the 'class' keyword | 2149 * @param classKeyword the token representing the 'class' keyword |
| 1833 * @param name the name of the class being declared | 2150 * @param name the name of the class being declared |
| 1834 * @param typeParameters the type parameters for the class | 2151 * @param typeParameters the type parameters for the class |
| 1835 * @param extendsClause the extends clause for the class | 2152 * @param extendsClause the extends clause for the class |
| 1836 * @param withClause the with clause for the class | 2153 * @param withClause the with clause for the class |
| 1837 * @param implementsClause the implements clause for the class | 2154 * @param implementsClause the implements clause for the class |
| 1838 * @param leftBracket the left curly bracket | 2155 * @param leftBracket the left curly bracket |
| 1839 * @param members the members defined by the class | 2156 * @param members the members defined by the class |
| 1840 * @param rightBracket the right curly bracket | 2157 * @param rightBracket the right curly bracket |
| 1841 */ | 2158 */ |
| 1842 ClassDeclaration({Comment comment, List<Annotation> metadata, Token abstractKe
yword, Token classKeyword, SimpleIdentifier name, TypeParameterList typeParamete
rs, ExtendsClause extendsClause, WithClause withClause, ImplementsClause impleme
ntsClause, Token leftBracket, List<ClassMember> members, Token rightBracket}) :
this.full(comment, metadata, abstractKeyword, classKeyword, name, typeParameters
, extendsClause, withClause, implementsClause, leftBracket, members, rightBracke
t); | 2159 ClassDeclaration({Comment comment, List<Annotation> metadata, Token abstractKe
yword, Token classKeyword, SimpleIdentifier name, TypeParameterList typeParamete
rs, ExtendsClause extendsClause, WithClause withClause, ImplementsClause impleme
ntsClause, Token leftBracket, List<ClassMember> members, Token rightBracket}) :
this.full(comment, metadata, abstractKeyword, classKeyword, name, typeParameters
, extendsClause, withClause, implementsClause, leftBracket, members, rightBracke
t); |
| 1843 accept(ASTVisitor visitor) => visitor.visitClassDeclaration(this); | 2160 accept(ASTVisitor visitor) => visitor.visitClassDeclaration(this); |
| 2161 |
| 1844 /** | 2162 /** |
| 1845 * Return the 'abstract' keyword, or {@code null} if the keyword was absent. | 2163 * Return the 'abstract' keyword, or {@code null} if the keyword was absent. |
| 1846 * @return the 'abstract' keyword | 2164 * @return the 'abstract' keyword |
| 1847 */ | 2165 */ |
| 1848 Token get abstractKeyword => _abstractKeyword; | 2166 Token get abstractKeyword => _abstractKeyword; |
| 2167 |
| 1849 /** | 2168 /** |
| 1850 * Return the token representing the 'class' keyword. | 2169 * Return the token representing the 'class' keyword. |
| 1851 * @return the token representing the 'class' keyword | 2170 * @return the token representing the 'class' keyword |
| 1852 */ | 2171 */ |
| 1853 Token get classKeyword => _classKeyword; | 2172 Token get classKeyword => _classKeyword; |
| 1854 ClassElement get element => _name != null ? (_name.element as ClassElement) :
null; | 2173 ClassElement get element => _name != null ? (_name.element as ClassElement) :
null; |
| 1855 Token get endToken => _rightBracket; | 2174 Token get endToken => _rightBracket; |
| 2175 |
| 1856 /** | 2176 /** |
| 1857 * Return the extends clause for this class, or {@code null} if the class does
not extend any | 2177 * Return the extends clause for this class, or {@code null} if the class does
not extend any |
| 1858 * other class. | 2178 * other class. |
| 1859 * @return the extends clause for this class | 2179 * @return the extends clause for this class |
| 1860 */ | 2180 */ |
| 1861 ExtendsClause get extendsClause => _extendsClause; | 2181 ExtendsClause get extendsClause => _extendsClause; |
| 2182 |
| 1862 /** | 2183 /** |
| 1863 * Return the implements clause for the class, or {@code null} if the class do
es not implement any | 2184 * Return the implements clause for the class, or {@code null} if the class do
es not implement any |
| 1864 * interfaces. | 2185 * interfaces. |
| 1865 * @return the implements clause for the class | 2186 * @return the implements clause for the class |
| 1866 */ | 2187 */ |
| 1867 ImplementsClause get implementsClause => _implementsClause; | 2188 ImplementsClause get implementsClause => _implementsClause; |
| 2189 |
| 1868 /** | 2190 /** |
| 1869 * Return the left curly bracket. | 2191 * Return the left curly bracket. |
| 1870 * @return the left curly bracket | 2192 * @return the left curly bracket |
| 1871 */ | 2193 */ |
| 1872 Token get leftBracket => _leftBracket; | 2194 Token get leftBracket => _leftBracket; |
| 2195 |
| 1873 /** | 2196 /** |
| 1874 * Return the members defined by the class. | 2197 * Return the members defined by the class. |
| 1875 * @return the members defined by the class | 2198 * @return the members defined by the class |
| 1876 */ | 2199 */ |
| 1877 NodeList<ClassMember> get members => _members; | 2200 NodeList<ClassMember> get members => _members; |
| 2201 |
| 1878 /** | 2202 /** |
| 1879 * Return the name of the class being declared. | 2203 * Return the name of the class being declared. |
| 1880 * @return the name of the class being declared | 2204 * @return the name of the class being declared |
| 1881 */ | 2205 */ |
| 1882 SimpleIdentifier get name => _name; | 2206 SimpleIdentifier get name => _name; |
| 2207 |
| 1883 /** | 2208 /** |
| 1884 * Return the right curly bracket. | 2209 * Return the right curly bracket. |
| 1885 * @return the right curly bracket | 2210 * @return the right curly bracket |
| 1886 */ | 2211 */ |
| 1887 Token get rightBracket => _rightBracket; | 2212 Token get rightBracket => _rightBracket; |
| 2213 |
| 1888 /** | 2214 /** |
| 1889 * Return the type parameters for the class, or {@code null} if the class does
not have any type | 2215 * Return the type parameters for the class, or {@code null} if the class does
not have any type |
| 1890 * parameters. | 2216 * parameters. |
| 1891 * @return the type parameters for the class | 2217 * @return the type parameters for the class |
| 1892 */ | 2218 */ |
| 1893 TypeParameterList get typeParameters => _typeParameters; | 2219 TypeParameterList get typeParameters => _typeParameters; |
| 2220 |
| 1894 /** | 2221 /** |
| 1895 * Return the with clause for the class, or {@code null} if the class does not
have a with clause. | 2222 * Return the with clause for the class, or {@code null} if the class does not
have a with clause. |
| 1896 * @return the with clause for the class | 2223 * @return the with clause for the class |
| 1897 */ | 2224 */ |
| 1898 WithClause get withClause => _withClause; | 2225 WithClause get withClause => _withClause; |
| 2226 |
| 1899 /** | 2227 /** |
| 1900 * Set the 'abstract' keyword to the given keyword. | 2228 * Set the 'abstract' keyword to the given keyword. |
| 1901 * @param abstractKeyword the 'abstract' keyword | 2229 * @param abstractKeyword the 'abstract' keyword |
| 1902 */ | 2230 */ |
| 1903 void set abstractKeyword(Token abstractKeyword2) { | 2231 void set abstractKeyword(Token abstractKeyword2) { |
| 1904 this._abstractKeyword = abstractKeyword2; | 2232 this._abstractKeyword = abstractKeyword2; |
| 1905 } | 2233 } |
| 2234 |
| 1906 /** | 2235 /** |
| 1907 * Set the token representing the 'class' keyword to the given token. | 2236 * Set the token representing the 'class' keyword to the given token. |
| 1908 * @param classKeyword the token representing the 'class' keyword | 2237 * @param classKeyword the token representing the 'class' keyword |
| 1909 */ | 2238 */ |
| 1910 void set classKeyword(Token classKeyword2) { | 2239 void set classKeyword(Token classKeyword2) { |
| 1911 this._classKeyword = classKeyword2; | 2240 this._classKeyword = classKeyword2; |
| 1912 } | 2241 } |
| 2242 |
| 1913 /** | 2243 /** |
| 1914 * Set the extends clause for this class to the given clause. | 2244 * Set the extends clause for this class to the given clause. |
| 1915 * @param extendsClause the extends clause for this class | 2245 * @param extendsClause the extends clause for this class |
| 1916 */ | 2246 */ |
| 1917 void set extendsClause(ExtendsClause extendsClause2) { | 2247 void set extendsClause(ExtendsClause extendsClause2) { |
| 1918 this._extendsClause = becomeParentOf(extendsClause2); | 2248 this._extendsClause = becomeParentOf(extendsClause2); |
| 1919 } | 2249 } |
| 2250 |
| 1920 /** | 2251 /** |
| 1921 * Set the implements clause for the class to the given clause. | 2252 * Set the implements clause for the class to the given clause. |
| 1922 * @param implementsClause the implements clause for the class | 2253 * @param implementsClause the implements clause for the class |
| 1923 */ | 2254 */ |
| 1924 void set implementsClause(ImplementsClause implementsClause2) { | 2255 void set implementsClause(ImplementsClause implementsClause2) { |
| 1925 this._implementsClause = becomeParentOf(implementsClause2); | 2256 this._implementsClause = becomeParentOf(implementsClause2); |
| 1926 } | 2257 } |
| 2258 |
| 1927 /** | 2259 /** |
| 1928 * Set the left curly bracket to the given token. | 2260 * Set the left curly bracket to the given token. |
| 1929 * @param leftBracket the left curly bracket | 2261 * @param leftBracket the left curly bracket |
| 1930 */ | 2262 */ |
| 1931 void set leftBracket(Token leftBracket2) { | 2263 void set leftBracket(Token leftBracket2) { |
| 1932 this._leftBracket = leftBracket2; | 2264 this._leftBracket = leftBracket2; |
| 1933 } | 2265 } |
| 2266 |
| 1934 /** | 2267 /** |
| 1935 * Set the name of the class being declared to the given identifier. | 2268 * Set the name of the class being declared to the given identifier. |
| 1936 * @param identifier the name of the class being declared | 2269 * @param identifier the name of the class being declared |
| 1937 */ | 2270 */ |
| 1938 void set name(SimpleIdentifier identifier) { | 2271 void set name(SimpleIdentifier identifier) { |
| 1939 _name = becomeParentOf(identifier); | 2272 _name = becomeParentOf(identifier); |
| 1940 } | 2273 } |
| 2274 |
| 1941 /** | 2275 /** |
| 1942 * Set the right curly bracket to the given token. | 2276 * Set the right curly bracket to the given token. |
| 1943 * @param rightBracket the right curly bracket | 2277 * @param rightBracket the right curly bracket |
| 1944 */ | 2278 */ |
| 1945 void set rightBracket(Token rightBracket2) { | 2279 void set rightBracket(Token rightBracket2) { |
| 1946 this._rightBracket = rightBracket2; | 2280 this._rightBracket = rightBracket2; |
| 1947 } | 2281 } |
| 2282 |
| 1948 /** | 2283 /** |
| 1949 * Set the type parameters for the class to the given list of type parameters. | 2284 * Set the type parameters for the class to the given list of type parameters. |
| 1950 * @param typeParameters the type parameters for the class | 2285 * @param typeParameters the type parameters for the class |
| 1951 */ | 2286 */ |
| 1952 void set typeParameters(TypeParameterList typeParameters2) { | 2287 void set typeParameters(TypeParameterList typeParameters2) { |
| 1953 this._typeParameters = typeParameters2; | 2288 this._typeParameters = typeParameters2; |
| 1954 } | 2289 } |
| 2290 |
| 1955 /** | 2291 /** |
| 1956 * Set the with clause for the class to the given clause. | 2292 * Set the with clause for the class to the given clause. |
| 1957 * @param withClause the with clause for the class | 2293 * @param withClause the with clause for the class |
| 1958 */ | 2294 */ |
| 1959 void set withClause(WithClause withClause2) { | 2295 void set withClause(WithClause withClause2) { |
| 1960 this._withClause = becomeParentOf(withClause2); | 2296 this._withClause = becomeParentOf(withClause2); |
| 1961 } | 2297 } |
| 1962 void visitChildren(ASTVisitor<Object> visitor) { | 2298 void visitChildren(ASTVisitor<Object> visitor) { |
| 1963 super.visitChildren(visitor); | 2299 super.visitChildren(visitor); |
| 1964 safelyVisitChild(_name, visitor); | 2300 safelyVisitChild(_name, visitor); |
| 1965 safelyVisitChild(_typeParameters, visitor); | 2301 safelyVisitChild(_typeParameters, visitor); |
| 1966 safelyVisitChild(_extendsClause, visitor); | 2302 safelyVisitChild(_extendsClause, visitor); |
| 1967 safelyVisitChild(_withClause, visitor); | 2303 safelyVisitChild(_withClause, visitor); |
| 1968 safelyVisitChild(_implementsClause, visitor); | 2304 safelyVisitChild(_implementsClause, visitor); |
| 1969 members.accept(visitor); | 2305 members.accept(visitor); |
| 1970 } | 2306 } |
| 1971 Token get firstTokenAfterCommentAndMetadata { | 2307 Token get firstTokenAfterCommentAndMetadata { |
| 1972 if (_abstractKeyword != null) { | 2308 if (_abstractKeyword != null) { |
| 1973 return _abstractKeyword; | 2309 return _abstractKeyword; |
| 1974 } | 2310 } |
| 1975 return _classKeyword; | 2311 return _classKeyword; |
| 1976 } | 2312 } |
| 1977 } | 2313 } |
| 2314 |
| 1978 /** | 2315 /** |
| 1979 * The abstract class {@code ClassMember} defines the behavior common to nodes t
hat declare a name | 2316 * The abstract class {@code ClassMember} defines the behavior common to nodes t
hat declare a name |
| 1980 * within the scope of a class. | 2317 * within the scope of a class. |
| 1981 * @coverage dart.engine.ast | 2318 * @coverage dart.engine.ast |
| 1982 */ | 2319 */ |
| 1983 abstract class ClassMember extends Declaration { | 2320 abstract class ClassMember extends Declaration { |
| 2321 |
| 1984 /** | 2322 /** |
| 1985 * Initialize a newly created member of a class. | 2323 * Initialize a newly created member of a class. |
| 1986 * @param comment the documentation comment associated with this member | 2324 * @param comment the documentation comment associated with this member |
| 1987 * @param metadata the annotations associated with this member | 2325 * @param metadata the annotations associated with this member |
| 1988 */ | 2326 */ |
| 1989 ClassMember.full(Comment comment, List<Annotation> metadata) : super.full(comm
ent, metadata) { | 2327 ClassMember.full(Comment comment, List<Annotation> metadata) : super.full(comm
ent, metadata) { |
| 1990 } | 2328 } |
| 2329 |
| 1991 /** | 2330 /** |
| 1992 * Initialize a newly created member of a class. | 2331 * Initialize a newly created member of a class. |
| 1993 * @param comment the documentation comment associated with this member | 2332 * @param comment the documentation comment associated with this member |
| 1994 * @param metadata the annotations associated with this member | 2333 * @param metadata the annotations associated with this member |
| 1995 */ | 2334 */ |
| 1996 ClassMember({Comment comment, List<Annotation> metadata}) : this.full(comment,
metadata); | 2335 ClassMember({Comment comment, List<Annotation> metadata}) : this.full(comment,
metadata); |
| 1997 } | 2336 } |
| 2337 |
| 1998 /** | 2338 /** |
| 1999 * Instances of the class {@code ClassTypeAlias} represent a class type alias. | 2339 * Instances of the class {@code ClassTypeAlias} represent a class type alias. |
| 2000 * <pre> | 2340 * <pre> |
| 2001 * classTypeAlias ::={@link SimpleIdentifier identifier} {@link TypeParameterLis
t typeParameters}? '=' 'abstract'? mixinApplication | 2341 * classTypeAlias ::={@link SimpleIdentifier identifier} {@link TypeParameterLis
t typeParameters}? '=' 'abstract'? mixinApplication |
| 2002 * mixinApplication ::={@link TypeName superclass} {@link WithClause withClause}
{@link ImplementsClause implementsClause}? ';' | 2342 * mixinApplication ::={@link TypeName superclass} {@link WithClause withClause}
{@link ImplementsClause implementsClause}? ';' |
| 2003 * </pre> | 2343 * </pre> |
| 2004 * @coverage dart.engine.ast | 2344 * @coverage dart.engine.ast |
| 2005 */ | 2345 */ |
| 2006 class ClassTypeAlias extends TypeAlias { | 2346 class ClassTypeAlias extends TypeAlias { |
| 2347 |
| 2007 /** | 2348 /** |
| 2008 * The name of the class being declared. | 2349 * The name of the class being declared. |
| 2009 */ | 2350 */ |
| 2010 SimpleIdentifier _name; | 2351 SimpleIdentifier _name; |
| 2352 |
| 2011 /** | 2353 /** |
| 2012 * The type parameters for the class, or {@code null} if the class does not ha
ve any type | 2354 * The type parameters for the class, or {@code null} if the class does not ha
ve any type |
| 2013 * parameters. | 2355 * parameters. |
| 2014 */ | 2356 */ |
| 2015 TypeParameterList _typeParameters; | 2357 TypeParameterList _typeParameters; |
| 2358 |
| 2016 /** | 2359 /** |
| 2017 * The token for the '=' separating the name from the definition. | 2360 * The token for the '=' separating the name from the definition. |
| 2018 */ | 2361 */ |
| 2019 Token _equals; | 2362 Token _equals; |
| 2363 |
| 2020 /** | 2364 /** |
| 2021 * The token for the 'abstract' keyword, or {@code null} if this is not defini
ng an abstract | 2365 * The token for the 'abstract' keyword, or {@code null} if this is not defini
ng an abstract |
| 2022 * class. | 2366 * class. |
| 2023 */ | 2367 */ |
| 2024 Token _abstractKeyword; | 2368 Token _abstractKeyword; |
| 2369 |
| 2025 /** | 2370 /** |
| 2026 * The name of the superclass of the class being declared. | 2371 * The name of the superclass of the class being declared. |
| 2027 */ | 2372 */ |
| 2028 TypeName _superclass; | 2373 TypeName _superclass; |
| 2374 |
| 2029 /** | 2375 /** |
| 2030 * The with clause for this class. | 2376 * The with clause for this class. |
| 2031 */ | 2377 */ |
| 2032 WithClause _withClause; | 2378 WithClause _withClause; |
| 2379 |
| 2033 /** | 2380 /** |
| 2034 * The implements clause for this class, or {@code null} if there is no implem
ents clause. | 2381 * The implements clause for this class, or {@code null} if there is no implem
ents clause. |
| 2035 */ | 2382 */ |
| 2036 ImplementsClause _implementsClause; | 2383 ImplementsClause _implementsClause; |
| 2384 |
| 2037 /** | 2385 /** |
| 2038 * Initialize a newly created class type alias. | 2386 * Initialize a newly created class type alias. |
| 2039 * @param comment the documentation comment associated with this type alias | 2387 * @param comment the documentation comment associated with this type alias |
| 2040 * @param metadata the annotations associated with this type alias | 2388 * @param metadata the annotations associated with this type alias |
| 2041 * @param keyword the token representing the 'typedef' keyword | 2389 * @param keyword the token representing the 'typedef' keyword |
| 2042 * @param name the name of the class being declared | 2390 * @param name the name of the class being declared |
| 2043 * @param typeParameters the type parameters for the class | 2391 * @param typeParameters the type parameters for the class |
| 2044 * @param equals the token for the '=' separating the name from the definition | 2392 * @param equals the token for the '=' separating the name from the definition |
| 2045 * @param abstractKeyword the token for the 'abstract' keyword | 2393 * @param abstractKeyword the token for the 'abstract' keyword |
| 2046 * @param superclass the name of the superclass of the class being declared | 2394 * @param superclass the name of the superclass of the class being declared |
| 2047 * @param withClause the with clause for this class | 2395 * @param withClause the with clause for this class |
| 2048 * @param implementsClause the implements clause for this class | 2396 * @param implementsClause the implements clause for this class |
| 2049 * @param semicolon the semicolon terminating the declaration | 2397 * @param semicolon the semicolon terminating the declaration |
| 2050 */ | 2398 */ |
| 2051 ClassTypeAlias.full(Comment comment, List<Annotation> metadata, Token keyword,
SimpleIdentifier name, TypeParameterList typeParameters, Token equals, Token ab
stractKeyword, TypeName superclass, WithClause withClause, ImplementsClause impl
ementsClause, Token semicolon) : super.full(comment, metadata, keyword, semicolo
n) { | 2399 ClassTypeAlias.full(Comment comment, List<Annotation> metadata, Token keyword,
SimpleIdentifier name, TypeParameterList typeParameters, Token equals, Token ab
stractKeyword, TypeName superclass, WithClause withClause, ImplementsClause impl
ementsClause, Token semicolon) : super.full(comment, metadata, keyword, semicolo
n) { |
| 2052 this._name = becomeParentOf(name); | 2400 this._name = becomeParentOf(name); |
| 2053 this._typeParameters = becomeParentOf(typeParameters); | 2401 this._typeParameters = becomeParentOf(typeParameters); |
| 2054 this._equals = equals; | 2402 this._equals = equals; |
| 2055 this._abstractKeyword = abstractKeyword; | 2403 this._abstractKeyword = abstractKeyword; |
| 2056 this._superclass = becomeParentOf(superclass); | 2404 this._superclass = becomeParentOf(superclass); |
| 2057 this._withClause = becomeParentOf(withClause); | 2405 this._withClause = becomeParentOf(withClause); |
| 2058 this._implementsClause = becomeParentOf(implementsClause); | 2406 this._implementsClause = becomeParentOf(implementsClause); |
| 2059 } | 2407 } |
| 2408 |
| 2060 /** | 2409 /** |
| 2061 * Initialize a newly created class type alias. | 2410 * Initialize a newly created class type alias. |
| 2062 * @param comment the documentation comment associated with this type alias | 2411 * @param comment the documentation comment associated with this type alias |
| 2063 * @param metadata the annotations associated with this type alias | 2412 * @param metadata the annotations associated with this type alias |
| 2064 * @param keyword the token representing the 'typedef' keyword | 2413 * @param keyword the token representing the 'typedef' keyword |
| 2065 * @param name the name of the class being declared | 2414 * @param name the name of the class being declared |
| 2066 * @param typeParameters the type parameters for the class | 2415 * @param typeParameters the type parameters for the class |
| 2067 * @param equals the token for the '=' separating the name from the definition | 2416 * @param equals the token for the '=' separating the name from the definition |
| 2068 * @param abstractKeyword the token for the 'abstract' keyword | 2417 * @param abstractKeyword the token for the 'abstract' keyword |
| 2069 * @param superclass the name of the superclass of the class being declared | 2418 * @param superclass the name of the superclass of the class being declared |
| 2070 * @param withClause the with clause for this class | 2419 * @param withClause the with clause for this class |
| 2071 * @param implementsClause the implements clause for this class | 2420 * @param implementsClause the implements clause for this class |
| 2072 * @param semicolon the semicolon terminating the declaration | 2421 * @param semicolon the semicolon terminating the declaration |
| 2073 */ | 2422 */ |
| 2074 ClassTypeAlias({Comment comment, List<Annotation> metadata, Token keyword, Sim
pleIdentifier name, TypeParameterList typeParameters, Token equals, Token abstra
ctKeyword, TypeName superclass, WithClause withClause, ImplementsClause implemen
tsClause, Token semicolon}) : this.full(comment, metadata, keyword, name, typePa
rameters, equals, abstractKeyword, superclass, withClause, implementsClause, sem
icolon); | 2423 ClassTypeAlias({Comment comment, List<Annotation> metadata, Token keyword, Sim
pleIdentifier name, TypeParameterList typeParameters, Token equals, Token abstra
ctKeyword, TypeName superclass, WithClause withClause, ImplementsClause implemen
tsClause, Token semicolon}) : this.full(comment, metadata, keyword, name, typePa
rameters, equals, abstractKeyword, superclass, withClause, implementsClause, sem
icolon); |
| 2075 accept(ASTVisitor visitor) => visitor.visitClassTypeAlias(this); | 2424 accept(ASTVisitor visitor) => visitor.visitClassTypeAlias(this); |
| 2425 |
| 2076 /** | 2426 /** |
| 2077 * Return the token for the 'abstract' keyword, or {@code null} if this is not
defining an | 2427 * Return the token for the 'abstract' keyword, or {@code null} if this is not
defining an |
| 2078 * abstract class. | 2428 * abstract class. |
| 2079 * @return the token for the 'abstract' keyword | 2429 * @return the token for the 'abstract' keyword |
| 2080 */ | 2430 */ |
| 2081 Token get abstractKeyword => _abstractKeyword; | 2431 Token get abstractKeyword => _abstractKeyword; |
| 2082 ClassElement get element => _name != null ? (_name.element as ClassElement) :
null; | 2432 ClassElement get element => _name != null ? (_name.element as ClassElement) :
null; |
| 2433 |
| 2083 /** | 2434 /** |
| 2084 * Return the token for the '=' separating the name from the definition. | 2435 * Return the token for the '=' separating the name from the definition. |
| 2085 * @return the token for the '=' separating the name from the definition | 2436 * @return the token for the '=' separating the name from the definition |
| 2086 */ | 2437 */ |
| 2087 Token get equals => _equals; | 2438 Token get equals => _equals; |
| 2439 |
| 2088 /** | 2440 /** |
| 2089 * Return the implements clause for this class, or {@code null} if there is no
implements clause. | 2441 * Return the implements clause for this class, or {@code null} if there is no
implements clause. |
| 2090 * @return the implements clause for this class | 2442 * @return the implements clause for this class |
| 2091 */ | 2443 */ |
| 2092 ImplementsClause get implementsClause => _implementsClause; | 2444 ImplementsClause get implementsClause => _implementsClause; |
| 2445 |
| 2093 /** | 2446 /** |
| 2094 * Return the name of the class being declared. | 2447 * Return the name of the class being declared. |
| 2095 * @return the name of the class being declared | 2448 * @return the name of the class being declared |
| 2096 */ | 2449 */ |
| 2097 SimpleIdentifier get name => _name; | 2450 SimpleIdentifier get name => _name; |
| 2451 |
| 2098 /** | 2452 /** |
| 2099 * Return the name of the superclass of the class being declared. | 2453 * Return the name of the superclass of the class being declared. |
| 2100 * @return the name of the superclass of the class being declared | 2454 * @return the name of the superclass of the class being declared |
| 2101 */ | 2455 */ |
| 2102 TypeName get superclass => _superclass; | 2456 TypeName get superclass => _superclass; |
| 2457 |
| 2103 /** | 2458 /** |
| 2104 * Return the type parameters for the class, or {@code null} if the class does
not have any type | 2459 * Return the type parameters for the class, or {@code null} if the class does
not have any type |
| 2105 * parameters. | 2460 * parameters. |
| 2106 * @return the type parameters for the class | 2461 * @return the type parameters for the class |
| 2107 */ | 2462 */ |
| 2108 TypeParameterList get typeParameters => _typeParameters; | 2463 TypeParameterList get typeParameters => _typeParameters; |
| 2464 |
| 2109 /** | 2465 /** |
| 2110 * Return the with clause for this class. | 2466 * Return the with clause for this class. |
| 2111 * @return the with clause for this class | 2467 * @return the with clause for this class |
| 2112 */ | 2468 */ |
| 2113 WithClause get withClause => _withClause; | 2469 WithClause get withClause => _withClause; |
| 2470 |
| 2114 /** | 2471 /** |
| 2115 * Set the token for the 'abstract' keyword to the given token. | 2472 * Set the token for the 'abstract' keyword to the given token. |
| 2116 * @param abstractKeyword the token for the 'abstract' keyword | 2473 * @param abstractKeyword the token for the 'abstract' keyword |
| 2117 */ | 2474 */ |
| 2118 void set abstractKeyword(Token abstractKeyword2) { | 2475 void set abstractKeyword(Token abstractKeyword2) { |
| 2119 this._abstractKeyword = abstractKeyword2; | 2476 this._abstractKeyword = abstractKeyword2; |
| 2120 } | 2477 } |
| 2478 |
| 2121 /** | 2479 /** |
| 2122 * Set the token for the '=' separating the name from the definition to the gi
ven token. | 2480 * Set the token for the '=' separating the name from the definition to the gi
ven token. |
| 2123 * @param equals the token for the '=' separating the name from the definition | 2481 * @param equals the token for the '=' separating the name from the definition |
| 2124 */ | 2482 */ |
| 2125 void set equals(Token equals2) { | 2483 void set equals(Token equals2) { |
| 2126 this._equals = equals2; | 2484 this._equals = equals2; |
| 2127 } | 2485 } |
| 2486 |
| 2128 /** | 2487 /** |
| 2129 * Set the implements clause for this class to the given implements clause. | 2488 * Set the implements clause for this class to the given implements clause. |
| 2130 * @param implementsClause the implements clause for this class | 2489 * @param implementsClause the implements clause for this class |
| 2131 */ | 2490 */ |
| 2132 void set implementsClause(ImplementsClause implementsClause2) { | 2491 void set implementsClause(ImplementsClause implementsClause2) { |
| 2133 this._implementsClause = becomeParentOf(implementsClause2); | 2492 this._implementsClause = becomeParentOf(implementsClause2); |
| 2134 } | 2493 } |
| 2494 |
| 2135 /** | 2495 /** |
| 2136 * Set the name of the class being declared to the given identifier. | 2496 * Set the name of the class being declared to the given identifier. |
| 2137 * @param name the name of the class being declared | 2497 * @param name the name of the class being declared |
| 2138 */ | 2498 */ |
| 2139 void set name(SimpleIdentifier name2) { | 2499 void set name(SimpleIdentifier name2) { |
| 2140 this._name = becomeParentOf(name2); | 2500 this._name = becomeParentOf(name2); |
| 2141 } | 2501 } |
| 2502 |
| 2142 /** | 2503 /** |
| 2143 * Set the name of the superclass of the class being declared to the given nam
e. | 2504 * Set the name of the superclass of the class being declared to the given nam
e. |
| 2144 * @param superclass the name of the superclass of the class being declared | 2505 * @param superclass the name of the superclass of the class being declared |
| 2145 */ | 2506 */ |
| 2146 void set superclass(TypeName superclass2) { | 2507 void set superclass(TypeName superclass2) { |
| 2147 this._superclass = becomeParentOf(superclass2); | 2508 this._superclass = becomeParentOf(superclass2); |
| 2148 } | 2509 } |
| 2510 |
| 2149 /** | 2511 /** |
| 2150 * Set the type parameters for the class to the given list of parameters. | 2512 * Set the type parameters for the class to the given list of parameters. |
| 2151 * @param typeParameters the type parameters for the class | 2513 * @param typeParameters the type parameters for the class |
| 2152 */ | 2514 */ |
| 2153 void set typeParameters(TypeParameterList typeParameters2) { | 2515 void set typeParameters(TypeParameterList typeParameters2) { |
| 2154 this._typeParameters = becomeParentOf(typeParameters2); | 2516 this._typeParameters = becomeParentOf(typeParameters2); |
| 2155 } | 2517 } |
| 2518 |
| 2156 /** | 2519 /** |
| 2157 * Set the with clause for this class to the given with clause. | 2520 * Set the with clause for this class to the given with clause. |
| 2158 * @param withClause the with clause for this class | 2521 * @param withClause the with clause for this class |
| 2159 */ | 2522 */ |
| 2160 void set withClause(WithClause withClause2) { | 2523 void set withClause(WithClause withClause2) { |
| 2161 this._withClause = becomeParentOf(withClause2); | 2524 this._withClause = becomeParentOf(withClause2); |
| 2162 } | 2525 } |
| 2163 void visitChildren(ASTVisitor<Object> visitor) { | 2526 void visitChildren(ASTVisitor<Object> visitor) { |
| 2164 super.visitChildren(visitor); | 2527 super.visitChildren(visitor); |
| 2165 safelyVisitChild(_name, visitor); | 2528 safelyVisitChild(_name, visitor); |
| 2166 safelyVisitChild(_typeParameters, visitor); | 2529 safelyVisitChild(_typeParameters, visitor); |
| 2167 safelyVisitChild(_superclass, visitor); | 2530 safelyVisitChild(_superclass, visitor); |
| 2168 safelyVisitChild(_withClause, visitor); | 2531 safelyVisitChild(_withClause, visitor); |
| 2169 safelyVisitChild(_implementsClause, visitor); | 2532 safelyVisitChild(_implementsClause, visitor); |
| 2170 } | 2533 } |
| 2171 } | 2534 } |
| 2535 |
| 2172 /** | 2536 /** |
| 2173 * Instances of the class {@code Combinator} represent the combinator associated
with an import | 2537 * Instances of the class {@code Combinator} represent the combinator associated
with an import |
| 2174 * directive. | 2538 * directive. |
| 2175 * <pre> | 2539 * <pre> |
| 2176 * combinator ::={@link HideCombinator hideCombinator}| {@link ShowCombinator sh
owCombinator}</pre> | 2540 * combinator ::={@link HideCombinator hideCombinator}| {@link ShowCombinator sh
owCombinator}</pre> |
| 2177 * @coverage dart.engine.ast | 2541 * @coverage dart.engine.ast |
| 2178 */ | 2542 */ |
| 2179 abstract class Combinator extends ASTNode { | 2543 abstract class Combinator extends ASTNode { |
| 2544 |
| 2180 /** | 2545 /** |
| 2181 * The keyword specifying what kind of processing is to be done on the importe
d names. | 2546 * The keyword specifying what kind of processing is to be done on the importe
d names. |
| 2182 */ | 2547 */ |
| 2183 Token _keyword; | 2548 Token _keyword; |
| 2549 |
| 2184 /** | 2550 /** |
| 2185 * Initialize a newly created import combinator. | 2551 * Initialize a newly created import combinator. |
| 2186 * @param keyword the keyword specifying what kind of processing is to be done
on the imported | 2552 * @param keyword the keyword specifying what kind of processing is to be done
on the imported |
| 2187 * names | 2553 * names |
| 2188 */ | 2554 */ |
| 2189 Combinator.full(Token keyword) { | 2555 Combinator.full(Token keyword) { |
| 2190 this._keyword = keyword; | 2556 this._keyword = keyword; |
| 2191 } | 2557 } |
| 2558 |
| 2192 /** | 2559 /** |
| 2193 * Initialize a newly created import combinator. | 2560 * Initialize a newly created import combinator. |
| 2194 * @param keyword the keyword specifying what kind of processing is to be done
on the imported | 2561 * @param keyword the keyword specifying what kind of processing is to be done
on the imported |
| 2195 * names | 2562 * names |
| 2196 */ | 2563 */ |
| 2197 Combinator({Token keyword}) : this.full(keyword); | 2564 Combinator({Token keyword}) : this.full(keyword); |
| 2198 Token get beginToken => _keyword; | 2565 Token get beginToken => _keyword; |
| 2566 |
| 2199 /** | 2567 /** |
| 2200 * Return the keyword specifying what kind of processing is to be done on the
imported names. | 2568 * Return the keyword specifying what kind of processing is to be done on the
imported names. |
| 2201 * @return the keyword specifying what kind of processing is to be done on the
imported names | 2569 * @return the keyword specifying what kind of processing is to be done on the
imported names |
| 2202 */ | 2570 */ |
| 2203 Token get keyword => _keyword; | 2571 Token get keyword => _keyword; |
| 2572 |
| 2204 /** | 2573 /** |
| 2205 * Set the keyword specifying what kind of processing is to be done on the imp
orted names to the | 2574 * Set the keyword specifying what kind of processing is to be done on the imp
orted names to the |
| 2206 * given token. | 2575 * given token. |
| 2207 * @param keyword the keyword specifying what kind of processing is to be done
on the imported | 2576 * @param keyword the keyword specifying what kind of processing is to be done
on the imported |
| 2208 * names | 2577 * names |
| 2209 */ | 2578 */ |
| 2210 void set keyword(Token keyword2) { | 2579 void set keyword(Token keyword2) { |
| 2211 this._keyword = keyword2; | 2580 this._keyword = keyword2; |
| 2212 } | 2581 } |
| 2213 } | 2582 } |
| 2583 |
| 2214 /** | 2584 /** |
| 2215 * Instances of the class {@code Comment} represent a comment within the source
code. | 2585 * Instances of the class {@code Comment} represent a comment within the source
code. |
| 2216 * <pre> | 2586 * <pre> |
| 2217 * comment ::= | 2587 * comment ::= |
| 2218 * endOfLineComment | 2588 * endOfLineComment |
| 2219 * | blockComment | 2589 * | blockComment |
| 2220 * | documentationComment | 2590 * | documentationComment |
| 2221 * endOfLineComment ::= | 2591 * endOfLineComment ::= |
| 2222 * '//' (CHARACTER - EOL)* EOL | 2592 * '//' (CHARACTER - EOL)* EOL |
| 2223 * blockComment ::= | 2593 * blockComment ::= |
| 2224 * '/ *' CHARACTER* '*/' | 2594 * '/ *' CHARACTER* '*/' |
| 2225 * documentationComment ::= | 2595 * documentationComment ::= |
| 2226 * '/ **' (CHARACTER | {@link CommentReference commentReference})* '*/' | 2596 * '/ **' (CHARACTER | {@link CommentReference commentReference})* '*/' |
| 2227 * | ('///' (CHARACTER - EOL)* EOL)+ | 2597 * | ('///' (CHARACTER - EOL)* EOL)+ |
| 2228 * </pre> | 2598 * </pre> |
| 2229 * @coverage dart.engine.ast | 2599 * @coverage dart.engine.ast |
| 2230 */ | 2600 */ |
| 2231 class Comment extends ASTNode { | 2601 class Comment extends ASTNode { |
| 2602 |
| 2232 /** | 2603 /** |
| 2233 * Create a block comment. | 2604 * Create a block comment. |
| 2234 * @param tokens the tokens representing the comment | 2605 * @param tokens the tokens representing the comment |
| 2235 * @return the block comment that was created | 2606 * @return the block comment that was created |
| 2236 */ | 2607 */ |
| 2237 static Comment createBlockComment(List<Token> tokens) => new Comment.full(toke
ns, CommentType.BLOCK, null); | 2608 static Comment createBlockComment(List<Token> tokens) => new Comment.full(toke
ns, CommentType.BLOCK, null); |
| 2609 |
| 2238 /** | 2610 /** |
| 2239 * Create a documentation comment. | 2611 * Create a documentation comment. |
| 2240 * @param tokens the tokens representing the comment | 2612 * @param tokens the tokens representing the comment |
| 2241 * @return the documentation comment that was created | 2613 * @return the documentation comment that was created |
| 2242 */ | 2614 */ |
| 2243 static Comment createDocumentationComment(List<Token> tokens) => new Comment.f
ull(tokens, CommentType.DOCUMENTATION, new List<CommentReference>()); | 2615 static Comment createDocumentationComment(List<Token> tokens) => new Comment.f
ull(tokens, CommentType.DOCUMENTATION, new List<CommentReference>()); |
| 2616 |
| 2244 /** | 2617 /** |
| 2245 * Create a documentation comment. | 2618 * Create a documentation comment. |
| 2246 * @param tokens the tokens representing the comment | 2619 * @param tokens the tokens representing the comment |
| 2247 * @param references the references embedded within the documentation comment | 2620 * @param references the references embedded within the documentation comment |
| 2248 * @return the documentation comment that was created | 2621 * @return the documentation comment that was created |
| 2249 */ | 2622 */ |
| 2250 static Comment createDocumentationComment2(List<Token> tokens, List<CommentRef
erence> references) => new Comment.full(tokens, CommentType.DOCUMENTATION, refer
ences); | 2623 static Comment createDocumentationComment2(List<Token> tokens, List<CommentRef
erence> references) => new Comment.full(tokens, CommentType.DOCUMENTATION, refer
ences); |
| 2624 |
| 2251 /** | 2625 /** |
| 2252 * Create an end-of-line comment. | 2626 * Create an end-of-line comment. |
| 2253 * @param tokens the tokens representing the comment | 2627 * @param tokens the tokens representing the comment |
| 2254 * @return the end-of-line comment that was created | 2628 * @return the end-of-line comment that was created |
| 2255 */ | 2629 */ |
| 2256 static Comment createEndOfLineComment(List<Token> tokens) => new Comment.full(
tokens, CommentType.END_OF_LINE, null); | 2630 static Comment createEndOfLineComment(List<Token> tokens) => new Comment.full(
tokens, CommentType.END_OF_LINE, null); |
| 2631 |
| 2257 /** | 2632 /** |
| 2258 * The tokens representing the comment. | 2633 * The tokens representing the comment. |
| 2259 */ | 2634 */ |
| 2260 List<Token> _tokens; | 2635 List<Token> _tokens; |
| 2636 |
| 2261 /** | 2637 /** |
| 2262 * The type of the comment. | 2638 * The type of the comment. |
| 2263 */ | 2639 */ |
| 2264 CommentType _type; | 2640 CommentType _type; |
| 2641 |
| 2265 /** | 2642 /** |
| 2266 * The references embedded within the documentation comment. This list will be
empty unless this | 2643 * The references embedded within the documentation comment. This list will be
empty unless this |
| 2267 * is a documentation comment that has references embedded within it. | 2644 * is a documentation comment that has references embedded within it. |
| 2268 */ | 2645 */ |
| 2269 NodeList<CommentReference> _references; | 2646 NodeList<CommentReference> _references; |
| 2647 |
| 2270 /** | 2648 /** |
| 2271 * Initialize a newly created comment. | 2649 * Initialize a newly created comment. |
| 2272 * @param tokens the tokens representing the comment | 2650 * @param tokens the tokens representing the comment |
| 2273 * @param type the type of the comment | 2651 * @param type the type of the comment |
| 2274 * @param references the references embedded within the documentation comment | 2652 * @param references the references embedded within the documentation comment |
| 2275 */ | 2653 */ |
| 2276 Comment.full(List<Token> tokens, CommentType type, List<CommentReference> refe
rences) { | 2654 Comment.full(List<Token> tokens, CommentType type, List<CommentReference> refe
rences) { |
| 2277 this._references = new NodeList<CommentReference>(this); | 2655 this._references = new NodeList<CommentReference>(this); |
| 2278 this._tokens = tokens; | 2656 this._tokens = tokens; |
| 2279 this._type = type; | 2657 this._type = type; |
| 2280 this._references.addAll(references); | 2658 this._references.addAll(references); |
| 2281 } | 2659 } |
| 2660 |
| 2282 /** | 2661 /** |
| 2283 * Initialize a newly created comment. | 2662 * Initialize a newly created comment. |
| 2284 * @param tokens the tokens representing the comment | 2663 * @param tokens the tokens representing the comment |
| 2285 * @param type the type of the comment | 2664 * @param type the type of the comment |
| 2286 * @param references the references embedded within the documentation comment | 2665 * @param references the references embedded within the documentation comment |
| 2287 */ | 2666 */ |
| 2288 Comment({List<Token> tokens, CommentType type, List<CommentReference> referenc
es}) : this.full(tokens, type, references); | 2667 Comment({List<Token> tokens, CommentType type, List<CommentReference> referenc
es}) : this.full(tokens, type, references); |
| 2289 accept(ASTVisitor visitor) => visitor.visitComment(this); | 2668 accept(ASTVisitor visitor) => visitor.visitComment(this); |
| 2290 Token get beginToken => _tokens[0]; | 2669 Token get beginToken => _tokens[0]; |
| 2291 Token get endToken => _tokens[_tokens.length - 1]; | 2670 Token get endToken => _tokens[_tokens.length - 1]; |
| 2671 |
| 2292 /** | 2672 /** |
| 2293 * Return the references embedded within the documentation comment. | 2673 * Return the references embedded within the documentation comment. |
| 2294 * @return the references embedded within the documentation comment | 2674 * @return the references embedded within the documentation comment |
| 2295 */ | 2675 */ |
| 2296 NodeList<CommentReference> get references => _references; | 2676 NodeList<CommentReference> get references => _references; |
| 2677 |
| 2297 /** | 2678 /** |
| 2298 * Return the tokens representing the comment. | 2679 * Return the tokens representing the comment. |
| 2299 * @return the tokens representing the comment | 2680 * @return the tokens representing the comment |
| 2300 */ | 2681 */ |
| 2301 List<Token> get tokens => _tokens; | 2682 List<Token> get tokens => _tokens; |
| 2683 |
| 2302 /** | 2684 /** |
| 2303 * Return {@code true} if this is a block comment. | 2685 * Return {@code true} if this is a block comment. |
| 2304 * @return {@code true} if this is a block comment | 2686 * @return {@code true} if this is a block comment |
| 2305 */ | 2687 */ |
| 2306 bool isBlock() => identical(_type, CommentType.BLOCK); | 2688 bool isBlock() => identical(_type, CommentType.BLOCK); |
| 2689 |
| 2307 /** | 2690 /** |
| 2308 * Return {@code true} if this is a documentation comment. | 2691 * Return {@code true} if this is a documentation comment. |
| 2309 * @return {@code true} if this is a documentation comment | 2692 * @return {@code true} if this is a documentation comment |
| 2310 */ | 2693 */ |
| 2311 bool isDocumentation() => identical(_type, CommentType.DOCUMENTATION); | 2694 bool isDocumentation() => identical(_type, CommentType.DOCUMENTATION); |
| 2695 |
| 2312 /** | 2696 /** |
| 2313 * Return {@code true} if this is an end-of-line comment. | 2697 * Return {@code true} if this is an end-of-line comment. |
| 2314 * @return {@code true} if this is an end-of-line comment | 2698 * @return {@code true} if this is an end-of-line comment |
| 2315 */ | 2699 */ |
| 2316 bool isEndOfLine() => identical(_type, CommentType.END_OF_LINE); | 2700 bool isEndOfLine() => identical(_type, CommentType.END_OF_LINE); |
| 2317 void visitChildren(ASTVisitor<Object> visitor) { | 2701 void visitChildren(ASTVisitor<Object> visitor) { |
| 2318 _references.accept(visitor); | 2702 _references.accept(visitor); |
| 2319 } | 2703 } |
| 2320 } | 2704 } |
| 2705 |
| 2321 /** | 2706 /** |
| 2322 * The enumeration {@code CommentType} encodes all the different types of commen
ts that are | 2707 * The enumeration {@code CommentType} encodes all the different types of commen
ts that are |
| 2323 * recognized by the parser. | 2708 * recognized by the parser. |
| 2324 */ | 2709 */ |
| 2325 class CommentType implements Comparable<CommentType> { | 2710 class CommentType implements Comparable<CommentType> { |
| 2711 |
| 2326 /** | 2712 /** |
| 2327 * An end-of-line comment. | 2713 * An end-of-line comment. |
| 2328 */ | 2714 */ |
| 2329 static final CommentType END_OF_LINE = new CommentType('END_OF_LINE', 0); | 2715 static final CommentType END_OF_LINE = new CommentType('END_OF_LINE', 0); |
| 2716 |
| 2330 /** | 2717 /** |
| 2331 * A block comment. | 2718 * A block comment. |
| 2332 */ | 2719 */ |
| 2333 static final CommentType BLOCK = new CommentType('BLOCK', 1); | 2720 static final CommentType BLOCK = new CommentType('BLOCK', 1); |
| 2721 |
| 2334 /** | 2722 /** |
| 2335 * A documentation comment. | 2723 * A documentation comment. |
| 2336 */ | 2724 */ |
| 2337 static final CommentType DOCUMENTATION = new CommentType('DOCUMENTATION', 2); | 2725 static final CommentType DOCUMENTATION = new CommentType('DOCUMENTATION', 2); |
| 2338 static final List<CommentType> values = [END_OF_LINE, BLOCK, DOCUMENTATION]; | 2726 static final List<CommentType> values = [END_OF_LINE, BLOCK, DOCUMENTATION]; |
| 2339 final String __name; | 2727 |
| 2340 final int __ordinal; | 2728 /// The name of this enum constant, as declared in the enum declaration. |
| 2341 int get ordinal => __ordinal; | 2729 final String name; |
| 2342 CommentType(this.__name, this.__ordinal) { | 2730 |
| 2731 /// The position in the enum declaration. |
| 2732 final int ordinal; |
| 2733 CommentType(this.name, this.ordinal) { |
| 2343 } | 2734 } |
| 2344 int compareTo(CommentType other) => __ordinal - other.__ordinal; | 2735 int compareTo(CommentType other) => ordinal - other.ordinal; |
| 2345 String toString() => __name; | 2736 String toString() => name; |
| 2346 } | 2737 } |
| 2738 |
| 2347 /** | 2739 /** |
| 2348 * Instances of the class {@code CommentReference} represent a reference to a Da
rt element that is | 2740 * Instances of the class {@code CommentReference} represent a reference to a Da
rt element that is |
| 2349 * found within a documentation comment. | 2741 * found within a documentation comment. |
| 2350 * <pre> | 2742 * <pre> |
| 2351 * commentReference ::= | 2743 * commentReference ::= |
| 2352 * '\[' 'new'? {@link Identifier identifier} '\]' | 2744 * '\[' 'new'? {@link Identifier identifier} '\]' |
| 2353 * </pre> | 2745 * </pre> |
| 2354 * @coverage dart.engine.ast | 2746 * @coverage dart.engine.ast |
| 2355 */ | 2747 */ |
| 2356 class CommentReference extends ASTNode { | 2748 class CommentReference extends ASTNode { |
| 2749 |
| 2357 /** | 2750 /** |
| 2358 * The token representing the 'new' keyword, or {@code null} if there was no '
new' keyword. | 2751 * The token representing the 'new' keyword, or {@code null} if there was no '
new' keyword. |
| 2359 */ | 2752 */ |
| 2360 Token _newKeyword; | 2753 Token _newKeyword; |
| 2754 |
| 2361 /** | 2755 /** |
| 2362 * The identifier being referenced. | 2756 * The identifier being referenced. |
| 2363 */ | 2757 */ |
| 2364 Identifier _identifier; | 2758 Identifier _identifier; |
| 2759 |
| 2365 /** | 2760 /** |
| 2366 * Initialize a newly created reference to a Dart element. | 2761 * Initialize a newly created reference to a Dart element. |
| 2367 * @param newKeyword the token representing the 'new' keyword | 2762 * @param newKeyword the token representing the 'new' keyword |
| 2368 * @param identifier the identifier being referenced | 2763 * @param identifier the identifier being referenced |
| 2369 */ | 2764 */ |
| 2370 CommentReference.full(Token newKeyword, Identifier identifier) { | 2765 CommentReference.full(Token newKeyword, Identifier identifier) { |
| 2371 this._newKeyword = newKeyword; | 2766 this._newKeyword = newKeyword; |
| 2372 this._identifier = becomeParentOf(identifier); | 2767 this._identifier = becomeParentOf(identifier); |
| 2373 } | 2768 } |
| 2769 |
| 2374 /** | 2770 /** |
| 2375 * Initialize a newly created reference to a Dart element. | 2771 * Initialize a newly created reference to a Dart element. |
| 2376 * @param newKeyword the token representing the 'new' keyword | 2772 * @param newKeyword the token representing the 'new' keyword |
| 2377 * @param identifier the identifier being referenced | 2773 * @param identifier the identifier being referenced |
| 2378 */ | 2774 */ |
| 2379 CommentReference({Token newKeyword, Identifier identifier}) : this.full(newKey
word, identifier); | 2775 CommentReference({Token newKeyword, Identifier identifier}) : this.full(newKey
word, identifier); |
| 2380 accept(ASTVisitor visitor) => visitor.visitCommentReference(this); | 2776 accept(ASTVisitor visitor) => visitor.visitCommentReference(this); |
| 2381 Token get beginToken => _identifier.beginToken; | 2777 Token get beginToken => _identifier.beginToken; |
| 2382 Token get endToken => _identifier.endToken; | 2778 Token get endToken => _identifier.endToken; |
| 2779 |
| 2383 /** | 2780 /** |
| 2384 * Return the identifier being referenced. | 2781 * Return the identifier being referenced. |
| 2385 * @return the identifier being referenced | 2782 * @return the identifier being referenced |
| 2386 */ | 2783 */ |
| 2387 Identifier get identifier => _identifier; | 2784 Identifier get identifier => _identifier; |
| 2785 |
| 2388 /** | 2786 /** |
| 2389 * Return the token representing the 'new' keyword, or {@code null} if there w
as no 'new' keyword. | 2787 * Return the token representing the 'new' keyword, or {@code null} if there w
as no 'new' keyword. |
| 2390 * @return the token representing the 'new' keyword | 2788 * @return the token representing the 'new' keyword |
| 2391 */ | 2789 */ |
| 2392 Token get newKeyword => _newKeyword; | 2790 Token get newKeyword => _newKeyword; |
| 2791 |
| 2393 /** | 2792 /** |
| 2394 * Set the identifier being referenced to the given identifier. | 2793 * Set the identifier being referenced to the given identifier. |
| 2395 * @param identifier the identifier being referenced | 2794 * @param identifier the identifier being referenced |
| 2396 */ | 2795 */ |
| 2397 void set identifier(Identifier identifier2) { | 2796 void set identifier(Identifier identifier2) { |
| 2398 identifier2 = becomeParentOf(identifier2); | 2797 identifier2 = becomeParentOf(identifier2); |
| 2399 } | 2798 } |
| 2799 |
| 2400 /** | 2800 /** |
| 2401 * Set the token representing the 'new' keyword to the given token. | 2801 * Set the token representing the 'new' keyword to the given token. |
| 2402 * @param newKeyword the token representing the 'new' keyword | 2802 * @param newKeyword the token representing the 'new' keyword |
| 2403 */ | 2803 */ |
| 2404 void set newKeyword(Token newKeyword2) { | 2804 void set newKeyword(Token newKeyword2) { |
| 2405 this._newKeyword = newKeyword2; | 2805 this._newKeyword = newKeyword2; |
| 2406 } | 2806 } |
| 2407 void visitChildren(ASTVisitor<Object> visitor) { | 2807 void visitChildren(ASTVisitor<Object> visitor) { |
| 2408 safelyVisitChild(_identifier, visitor); | 2808 safelyVisitChild(_identifier, visitor); |
| 2409 } | 2809 } |
| 2410 } | 2810 } |
| 2811 |
| 2411 /** | 2812 /** |
| 2412 * Instances of the class {@code CompilationUnit} represent a compilation unit. | 2813 * Instances of the class {@code CompilationUnit} represent a compilation unit. |
| 2413 * <p> | 2814 * <p> |
| 2414 * While the grammar restricts the order of the directives and declarations with
in a compilation | 2815 * While the grammar restricts the order of the directives and declarations with
in a compilation |
| 2415 * unit, this class does not enforce those restrictions. In particular, the chil
dren of a | 2816 * unit, this class does not enforce those restrictions. In particular, the chil
dren of a |
| 2416 * compilation unit will be visited in lexical order even if lexical order does
not conform to the | 2817 * compilation unit will be visited in lexical order even if lexical order does
not conform to the |
| 2417 * restrictions of the grammar. | 2818 * restrictions of the grammar. |
| 2418 * <pre> | 2819 * <pre> |
| 2419 * compilationUnit ::= | 2820 * compilationUnit ::= |
| 2420 * directives declarations | 2821 * directives declarations |
| 2421 * directives ::={@link ScriptTag scriptTag}? {@link LibraryDirective libraryDir
ective}? namespaceDirective* {@link PartDirective partDirective}| {@link PartOfD
irective partOfDirective}namespaceDirective ::={@link ImportDirective importDire
ctive}| {@link ExportDirective exportDirective}declarations ::={@link Compilatio
nUnitMember compilationUnitMember}</pre> | 2822 * directives ::={@link ScriptTag scriptTag}? {@link LibraryDirective libraryDir
ective}? namespaceDirective* {@link PartDirective partDirective}| {@link PartOfD
irective partOfDirective}namespaceDirective ::={@link ImportDirective importDire
ctive}| {@link ExportDirective exportDirective}declarations ::={@link Compilatio
nUnitMember compilationUnitMember}</pre> |
| 2422 * @coverage dart.engine.ast | 2823 * @coverage dart.engine.ast |
| 2423 */ | 2824 */ |
| 2424 class CompilationUnit extends ASTNode { | 2825 class CompilationUnit extends ASTNode { |
| 2826 |
| 2425 /** | 2827 /** |
| 2426 * The first token in the token stream that was parsed to form this compilatio
n unit. | 2828 * The first token in the token stream that was parsed to form this compilatio
n unit. |
| 2427 */ | 2829 */ |
| 2428 Token _beginToken; | 2830 Token _beginToken; |
| 2831 |
| 2429 /** | 2832 /** |
| 2430 * The script tag at the beginning of the compilation unit, or {@code null} if
there is no script | 2833 * The script tag at the beginning of the compilation unit, or {@code null} if
there is no script |
| 2431 * tag in this compilation unit. | 2834 * tag in this compilation unit. |
| 2432 */ | 2835 */ |
| 2433 ScriptTag _scriptTag; | 2836 ScriptTag _scriptTag; |
| 2837 |
| 2434 /** | 2838 /** |
| 2435 * The directives contained in this compilation unit. | 2839 * The directives contained in this compilation unit. |
| 2436 */ | 2840 */ |
| 2437 NodeList<Directive> _directives; | 2841 NodeList<Directive> _directives; |
| 2842 |
| 2438 /** | 2843 /** |
| 2439 * The declarations contained in this compilation unit. | 2844 * The declarations contained in this compilation unit. |
| 2440 */ | 2845 */ |
| 2441 NodeList<CompilationUnitMember> _declarations; | 2846 NodeList<CompilationUnitMember> _declarations; |
| 2847 |
| 2442 /** | 2848 /** |
| 2443 * The last token in the token stream that was parsed to form this compilation
unit. This token | 2849 * The last token in the token stream that was parsed to form this compilation
unit. This token |
| 2444 * should always have a type of {@link TokenType.EOF}. | 2850 * should always have a type of {@link TokenType.EOF}. |
| 2445 */ | 2851 */ |
| 2446 Token _endToken; | 2852 Token _endToken; |
| 2853 |
| 2447 /** | 2854 /** |
| 2448 * The element associated with this compilation unit, or {@code null} if the A
ST structure has not | 2855 * The element associated with this compilation unit, or {@code null} if the A
ST structure has not |
| 2449 * been resolved. | 2856 * been resolved. |
| 2450 */ | 2857 */ |
| 2451 CompilationUnitElement _element; | 2858 CompilationUnitElement _element; |
| 2859 |
| 2452 /** | 2860 /** |
| 2453 * The {@link LineInfo} for this {@link CompilationUnit}. | 2861 * The {@link LineInfo} for this {@link CompilationUnit}. |
| 2454 */ | 2862 */ |
| 2455 LineInfo _lineInfo; | 2863 LineInfo _lineInfo; |
| 2864 |
| 2456 /** | 2865 /** |
| 2457 * The parsing errors encountered when the receiver was parsed. | 2866 * The parsing errors encountered when the receiver was parsed. |
| 2458 */ | 2867 */ |
| 2459 List<AnalysisError> _parsingErrors = AnalysisError.NO_ERRORS; | 2868 List<AnalysisError> _parsingErrors = AnalysisError.NO_ERRORS; |
| 2869 |
| 2460 /** | 2870 /** |
| 2461 * The resolution errors encountered when the receiver was resolved. | 2871 * The resolution errors encountered when the receiver was resolved. |
| 2462 */ | 2872 */ |
| 2463 List<AnalysisError> _resolutionErrors = AnalysisError.NO_ERRORS; | 2873 List<AnalysisError> _resolutionErrors = AnalysisError.NO_ERRORS; |
| 2874 |
| 2464 /** | 2875 /** |
| 2465 * Initialize a newly created compilation unit to have the given directives an
d declarations. | 2876 * Initialize a newly created compilation unit to have the given directives an
d declarations. |
| 2466 * @param beginToken the first token in the token stream | 2877 * @param beginToken the first token in the token stream |
| 2467 * @param scriptTag the script tag at the beginning of the compilation unit | 2878 * @param scriptTag the script tag at the beginning of the compilation unit |
| 2468 * @param directives the directives contained in this compilation unit | 2879 * @param directives the directives contained in this compilation unit |
| 2469 * @param declarations the declarations contained in this compilation unit | 2880 * @param declarations the declarations contained in this compilation unit |
| 2470 * @param endToken the last token in the token stream | 2881 * @param endToken the last token in the token stream |
| 2471 */ | 2882 */ |
| 2472 CompilationUnit.full(Token beginToken, ScriptTag scriptTag, List<Directive> di
rectives, List<CompilationUnitMember> declarations, Token endToken) { | 2883 CompilationUnit.full(Token beginToken, ScriptTag scriptTag, List<Directive> di
rectives, List<CompilationUnitMember> declarations, Token endToken) { |
| 2473 this._directives = new NodeList<Directive>(this); | 2884 this._directives = new NodeList<Directive>(this); |
| 2474 this._declarations = new NodeList<CompilationUnitMember>(this); | 2885 this._declarations = new NodeList<CompilationUnitMember>(this); |
| 2475 this._beginToken = beginToken; | 2886 this._beginToken = beginToken; |
| 2476 this._scriptTag = becomeParentOf(scriptTag); | 2887 this._scriptTag = becomeParentOf(scriptTag); |
| 2477 this._directives.addAll(directives); | 2888 this._directives.addAll(directives); |
| 2478 this._declarations.addAll(declarations); | 2889 this._declarations.addAll(declarations); |
| 2479 this._endToken = endToken; | 2890 this._endToken = endToken; |
| 2480 } | 2891 } |
| 2892 |
| 2481 /** | 2893 /** |
| 2482 * Initialize a newly created compilation unit to have the given directives an
d declarations. | 2894 * Initialize a newly created compilation unit to have the given directives an
d declarations. |
| 2483 * @param beginToken the first token in the token stream | 2895 * @param beginToken the first token in the token stream |
| 2484 * @param scriptTag the script tag at the beginning of the compilation unit | 2896 * @param scriptTag the script tag at the beginning of the compilation unit |
| 2485 * @param directives the directives contained in this compilation unit | 2897 * @param directives the directives contained in this compilation unit |
| 2486 * @param declarations the declarations contained in this compilation unit | 2898 * @param declarations the declarations contained in this compilation unit |
| 2487 * @param endToken the last token in the token stream | 2899 * @param endToken the last token in the token stream |
| 2488 */ | 2900 */ |
| 2489 CompilationUnit({Token beginToken, ScriptTag scriptTag, List<Directive> direct
ives, List<CompilationUnitMember> declarations, Token endToken}) : this.full(beg
inToken, scriptTag, directives, declarations, endToken); | 2901 CompilationUnit({Token beginToken, ScriptTag scriptTag, List<Directive> direct
ives, List<CompilationUnitMember> declarations, Token endToken}) : this.full(beg
inToken, scriptTag, directives, declarations, endToken); |
| 2490 accept(ASTVisitor visitor) => visitor.visitCompilationUnit(this); | 2902 accept(ASTVisitor visitor) => visitor.visitCompilationUnit(this); |
| 2491 Token get beginToken => _beginToken; | 2903 Token get beginToken => _beginToken; |
| 2904 |
| 2492 /** | 2905 /** |
| 2493 * Return the declarations contained in this compilation unit. | 2906 * Return the declarations contained in this compilation unit. |
| 2494 * @return the declarations contained in this compilation unit | 2907 * @return the declarations contained in this compilation unit |
| 2495 */ | 2908 */ |
| 2496 NodeList<CompilationUnitMember> get declarations => _declarations; | 2909 NodeList<CompilationUnitMember> get declarations => _declarations; |
| 2910 |
| 2497 /** | 2911 /** |
| 2498 * Return the directives contained in this compilation unit. | 2912 * Return the directives contained in this compilation unit. |
| 2499 * @return the directives contained in this compilation unit | 2913 * @return the directives contained in this compilation unit |
| 2500 */ | 2914 */ |
| 2501 NodeList<Directive> get directives => _directives; | 2915 NodeList<Directive> get directives => _directives; |
| 2916 |
| 2502 /** | 2917 /** |
| 2503 * Return the element associated with this compilation unit, or {@code null} i
f the AST structure | 2918 * Return the element associated with this compilation unit, or {@code null} i
f the AST structure |
| 2504 * has not been resolved. | 2919 * has not been resolved. |
| 2505 * @return the element associated with this compilation unit | 2920 * @return the element associated with this compilation unit |
| 2506 */ | 2921 */ |
| 2507 CompilationUnitElement get element => _element; | 2922 CompilationUnitElement get element => _element; |
| 2508 Token get endToken => _endToken; | 2923 Token get endToken => _endToken; |
| 2924 |
| 2509 /** | 2925 /** |
| 2510 * Return an array containing all of the errors associated with the receiver.
If the receiver has | 2926 * Return an array containing all of the errors associated with the receiver.
If the receiver has |
| 2511 * not been resolved, then return {@code null}. | 2927 * not been resolved, then return {@code null}. |
| 2512 * @return an array of errors (contains no {@code null}s) or {@code null} if t
he receiver has not | 2928 * @return an array of errors (contains no {@code null}s) or {@code null} if t
he receiver has not |
| 2513 * been resolved | 2929 * been resolved |
| 2514 */ | 2930 */ |
| 2515 List<AnalysisError> get errors { | 2931 List<AnalysisError> get errors { |
| 2516 List<AnalysisError> parserErrors = parsingErrors; | 2932 List<AnalysisError> parserErrors = parsingErrors; |
| 2517 List<AnalysisError> resolverErrors = resolutionErrors; | 2933 List<AnalysisError> resolverErrors = resolutionErrors; |
| 2518 if (resolverErrors.length == 0) { | 2934 if (resolverErrors.length == 0) { |
| 2519 return parserErrors; | 2935 return parserErrors; |
| 2520 } else if (parserErrors.length == 0) { | 2936 } else if (parserErrors.length == 0) { |
| 2521 return resolverErrors; | 2937 return resolverErrors; |
| 2522 } else { | 2938 } else { |
| 2523 List<AnalysisError> allErrors = new List<AnalysisError>(parserErrors.lengt
h + resolverErrors.length); | 2939 List<AnalysisError> allErrors = new List<AnalysisError>(parserErrors.lengt
h + resolverErrors.length); |
| 2524 JavaSystem.arraycopy(parserErrors, 0, allErrors, 0, parserErrors.length); | 2940 JavaSystem.arraycopy(parserErrors, 0, allErrors, 0, parserErrors.length); |
| 2525 JavaSystem.arraycopy(resolverErrors, 0, allErrors, parserErrors.length, re
solverErrors.length); | 2941 JavaSystem.arraycopy(resolverErrors, 0, allErrors, parserErrors.length, re
solverErrors.length); |
| 2526 return allErrors; | 2942 return allErrors; |
| 2527 } | 2943 } |
| 2528 } | 2944 } |
| 2529 int get length { | 2945 int get length { |
| 2530 Token endToken2 = endToken; | 2946 Token endToken2 = endToken; |
| 2531 if (endToken2 == null) { | 2947 if (endToken2 == null) { |
| 2532 return 0; | 2948 return 0; |
| 2533 } | 2949 } |
| 2534 return endToken2.offset + endToken2.length; | 2950 return endToken2.offset + endToken2.length; |
| 2535 } | 2951 } |
| 2952 |
| 2536 /** | 2953 /** |
| 2537 * Get the {@link LineInfo} object for this compilation unit. | 2954 * Get the {@link LineInfo} object for this compilation unit. |
| 2538 * @return the associated {@link LineInfo} | 2955 * @return the associated {@link LineInfo} |
| 2539 */ | 2956 */ |
| 2540 LineInfo get lineInfo => _lineInfo; | 2957 LineInfo get lineInfo => _lineInfo; |
| 2541 int get offset => 0; | 2958 int get offset => 0; |
| 2959 |
| 2542 /** | 2960 /** |
| 2543 * Return an array containing all of the parsing errors associated with the re
ceiver. | 2961 * Return an array containing all of the parsing errors associated with the re
ceiver. |
| 2544 * @return an array of errors (not {@code null}, contains no {@code null}s). | 2962 * @return an array of errors (not {@code null}, contains no {@code null}s). |
| 2545 */ | 2963 */ |
| 2546 List<AnalysisError> get parsingErrors => _parsingErrors; | 2964 List<AnalysisError> get parsingErrors => _parsingErrors; |
| 2965 |
| 2547 /** | 2966 /** |
| 2548 * Return an array containing all of the resolution errors associated with the
receiver. If the | 2967 * Return an array containing all of the resolution errors associated with the
receiver. If the |
| 2549 * receiver has not been resolved, then return {@code null}. | 2968 * receiver has not been resolved, then return {@code null}. |
| 2550 * @return an array of errors (contains no {@code null}s) or {@code null} if t
he receiver has not | 2969 * @return an array of errors (contains no {@code null}s) or {@code null} if t
he receiver has not |
| 2551 * been resolved | 2970 * been resolved |
| 2552 */ | 2971 */ |
| 2553 List<AnalysisError> get resolutionErrors => _resolutionErrors; | 2972 List<AnalysisError> get resolutionErrors => _resolutionErrors; |
| 2973 |
| 2554 /** | 2974 /** |
| 2555 * Return the script tag at the beginning of the compilation unit, or {@code n
ull} if there is no | 2975 * Return the script tag at the beginning of the compilation unit, or {@code n
ull} if there is no |
| 2556 * script tag in this compilation unit. | 2976 * script tag in this compilation unit. |
| 2557 * @return the script tag at the beginning of the compilation unit | 2977 * @return the script tag at the beginning of the compilation unit |
| 2558 */ | 2978 */ |
| 2559 ScriptTag get scriptTag => _scriptTag; | 2979 ScriptTag get scriptTag => _scriptTag; |
| 2980 |
| 2560 /** | 2981 /** |
| 2561 * Set the element associated with this compilation unit to the given element. | 2982 * Set the element associated with this compilation unit to the given element. |
| 2562 * @param element the element associated with this compilation unit | 2983 * @param element the element associated with this compilation unit |
| 2563 */ | 2984 */ |
| 2564 void set element(CompilationUnitElement element2) { | 2985 void set element(CompilationUnitElement element2) { |
| 2565 this._element = element2; | 2986 this._element = element2; |
| 2566 } | 2987 } |
| 2988 |
| 2567 /** | 2989 /** |
| 2568 * Set the {@link LineInfo} object for this compilation unit. | 2990 * Set the {@link LineInfo} object for this compilation unit. |
| 2569 * @param errors LineInfo to associate with this compilation unit | 2991 * @param errors LineInfo to associate with this compilation unit |
| 2570 */ | 2992 */ |
| 2571 void set lineInfo(LineInfo lineInfo2) { | 2993 void set lineInfo(LineInfo lineInfo2) { |
| 2572 this._lineInfo = lineInfo2; | 2994 this._lineInfo = lineInfo2; |
| 2573 } | 2995 } |
| 2996 |
| 2574 /** | 2997 /** |
| 2575 * Called to cache the parsing errors when the unit is parsed. | 2998 * Called to cache the parsing errors when the unit is parsed. |
| 2576 * @param errors an array of parsing errors, if {@code null} is passed, the er
ror array is set to | 2999 * @param errors an array of parsing errors, if {@code null} is passed, the er
ror array is set to |
| 2577 * an empty array, {@link AnalysisError#NO_ERRORS} | 3000 * an empty array, {@link AnalysisError#NO_ERRORS} |
| 2578 */ | 3001 */ |
| 2579 void set parsingErrors(List<AnalysisError> errors) { | 3002 void set parsingErrors(List<AnalysisError> errors) { |
| 2580 _parsingErrors = errors == null ? AnalysisError.NO_ERRORS : errors; | 3003 _parsingErrors = errors == null ? AnalysisError.NO_ERRORS : errors; |
| 2581 } | 3004 } |
| 3005 |
| 2582 /** | 3006 /** |
| 2583 * Called to cache the resolution errors when the unit is resolved. | 3007 * Called to cache the resolution errors when the unit is resolved. |
| 2584 * @param errors an array of resolution errors, if {@code null} is passed, the
error array is set | 3008 * @param errors an array of resolution errors, if {@code null} is passed, the
error array is set |
| 2585 * to an empty array, {@link AnalysisError#NO_ERRORS} | 3009 * to an empty array, {@link AnalysisError#NO_ERRORS} |
| 2586 */ | 3010 */ |
| 2587 void set resolutionErrors(List<AnalysisError> errors) { | 3011 void set resolutionErrors(List<AnalysisError> errors) { |
| 2588 _resolutionErrors = errors == null ? AnalysisError.NO_ERRORS : errors; | 3012 _resolutionErrors = errors == null ? AnalysisError.NO_ERRORS : errors; |
| 2589 } | 3013 } |
| 3014 |
| 2590 /** | 3015 /** |
| 2591 * Set the script tag at the beginning of the compilation unit to the given sc
ript tag. | 3016 * Set the script tag at the beginning of the compilation unit to the given sc
ript tag. |
| 2592 * @param scriptTag the script tag at the beginning of the compilation unit | 3017 * @param scriptTag the script tag at the beginning of the compilation unit |
| 2593 */ | 3018 */ |
| 2594 void set scriptTag(ScriptTag scriptTag2) { | 3019 void set scriptTag(ScriptTag scriptTag2) { |
| 2595 this._scriptTag = becomeParentOf(scriptTag2); | 3020 this._scriptTag = becomeParentOf(scriptTag2); |
| 2596 } | 3021 } |
| 2597 void visitChildren(ASTVisitor<Object> visitor) { | 3022 void visitChildren(ASTVisitor<Object> visitor) { |
| 2598 safelyVisitChild(_scriptTag, visitor); | 3023 safelyVisitChild(_scriptTag, visitor); |
| 2599 if (directivesAreBeforeDeclarations()) { | 3024 if (directivesAreBeforeDeclarations()) { |
| 2600 _directives.accept(visitor); | 3025 _directives.accept(visitor); |
| 2601 _declarations.accept(visitor); | 3026 _declarations.accept(visitor); |
| 2602 } else { | 3027 } else { |
| 2603 for (ASTNode child in sortedDirectivesAndDeclarations) { | 3028 for (ASTNode child in sortedDirectivesAndDeclarations) { |
| 2604 child.accept(visitor); | 3029 child.accept(visitor); |
| 2605 } | 3030 } |
| 2606 } | 3031 } |
| 2607 } | 3032 } |
| 3033 |
| 2608 /** | 3034 /** |
| 2609 * Return {@code true} if all of the directives are lexically before any decla
rations. | 3035 * Return {@code true} if all of the directives are lexically before any decla
rations. |
| 2610 * @return {@code true} if all of the directives are lexically before any decl
arations | 3036 * @return {@code true} if all of the directives are lexically before any decl
arations |
| 2611 */ | 3037 */ |
| 2612 bool directivesAreBeforeDeclarations() { | 3038 bool directivesAreBeforeDeclarations() { |
| 2613 if (_directives.isEmpty || _declarations.isEmpty) { | 3039 if (_directives.isEmpty || _declarations.isEmpty) { |
| 2614 return true; | 3040 return true; |
| 2615 } | 3041 } |
| 2616 Directive lastDirective = _directives[_directives.length - 1]; | 3042 Directive lastDirective = _directives[_directives.length - 1]; |
| 2617 CompilationUnitMember firstDeclaration = _declarations[0]; | 3043 CompilationUnitMember firstDeclaration = _declarations[0]; |
| 2618 return lastDirective.offset < firstDeclaration.offset; | 3044 return lastDirective.offset < firstDeclaration.offset; |
| 2619 } | 3045 } |
| 3046 |
| 2620 /** | 3047 /** |
| 2621 * Return an array containing all of the directives and declarations in this c
ompilation unit, | 3048 * Return an array containing all of the directives and declarations in this c
ompilation unit, |
| 2622 * sorted in lexical order. | 3049 * sorted in lexical order. |
| 2623 * @return the directives and declarations in this compilation unit in the ord
er in which they | 3050 * @return the directives and declarations in this compilation unit in the ord
er in which they |
| 2624 * appeared in the original source | 3051 * appeared in the original source |
| 2625 */ | 3052 */ |
| 2626 List<ASTNode> get sortedDirectivesAndDeclarations { | 3053 List<ASTNode> get sortedDirectivesAndDeclarations { |
| 2627 List<ASTNode> childList = new List<ASTNode>(); | 3054 List<ASTNode> childList = new List<ASTNode>(); |
| 2628 childList.addAll(_directives); | 3055 childList.addAll(_directives); |
| 2629 childList.addAll(_declarations); | 3056 childList.addAll(_declarations); |
| 2630 List<ASTNode> children = new List.from(childList); | 3057 List<ASTNode> children = new List.from(childList); |
| 2631 children.sort(); | 3058 children.sort(); |
| 2632 return children; | 3059 return children; |
| 2633 } | 3060 } |
| 2634 } | 3061 } |
| 3062 |
| 2635 /** | 3063 /** |
| 2636 * Instances of the class {@code CompilationUnitMember} defines the behavior com
mon to nodes that | 3064 * Instances of the class {@code CompilationUnitMember} defines the behavior com
mon to nodes that |
| 2637 * declare a name within the scope of a compilation unit. | 3065 * declare a name within the scope of a compilation unit. |
| 2638 * <pre> | 3066 * <pre> |
| 2639 * compilationUnitMember ::={@link ClassDeclaration classDeclaration}| {@link Ty
peAlias typeAlias}| {@link FunctionDeclaration functionDeclaration}| {@link Meth
odDeclaration getOrSetDeclaration}| {@link VariableDeclaration constantsDeclarat
ion}| {@link VariableDeclaration variablesDeclaration}</pre> | 3067 * compilationUnitMember ::={@link ClassDeclaration classDeclaration}| {@link Ty
peAlias typeAlias}| {@link FunctionDeclaration functionDeclaration}| {@link Meth
odDeclaration getOrSetDeclaration}| {@link VariableDeclaration constantsDeclarat
ion}| {@link VariableDeclaration variablesDeclaration}</pre> |
| 2640 * @coverage dart.engine.ast | 3068 * @coverage dart.engine.ast |
| 2641 */ | 3069 */ |
| 2642 abstract class CompilationUnitMember extends Declaration { | 3070 abstract class CompilationUnitMember extends Declaration { |
| 3071 |
| 2643 /** | 3072 /** |
| 2644 * Initialize a newly created generic compilation unit member. | 3073 * Initialize a newly created generic compilation unit member. |
| 2645 * @param comment the documentation comment associated with this member | 3074 * @param comment the documentation comment associated with this member |
| 2646 * @param metadata the annotations associated with this member | 3075 * @param metadata the annotations associated with this member |
| 2647 */ | 3076 */ |
| 2648 CompilationUnitMember.full(Comment comment, List<Annotation> metadata) : super
.full(comment, metadata) { | 3077 CompilationUnitMember.full(Comment comment, List<Annotation> metadata) : super
.full(comment, metadata) { |
| 2649 } | 3078 } |
| 3079 |
| 2650 /** | 3080 /** |
| 2651 * Initialize a newly created generic compilation unit member. | 3081 * Initialize a newly created generic compilation unit member. |
| 2652 * @param comment the documentation comment associated with this member | 3082 * @param comment the documentation comment associated with this member |
| 2653 * @param metadata the annotations associated with this member | 3083 * @param metadata the annotations associated with this member |
| 2654 */ | 3084 */ |
| 2655 CompilationUnitMember({Comment comment, List<Annotation> metadata}) : this.ful
l(comment, metadata); | 3085 CompilationUnitMember({Comment comment, List<Annotation> metadata}) : this.ful
l(comment, metadata); |
| 2656 } | 3086 } |
| 3087 |
| 2657 /** | 3088 /** |
| 2658 * Instances of the class {@code ConditionalExpression} represent a conditional
expression. | 3089 * Instances of the class {@code ConditionalExpression} represent a conditional
expression. |
| 2659 * <pre> | 3090 * <pre> |
| 2660 * conditionalExpression ::={@link Expression condition} '?' {@link Expression t
henExpression} ':' {@link Expression elseExpression}</pre> | 3091 * conditionalExpression ::={@link Expression condition} '?' {@link Expression t
henExpression} ':' {@link Expression elseExpression}</pre> |
| 2661 * @coverage dart.engine.ast | 3092 * @coverage dart.engine.ast |
| 2662 */ | 3093 */ |
| 2663 class ConditionalExpression extends Expression { | 3094 class ConditionalExpression extends Expression { |
| 3095 |
| 2664 /** | 3096 /** |
| 2665 * The condition used to determine which of the expressions is executed next. | 3097 * The condition used to determine which of the expressions is executed next. |
| 2666 */ | 3098 */ |
| 2667 Expression _condition; | 3099 Expression _condition; |
| 3100 |
| 2668 /** | 3101 /** |
| 2669 * The token used to separate the condition from the then expression. | 3102 * The token used to separate the condition from the then expression. |
| 2670 */ | 3103 */ |
| 2671 Token _question; | 3104 Token _question; |
| 3105 |
| 2672 /** | 3106 /** |
| 2673 * The expression that is executed if the condition evaluates to {@code true}. | 3107 * The expression that is executed if the condition evaluates to {@code true}. |
| 2674 */ | 3108 */ |
| 2675 Expression _thenExpression; | 3109 Expression _thenExpression; |
| 3110 |
| 2676 /** | 3111 /** |
| 2677 * The token used to separate the then expression from the else expression. | 3112 * The token used to separate the then expression from the else expression. |
| 2678 */ | 3113 */ |
| 2679 Token _colon; | 3114 Token _colon; |
| 3115 |
| 2680 /** | 3116 /** |
| 2681 * The expression that is executed if the condition evaluates to {@code false}
. | 3117 * The expression that is executed if the condition evaluates to {@code false}
. |
| 2682 */ | 3118 */ |
| 2683 Expression _elseExpression; | 3119 Expression _elseExpression; |
| 3120 |
| 2684 /** | 3121 /** |
| 2685 * Initialize a newly created conditional expression. | 3122 * Initialize a newly created conditional expression. |
| 2686 * @param condition the condition used to determine which expression is execut
ed next | 3123 * @param condition the condition used to determine which expression is execut
ed next |
| 2687 * @param question the token used to separate the condition from the then expr
ession | 3124 * @param question the token used to separate the condition from the then expr
ession |
| 2688 * @param thenExpression the expression that is executed if the condition eval
uates to{@code true} | 3125 * @param thenExpression the expression that is executed if the condition eval
uates to{@code true} |
| 2689 * @param colon the token used to separate the then expression from the else e
xpression | 3126 * @param colon the token used to separate the then expression from the else e
xpression |
| 2690 * @param elseExpression the expression that is executed if the condition eval
uates to{@code false} | 3127 * @param elseExpression the expression that is executed if the condition eval
uates to{@code false} |
| 2691 */ | 3128 */ |
| 2692 ConditionalExpression.full(Expression condition, Token question, Expression th
enExpression, Token colon, Expression elseExpression) { | 3129 ConditionalExpression.full(Expression condition, Token question, Expression th
enExpression, Token colon, Expression elseExpression) { |
| 2693 this._condition = becomeParentOf(condition); | 3130 this._condition = becomeParentOf(condition); |
| 2694 this._question = question; | 3131 this._question = question; |
| 2695 this._thenExpression = becomeParentOf(thenExpression); | 3132 this._thenExpression = becomeParentOf(thenExpression); |
| 2696 this._colon = colon; | 3133 this._colon = colon; |
| 2697 this._elseExpression = becomeParentOf(elseExpression); | 3134 this._elseExpression = becomeParentOf(elseExpression); |
| 2698 } | 3135 } |
| 3136 |
| 2699 /** | 3137 /** |
| 2700 * Initialize a newly created conditional expression. | 3138 * Initialize a newly created conditional expression. |
| 2701 * @param condition the condition used to determine which expression is execut
ed next | 3139 * @param condition the condition used to determine which expression is execut
ed next |
| 2702 * @param question the token used to separate the condition from the then expr
ession | 3140 * @param question the token used to separate the condition from the then expr
ession |
| 2703 * @param thenExpression the expression that is executed if the condition eval
uates to{@code true} | 3141 * @param thenExpression the expression that is executed if the condition eval
uates to{@code true} |
| 2704 * @param colon the token used to separate the then expression from the else e
xpression | 3142 * @param colon the token used to separate the then expression from the else e
xpression |
| 2705 * @param elseExpression the expression that is executed if the condition eval
uates to{@code false} | 3143 * @param elseExpression the expression that is executed if the condition eval
uates to{@code false} |
| 2706 */ | 3144 */ |
| 2707 ConditionalExpression({Expression condition, Token question, Expression thenEx
pression, Token colon, Expression elseExpression}) : this.full(condition, questi
on, thenExpression, colon, elseExpression); | 3145 ConditionalExpression({Expression condition, Token question, Expression thenEx
pression, Token colon, Expression elseExpression}) : this.full(condition, questi
on, thenExpression, colon, elseExpression); |
| 2708 accept(ASTVisitor visitor) => visitor.visitConditionalExpression(this); | 3146 accept(ASTVisitor visitor) => visitor.visitConditionalExpression(this); |
| 2709 Token get beginToken => _condition.beginToken; | 3147 Token get beginToken => _condition.beginToken; |
| 3148 |
| 2710 /** | 3149 /** |
| 2711 * Return the token used to separate the then expression from the else express
ion. | 3150 * Return the token used to separate the then expression from the else express
ion. |
| 2712 * @return the token used to separate the then expression from the else expres
sion | 3151 * @return the token used to separate the then expression from the else expres
sion |
| 2713 */ | 3152 */ |
| 2714 Token get colon => _colon; | 3153 Token get colon => _colon; |
| 3154 |
| 2715 /** | 3155 /** |
| 2716 * Return the condition used to determine which of the expressions is executed
next. | 3156 * Return the condition used to determine which of the expressions is executed
next. |
| 2717 * @return the condition used to determine which expression is executed next | 3157 * @return the condition used to determine which expression is executed next |
| 2718 */ | 3158 */ |
| 2719 Expression get condition => _condition; | 3159 Expression get condition => _condition; |
| 3160 |
| 2720 /** | 3161 /** |
| 2721 * Return the expression that is executed if the condition evaluates to {@code
false}. | 3162 * Return the expression that is executed if the condition evaluates to {@code
false}. |
| 2722 * @return the expression that is executed if the condition evaluates to {@cod
e false} | 3163 * @return the expression that is executed if the condition evaluates to {@cod
e false} |
| 2723 */ | 3164 */ |
| 2724 Expression get elseExpression => _elseExpression; | 3165 Expression get elseExpression => _elseExpression; |
| 2725 Token get endToken => _elseExpression.endToken; | 3166 Token get endToken => _elseExpression.endToken; |
| 3167 |
| 2726 /** | 3168 /** |
| 2727 * Return the token used to separate the condition from the then expression. | 3169 * Return the token used to separate the condition from the then expression. |
| 2728 * @return the token used to separate the condition from the then expression | 3170 * @return the token used to separate the condition from the then expression |
| 2729 */ | 3171 */ |
| 2730 Token get question => _question; | 3172 Token get question => _question; |
| 3173 |
| 2731 /** | 3174 /** |
| 2732 * Return the expression that is executed if the condition evaluates to {@code
true}. | 3175 * Return the expression that is executed if the condition evaluates to {@code
true}. |
| 2733 * @return the expression that is executed if the condition evaluates to {@cod
e true} | 3176 * @return the expression that is executed if the condition evaluates to {@cod
e true} |
| 2734 */ | 3177 */ |
| 2735 Expression get thenExpression => _thenExpression; | 3178 Expression get thenExpression => _thenExpression; |
| 3179 |
| 2736 /** | 3180 /** |
| 2737 * Set the token used to separate the then expression from the else expression
to the given token. | 3181 * Set the token used to separate the then expression from the else expression
to the given token. |
| 2738 * @param colon the token used to separate the then expression from the else e
xpression | 3182 * @param colon the token used to separate the then expression from the else e
xpression |
| 2739 */ | 3183 */ |
| 2740 void set colon(Token colon2) { | 3184 void set colon(Token colon2) { |
| 2741 this._colon = colon2; | 3185 this._colon = colon2; |
| 2742 } | 3186 } |
| 3187 |
| 2743 /** | 3188 /** |
| 2744 * Set the condition used to determine which of the expressions is executed ne
xt to the given | 3189 * Set the condition used to determine which of the expressions is executed ne
xt to the given |
| 2745 * expression. | 3190 * expression. |
| 2746 * @param expression the condition used to determine which expression is execu
ted next | 3191 * @param expression the condition used to determine which expression is execu
ted next |
| 2747 */ | 3192 */ |
| 2748 void set condition(Expression expression) { | 3193 void set condition(Expression expression) { |
| 2749 _condition = becomeParentOf(expression); | 3194 _condition = becomeParentOf(expression); |
| 2750 } | 3195 } |
| 3196 |
| 2751 /** | 3197 /** |
| 2752 * Set the expression that is executed if the condition evaluates to {@code fa
lse} to the given | 3198 * Set the expression that is executed if the condition evaluates to {@code fa
lse} to the given |
| 2753 * expression. | 3199 * expression. |
| 2754 * @param expression the expression that is executed if the condition evaluate
s to {@code false} | 3200 * @param expression the expression that is executed if the condition evaluate
s to {@code false} |
| 2755 */ | 3201 */ |
| 2756 void set elseExpression(Expression expression) { | 3202 void set elseExpression(Expression expression) { |
| 2757 _elseExpression = becomeParentOf(expression); | 3203 _elseExpression = becomeParentOf(expression); |
| 2758 } | 3204 } |
| 3205 |
| 2759 /** | 3206 /** |
| 2760 * Set the token used to separate the condition from the then expression to th
e given token. | 3207 * Set the token used to separate the condition from the then expression to th
e given token. |
| 2761 * @param question the token used to separate the condition from the then expr
ession | 3208 * @param question the token used to separate the condition from the then expr
ession |
| 2762 */ | 3209 */ |
| 2763 void set question(Token question2) { | 3210 void set question(Token question2) { |
| 2764 this._question = question2; | 3211 this._question = question2; |
| 2765 } | 3212 } |
| 3213 |
| 2766 /** | 3214 /** |
| 2767 * Set the expression that is executed if the condition evaluates to {@code tr
ue} to the given | 3215 * Set the expression that is executed if the condition evaluates to {@code tr
ue} to the given |
| 2768 * expression. | 3216 * expression. |
| 2769 * @param expression the expression that is executed if the condition evaluate
s to {@code true} | 3217 * @param expression the expression that is executed if the condition evaluate
s to {@code true} |
| 2770 */ | 3218 */ |
| 2771 void set thenExpression(Expression expression) { | 3219 void set thenExpression(Expression expression) { |
| 2772 _thenExpression = becomeParentOf(expression); | 3220 _thenExpression = becomeParentOf(expression); |
| 2773 } | 3221 } |
| 2774 void visitChildren(ASTVisitor<Object> visitor) { | 3222 void visitChildren(ASTVisitor<Object> visitor) { |
| 2775 safelyVisitChild(_condition, visitor); | 3223 safelyVisitChild(_condition, visitor); |
| 2776 safelyVisitChild(_thenExpression, visitor); | 3224 safelyVisitChild(_thenExpression, visitor); |
| 2777 safelyVisitChild(_elseExpression, visitor); | 3225 safelyVisitChild(_elseExpression, visitor); |
| 2778 } | 3226 } |
| 2779 } | 3227 } |
| 3228 |
| 2780 /** | 3229 /** |
| 2781 * Instances of the class {@code ConstructorDeclaration} represent a constructor
declaration. | 3230 * Instances of the class {@code ConstructorDeclaration} represent a constructor
declaration. |
| 2782 * <pre> | 3231 * <pre> |
| 2783 * constructorDeclaration ::= | 3232 * constructorDeclaration ::= |
| 2784 * constructorSignature {@link FunctionBody body}? | 3233 * constructorSignature {@link FunctionBody body}? |
| 2785 * | constructorName formalParameterList ':' 'this' ('.' {@link SimpleIdentifier
name})? arguments | 3234 * | constructorName formalParameterList ':' 'this' ('.' {@link SimpleIdentifier
name})? arguments |
| 2786 * constructorSignature ::= | 3235 * constructorSignature ::= |
| 2787 * 'external'? constructorName formalParameterList initializerList? | 3236 * 'external'? constructorName formalParameterList initializerList? |
| 2788 * | 'external'? 'factory' factoryName formalParameterList initializerList? | 3237 * | 'external'? 'factory' factoryName formalParameterList initializerList? |
| 2789 * | 'external'? 'const' constructorName formalParameterList initializerList? | 3238 * | 'external'? 'const' constructorName formalParameterList initializerList? |
| 2790 * constructorName ::={@link SimpleIdentifier returnType} ('.' {@link SimpleIden
tifier name})? | 3239 * constructorName ::={@link SimpleIdentifier returnType} ('.' {@link SimpleIden
tifier name})? |
| 2791 * factoryName ::={@link Identifier returnType} ('.' {@link SimpleIdentifier nam
e})? | 3240 * factoryName ::={@link Identifier returnType} ('.' {@link SimpleIdentifier nam
e})? |
| 2792 * initializerList ::= | 3241 * initializerList ::= |
| 2793 * ':' {@link ConstructorInitializer initializer} (',' {@link ConstructorInitial
izer initializer}) | 3242 * ':' {@link ConstructorInitializer initializer} (',' {@link ConstructorInitial
izer initializer}) |
| 2794 * </pre> | 3243 * </pre> |
| 2795 * @coverage dart.engine.ast | 3244 * @coverage dart.engine.ast |
| 2796 */ | 3245 */ |
| 2797 class ConstructorDeclaration extends ClassMember { | 3246 class ConstructorDeclaration extends ClassMember { |
| 3247 |
| 2798 /** | 3248 /** |
| 2799 * The token for the 'external' keyword, or {@code null} if the constructor is
not external. | 3249 * The token for the 'external' keyword, or {@code null} if the constructor is
not external. |
| 2800 */ | 3250 */ |
| 2801 Token _externalKeyword; | 3251 Token _externalKeyword; |
| 3252 |
| 2802 /** | 3253 /** |
| 2803 * The token for the 'const' keyword, or {@code null} if the constructor is no
t a const | 3254 * The token for the 'const' keyword, or {@code null} if the constructor is no
t a const |
| 2804 * constructor. | 3255 * constructor. |
| 2805 */ | 3256 */ |
| 2806 Token _constKeyword; | 3257 Token _constKeyword; |
| 3258 |
| 2807 /** | 3259 /** |
| 2808 * The token for the 'factory' keyword, or {@code null} if the constructor is
not a factory | 3260 * The token for the 'factory' keyword, or {@code null} if the constructor is
not a factory |
| 2809 * constructor. | 3261 * constructor. |
| 2810 */ | 3262 */ |
| 2811 Token _factoryKeyword; | 3263 Token _factoryKeyword; |
| 3264 |
| 2812 /** | 3265 /** |
| 2813 * The type of object being created. This can be different than the type in wh
ich the constructor | 3266 * The type of object being created. This can be different than the type in wh
ich the constructor |
| 2814 * is being declared if the constructor is the implementation of a factory con
structor. | 3267 * is being declared if the constructor is the implementation of a factory con
structor. |
| 2815 */ | 3268 */ |
| 2816 Identifier _returnType; | 3269 Identifier _returnType; |
| 3270 |
| 2817 /** | 3271 /** |
| 2818 * The token for the period before the constructor name, or {@code null} if th
e constructor being | 3272 * The token for the period before the constructor name, or {@code null} if th
e constructor being |
| 2819 * declared is unnamed. | 3273 * declared is unnamed. |
| 2820 */ | 3274 */ |
| 2821 Token _period; | 3275 Token _period; |
| 3276 |
| 2822 /** | 3277 /** |
| 2823 * The name of the constructor, or {@code null} if the constructor being decla
red is unnamed. | 3278 * The name of the constructor, or {@code null} if the constructor being decla
red is unnamed. |
| 2824 */ | 3279 */ |
| 2825 SimpleIdentifier _name; | 3280 SimpleIdentifier _name; |
| 3281 |
| 2826 /** | 3282 /** |
| 2827 * The element associated with this constructor, or {@code null} if the AST st
ructure has not been | 3283 * The element associated with this constructor, or {@code null} if the AST st
ructure has not been |
| 2828 * resolved or if this constructor could not be resolved. | 3284 * resolved or if this constructor could not be resolved. |
| 2829 */ | 3285 */ |
| 2830 ConstructorElement _element; | 3286 ConstructorElement _element; |
| 3287 |
| 2831 /** | 3288 /** |
| 2832 * The parameters associated with the constructor. | 3289 * The parameters associated with the constructor. |
| 2833 */ | 3290 */ |
| 2834 FormalParameterList _parameters; | 3291 FormalParameterList _parameters; |
| 3292 |
| 2835 /** | 3293 /** |
| 2836 * The token for the separator (colon or equals) before the initializers, or {
@code null} if there | 3294 * The token for the separator (colon or equals) before the initializers, or {
@code null} if there |
| 2837 * are no initializers. | 3295 * are no initializers. |
| 2838 */ | 3296 */ |
| 2839 Token _separator; | 3297 Token _separator; |
| 3298 |
| 2840 /** | 3299 /** |
| 2841 * The initializers associated with the constructor. | 3300 * The initializers associated with the constructor. |
| 2842 */ | 3301 */ |
| 2843 NodeList<ConstructorInitializer> _initializers; | 3302 NodeList<ConstructorInitializer> _initializers; |
| 3303 |
| 2844 /** | 3304 /** |
| 2845 * The name of the constructor to which this constructor will be redirected, o
r {@code null} if | 3305 * The name of the constructor to which this constructor will be redirected, o
r {@code null} if |
| 2846 * this is not a redirecting factory constructor. | 3306 * this is not a redirecting factory constructor. |
| 2847 */ | 3307 */ |
| 2848 ConstructorName _redirectedConstructor; | 3308 ConstructorName _redirectedConstructor; |
| 3309 |
| 2849 /** | 3310 /** |
| 2850 * The body of the constructor, or {@code null} if the constructor does not ha
ve a body. | 3311 * The body of the constructor, or {@code null} if the constructor does not ha
ve a body. |
| 2851 */ | 3312 */ |
| 2852 FunctionBody _body; | 3313 FunctionBody _body; |
| 3314 |
| 2853 /** | 3315 /** |
| 2854 * Initialize a newly created constructor declaration. | 3316 * Initialize a newly created constructor declaration. |
| 2855 * @param externalKeyword the token for the 'external' keyword | 3317 * @param externalKeyword the token for the 'external' keyword |
| 2856 * @param comment the documentation comment associated with this constructor | 3318 * @param comment the documentation comment associated with this constructor |
| 2857 * @param metadata the annotations associated with this constructor | 3319 * @param metadata the annotations associated with this constructor |
| 2858 * @param constKeyword the token for the 'const' keyword | 3320 * @param constKeyword the token for the 'const' keyword |
| 2859 * @param factoryKeyword the token for the 'factory' keyword | 3321 * @param factoryKeyword the token for the 'factory' keyword |
| 2860 * @param returnType the return type of the constructor | 3322 * @param returnType the return type of the constructor |
| 2861 * @param period the token for the period before the constructor name | 3323 * @param period the token for the period before the constructor name |
| 2862 * @param name the name of the constructor | 3324 * @param name the name of the constructor |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2874 this._factoryKeyword = factoryKeyword; | 3336 this._factoryKeyword = factoryKeyword; |
| 2875 this._returnType = becomeParentOf(returnType); | 3337 this._returnType = becomeParentOf(returnType); |
| 2876 this._period = period; | 3338 this._period = period; |
| 2877 this._name = becomeParentOf(name); | 3339 this._name = becomeParentOf(name); |
| 2878 this._parameters = becomeParentOf(parameters); | 3340 this._parameters = becomeParentOf(parameters); |
| 2879 this._separator = separator; | 3341 this._separator = separator; |
| 2880 this._initializers.addAll(initializers); | 3342 this._initializers.addAll(initializers); |
| 2881 this._redirectedConstructor = becomeParentOf(redirectedConstructor); | 3343 this._redirectedConstructor = becomeParentOf(redirectedConstructor); |
| 2882 this._body = becomeParentOf(body); | 3344 this._body = becomeParentOf(body); |
| 2883 } | 3345 } |
| 3346 |
| 2884 /** | 3347 /** |
| 2885 * Initialize a newly created constructor declaration. | 3348 * Initialize a newly created constructor declaration. |
| 2886 * @param externalKeyword the token for the 'external' keyword | 3349 * @param externalKeyword the token for the 'external' keyword |
| 2887 * @param comment the documentation comment associated with this constructor | 3350 * @param comment the documentation comment associated with this constructor |
| 2888 * @param metadata the annotations associated with this constructor | 3351 * @param metadata the annotations associated with this constructor |
| 2889 * @param constKeyword the token for the 'const' keyword | 3352 * @param constKeyword the token for the 'const' keyword |
| 2890 * @param factoryKeyword the token for the 'factory' keyword | 3353 * @param factoryKeyword the token for the 'factory' keyword |
| 2891 * @param returnType the return type of the constructor | 3354 * @param returnType the return type of the constructor |
| 2892 * @param period the token for the period before the constructor name | 3355 * @param period the token for the period before the constructor name |
| 2893 * @param name the name of the constructor | 3356 * @param name the name of the constructor |
| 2894 * @param parameters the parameters associated with the constructor | 3357 * @param parameters the parameters associated with the constructor |
| 2895 * @param separator the token for the colon or equals before the initializers | 3358 * @param separator the token for the colon or equals before the initializers |
| 2896 * @param initializers the initializers associated with the constructor | 3359 * @param initializers the initializers associated with the constructor |
| 2897 * @param redirectedConstructor the name of the constructor to which this cons
tructor will be | 3360 * @param redirectedConstructor the name of the constructor to which this cons
tructor will be |
| 2898 * redirected | 3361 * redirected |
| 2899 * @param body the body of the constructor | 3362 * @param body the body of the constructor |
| 2900 */ | 3363 */ |
| 2901 ConstructorDeclaration({Comment comment, List<Annotation> metadata, Token exte
rnalKeyword, Token constKeyword, Token factoryKeyword, Identifier returnType, To
ken period, SimpleIdentifier name, FormalParameterList parameters, Token separat
or, List<ConstructorInitializer> initializers, ConstructorName redirectedConstru
ctor, FunctionBody body}) : this.full(comment, metadata, externalKeyword, constK
eyword, factoryKeyword, returnType, period, name, parameters, separator, initial
izers, redirectedConstructor, body); | 3364 ConstructorDeclaration({Comment comment, List<Annotation> metadata, Token exte
rnalKeyword, Token constKeyword, Token factoryKeyword, Identifier returnType, To
ken period, SimpleIdentifier name, FormalParameterList parameters, Token separat
or, List<ConstructorInitializer> initializers, ConstructorName redirectedConstru
ctor, FunctionBody body}) : this.full(comment, metadata, externalKeyword, constK
eyword, factoryKeyword, returnType, period, name, parameters, separator, initial
izers, redirectedConstructor, body); |
| 2902 accept(ASTVisitor visitor) => visitor.visitConstructorDeclaration(this); | 3365 accept(ASTVisitor visitor) => visitor.visitConstructorDeclaration(this); |
| 3366 |
| 2903 /** | 3367 /** |
| 2904 * Return the body of the constructor, or {@code null} if the constructor does
not have a body. | 3368 * Return the body of the constructor, or {@code null} if the constructor does
not have a body. |
| 2905 * @return the body of the constructor | 3369 * @return the body of the constructor |
| 2906 */ | 3370 */ |
| 2907 FunctionBody get body => _body; | 3371 FunctionBody get body => _body; |
| 3372 |
| 2908 /** | 3373 /** |
| 2909 * Return the token for the 'const' keyword. | 3374 * Return the token for the 'const' keyword. |
| 2910 * @return the token for the 'const' keyword | 3375 * @return the token for the 'const' keyword |
| 2911 */ | 3376 */ |
| 2912 Token get constKeyword => _constKeyword; | 3377 Token get constKeyword => _constKeyword; |
| 2913 ConstructorElement get element => _element; | 3378 ConstructorElement get element => _element; |
| 2914 Token get endToken { | 3379 Token get endToken { |
| 2915 if (_body != null) { | 3380 if (_body != null) { |
| 2916 return _body.endToken; | 3381 return _body.endToken; |
| 2917 } else if (!_initializers.isEmpty) { | 3382 } else if (!_initializers.isEmpty) { |
| 2918 return _initializers.endToken; | 3383 return _initializers.endToken; |
| 2919 } | 3384 } |
| 2920 return _parameters.endToken; | 3385 return _parameters.endToken; |
| 2921 } | 3386 } |
| 3387 |
| 2922 /** | 3388 /** |
| 2923 * Return the token for the 'external' keyword, or {@code null} if the constru
ctor is not | 3389 * Return the token for the 'external' keyword, or {@code null} if the constru
ctor is not |
| 2924 * external. | 3390 * external. |
| 2925 * @return the token for the 'external' keyword | 3391 * @return the token for the 'external' keyword |
| 2926 */ | 3392 */ |
| 2927 Token get externalKeyword => _externalKeyword; | 3393 Token get externalKeyword => _externalKeyword; |
| 3394 |
| 2928 /** | 3395 /** |
| 2929 * Return the token for the 'factory' keyword. | 3396 * Return the token for the 'factory' keyword. |
| 2930 * @return the token for the 'factory' keyword | 3397 * @return the token for the 'factory' keyword |
| 2931 */ | 3398 */ |
| 2932 Token get factoryKeyword => _factoryKeyword; | 3399 Token get factoryKeyword => _factoryKeyword; |
| 3400 |
| 2933 /** | 3401 /** |
| 2934 * Return the initializers associated with the constructor. | 3402 * Return the initializers associated with the constructor. |
| 2935 * @return the initializers associated with the constructor | 3403 * @return the initializers associated with the constructor |
| 2936 */ | 3404 */ |
| 2937 NodeList<ConstructorInitializer> get initializers => _initializers; | 3405 NodeList<ConstructorInitializer> get initializers => _initializers; |
| 3406 |
| 2938 /** | 3407 /** |
| 2939 * Return the name of the constructor, or {@code null} if the constructor bein
g declared is | 3408 * Return the name of the constructor, or {@code null} if the constructor bein
g declared is |
| 2940 * unnamed. | 3409 * unnamed. |
| 2941 * @return the name of the constructor | 3410 * @return the name of the constructor |
| 2942 */ | 3411 */ |
| 2943 SimpleIdentifier get name => _name; | 3412 SimpleIdentifier get name => _name; |
| 3413 |
| 2944 /** | 3414 /** |
| 2945 * Return the parameters associated with the constructor. | 3415 * Return the parameters associated with the constructor. |
| 2946 * @return the parameters associated with the constructor | 3416 * @return the parameters associated with the constructor |
| 2947 */ | 3417 */ |
| 2948 FormalParameterList get parameters => _parameters; | 3418 FormalParameterList get parameters => _parameters; |
| 3419 |
| 2949 /** | 3420 /** |
| 2950 * Return the token for the period before the constructor name, or {@code null
} if the constructor | 3421 * Return the token for the period before the constructor name, or {@code null
} if the constructor |
| 2951 * being declared is unnamed. | 3422 * being declared is unnamed. |
| 2952 * @return the token for the period before the constructor name | 3423 * @return the token for the period before the constructor name |
| 2953 */ | 3424 */ |
| 2954 Token get period => _period; | 3425 Token get period => _period; |
| 3426 |
| 2955 /** | 3427 /** |
| 2956 * Return the name of the constructor to which this constructor will be redire
cted, or{@code null} if this is not a redirecting factory constructor. | 3428 * Return the name of the constructor to which this constructor will be redire
cted, or{@code null} if this is not a redirecting factory constructor. |
| 2957 * @return the name of the constructor to which this constructor will be redir
ected | 3429 * @return the name of the constructor to which this constructor will be redir
ected |
| 2958 */ | 3430 */ |
| 2959 ConstructorName get redirectedConstructor => _redirectedConstructor; | 3431 ConstructorName get redirectedConstructor => _redirectedConstructor; |
| 3432 |
| 2960 /** | 3433 /** |
| 2961 * Return the type of object being created. This can be different than the typ
e in which the | 3434 * Return the type of object being created. This can be different than the typ
e in which the |
| 2962 * constructor is being declared if the constructor is the implementation of a
factory | 3435 * constructor is being declared if the constructor is the implementation of a
factory |
| 2963 * constructor. | 3436 * constructor. |
| 2964 * @return the type of object being created | 3437 * @return the type of object being created |
| 2965 */ | 3438 */ |
| 2966 Identifier get returnType => _returnType; | 3439 Identifier get returnType => _returnType; |
| 3440 |
| 2967 /** | 3441 /** |
| 2968 * Return the token for the separator (colon or equals) before the initializer
s, or {@code null}if there are no initializers. | 3442 * Return the token for the separator (colon or equals) before the initializer
s, or {@code null}if there are no initializers. |
| 2969 * @return the token for the separator (colon or equals) before the initialize
rs | 3443 * @return the token for the separator (colon or equals) before the initialize
rs |
| 2970 */ | 3444 */ |
| 2971 Token get separator => _separator; | 3445 Token get separator => _separator; |
| 3446 |
| 2972 /** | 3447 /** |
| 2973 * Set the body of the constructor to the given function body. | 3448 * Set the body of the constructor to the given function body. |
| 2974 * @param functionBody the body of the constructor | 3449 * @param functionBody the body of the constructor |
| 2975 */ | 3450 */ |
| 2976 void set body(FunctionBody functionBody) { | 3451 void set body(FunctionBody functionBody) { |
| 2977 _body = becomeParentOf(functionBody); | 3452 _body = becomeParentOf(functionBody); |
| 2978 } | 3453 } |
| 3454 |
| 2979 /** | 3455 /** |
| 2980 * Set the token for the 'const' keyword to the given token. | 3456 * Set the token for the 'const' keyword to the given token. |
| 2981 * @param constKeyword the token for the 'const' keyword | 3457 * @param constKeyword the token for the 'const' keyword |
| 2982 */ | 3458 */ |
| 2983 void set constKeyword(Token constKeyword2) { | 3459 void set constKeyword(Token constKeyword2) { |
| 2984 this._constKeyword = constKeyword2; | 3460 this._constKeyword = constKeyword2; |
| 2985 } | 3461 } |
| 3462 |
| 2986 /** | 3463 /** |
| 2987 * Set the element associated with this constructor to the given element. | 3464 * Set the element associated with this constructor to the given element. |
| 2988 * @param element the element associated with this constructor | 3465 * @param element the element associated with this constructor |
| 2989 */ | 3466 */ |
| 2990 void set element(ConstructorElement element2) { | 3467 void set element(ConstructorElement element2) { |
| 2991 this._element = element2; | 3468 this._element = element2; |
| 2992 } | 3469 } |
| 3470 |
| 2993 /** | 3471 /** |
| 2994 * Set the token for the 'external' keyword to the given token. | 3472 * Set the token for the 'external' keyword to the given token. |
| 2995 * @param externalKeyword the token for the 'external' keyword | 3473 * @param externalKeyword the token for the 'external' keyword |
| 2996 */ | 3474 */ |
| 2997 void set externalKeyword(Token externalKeyword2) { | 3475 void set externalKeyword(Token externalKeyword2) { |
| 2998 this._externalKeyword = externalKeyword2; | 3476 this._externalKeyword = externalKeyword2; |
| 2999 } | 3477 } |
| 3478 |
| 3000 /** | 3479 /** |
| 3001 * Set the token for the 'factory' keyword to the given token. | 3480 * Set the token for the 'factory' keyword to the given token. |
| 3002 * @param factoryKeyword the token for the 'factory' keyword | 3481 * @param factoryKeyword the token for the 'factory' keyword |
| 3003 */ | 3482 */ |
| 3004 void set factoryKeyword(Token factoryKeyword2) { | 3483 void set factoryKeyword(Token factoryKeyword2) { |
| 3005 this._factoryKeyword = factoryKeyword2; | 3484 this._factoryKeyword = factoryKeyword2; |
| 3006 } | 3485 } |
| 3486 |
| 3007 /** | 3487 /** |
| 3008 * Set the name of the constructor to the given identifier. | 3488 * Set the name of the constructor to the given identifier. |
| 3009 * @param identifier the name of the constructor | 3489 * @param identifier the name of the constructor |
| 3010 */ | 3490 */ |
| 3011 void set name(SimpleIdentifier identifier) { | 3491 void set name(SimpleIdentifier identifier) { |
| 3012 _name = becomeParentOf(identifier); | 3492 _name = becomeParentOf(identifier); |
| 3013 } | 3493 } |
| 3494 |
| 3014 /** | 3495 /** |
| 3015 * Set the parameters associated with the constructor to the given list of par
ameters. | 3496 * Set the parameters associated with the constructor to the given list of par
ameters. |
| 3016 * @param parameters the parameters associated with the constructor | 3497 * @param parameters the parameters associated with the constructor |
| 3017 */ | 3498 */ |
| 3018 void set parameters(FormalParameterList parameters2) { | 3499 void set parameters(FormalParameterList parameters2) { |
| 3019 this._parameters = becomeParentOf(parameters2); | 3500 this._parameters = becomeParentOf(parameters2); |
| 3020 } | 3501 } |
| 3502 |
| 3021 /** | 3503 /** |
| 3022 * Set the token for the period before the constructor name to the given token
. | 3504 * Set the token for the period before the constructor name to the given token
. |
| 3023 * @param period the token for the period before the constructor name | 3505 * @param period the token for the period before the constructor name |
| 3024 */ | 3506 */ |
| 3025 void set period(Token period2) { | 3507 void set period(Token period2) { |
| 3026 this._period = period2; | 3508 this._period = period2; |
| 3027 } | 3509 } |
| 3510 |
| 3028 /** | 3511 /** |
| 3029 * Set the name of the constructor to which this constructor will be redirecte
d to the given | 3512 * Set the name of the constructor to which this constructor will be redirecte
d to the given |
| 3030 * constructor name. | 3513 * constructor name. |
| 3031 * @param redirectedConstructor the name of the constructor to which this cons
tructor will be | 3514 * @param redirectedConstructor the name of the constructor to which this cons
tructor will be |
| 3032 * redirected | 3515 * redirected |
| 3033 */ | 3516 */ |
| 3034 void set redirectedConstructor(ConstructorName redirectedConstructor2) { | 3517 void set redirectedConstructor(ConstructorName redirectedConstructor2) { |
| 3035 this._redirectedConstructor = becomeParentOf(redirectedConstructor2); | 3518 this._redirectedConstructor = becomeParentOf(redirectedConstructor2); |
| 3036 } | 3519 } |
| 3520 |
| 3037 /** | 3521 /** |
| 3038 * Set the type of object being created to the given type name. | 3522 * Set the type of object being created to the given type name. |
| 3039 * @param typeName the type of object being created | 3523 * @param typeName the type of object being created |
| 3040 */ | 3524 */ |
| 3041 void set returnType(Identifier typeName) { | 3525 void set returnType(Identifier typeName) { |
| 3042 _returnType = becomeParentOf(typeName); | 3526 _returnType = becomeParentOf(typeName); |
| 3043 } | 3527 } |
| 3528 |
| 3044 /** | 3529 /** |
| 3045 * Set the token for the separator (colon or equals) before the initializers t
o the given token. | 3530 * Set the token for the separator (colon or equals) before the initializers t
o the given token. |
| 3046 * @param separator the token for the separator (colon or equals) before the i
nitializers | 3531 * @param separator the token for the separator (colon or equals) before the i
nitializers |
| 3047 */ | 3532 */ |
| 3048 void set separator(Token separator2) { | 3533 void set separator(Token separator2) { |
| 3049 this._separator = separator2; | 3534 this._separator = separator2; |
| 3050 } | 3535 } |
| 3051 void visitChildren(ASTVisitor<Object> visitor) { | 3536 void visitChildren(ASTVisitor<Object> visitor) { |
| 3052 super.visitChildren(visitor); | 3537 super.visitChildren(visitor); |
| 3053 safelyVisitChild(_returnType, visitor); | 3538 safelyVisitChild(_returnType, visitor); |
| 3054 safelyVisitChild(_name, visitor); | 3539 safelyVisitChild(_name, visitor); |
| 3055 safelyVisitChild(_parameters, visitor); | 3540 safelyVisitChild(_parameters, visitor); |
| 3056 _initializers.accept(visitor); | 3541 _initializers.accept(visitor); |
| 3057 safelyVisitChild(_redirectedConstructor, visitor); | 3542 safelyVisitChild(_redirectedConstructor, visitor); |
| 3058 safelyVisitChild(_body, visitor); | 3543 safelyVisitChild(_body, visitor); |
| 3059 } | 3544 } |
| 3060 Token get firstTokenAfterCommentAndMetadata { | 3545 Token get firstTokenAfterCommentAndMetadata { |
| 3061 Token leftMost2 = leftMost([_externalKeyword, _constKeyword, _factoryKeyword
]); | 3546 Token leftMost2 = leftMost([_externalKeyword, _constKeyword, _factoryKeyword
]); |
| 3062 if (leftMost2 != null) { | 3547 if (leftMost2 != null) { |
| 3063 return leftMost2; | 3548 return leftMost2; |
| 3064 } | 3549 } |
| 3065 return _returnType.beginToken; | 3550 return _returnType.beginToken; |
| 3066 } | 3551 } |
| 3552 |
| 3067 /** | 3553 /** |
| 3068 * Return the left-most of the given tokens, or {@code null} if there are no t
okens given or if | 3554 * Return the left-most of the given tokens, or {@code null} if there are no t
okens given or if |
| 3069 * all of the given tokens are {@code null}. | 3555 * all of the given tokens are {@code null}. |
| 3070 * @param tokens the tokens being compared to find the left-most token | 3556 * @param tokens the tokens being compared to find the left-most token |
| 3071 * @return the left-most of the given tokens | 3557 * @return the left-most of the given tokens |
| 3072 */ | 3558 */ |
| 3073 Token leftMost(List<Token> tokens) { | 3559 Token leftMost(List<Token> tokens) { |
| 3074 Token leftMost = null; | 3560 Token leftMost = null; |
| 3075 int offset = 2147483647; | 3561 int offset = 2147483647; |
| 3076 for (Token token in tokens) { | 3562 for (Token token in tokens) { |
| 3077 if (token != null && token.offset < offset) { | 3563 if (token != null && token.offset < offset) { |
| 3078 leftMost = token; | 3564 leftMost = token; |
| 3079 } | 3565 } |
| 3080 } | 3566 } |
| 3081 return leftMost; | 3567 return leftMost; |
| 3082 } | 3568 } |
| 3083 } | 3569 } |
| 3570 |
| 3084 /** | 3571 /** |
| 3085 * Instances of the class {@code ConstructorFieldInitializer} represent the init
ialization of a | 3572 * Instances of the class {@code ConstructorFieldInitializer} represent the init
ialization of a |
| 3086 * field within a constructor's initialization list. | 3573 * field within a constructor's initialization list. |
| 3087 * <pre> | 3574 * <pre> |
| 3088 * fieldInitializer ::= | 3575 * fieldInitializer ::= |
| 3089 * ('this' '.')? {@link SimpleIdentifier fieldName} '=' {@link Expression condit
ionalExpression cascadeSection*}</pre> | 3576 * ('this' '.')? {@link SimpleIdentifier fieldName} '=' {@link Expression condit
ionalExpression cascadeSection*}</pre> |
| 3090 * @coverage dart.engine.ast | 3577 * @coverage dart.engine.ast |
| 3091 */ | 3578 */ |
| 3092 class ConstructorFieldInitializer extends ConstructorInitializer { | 3579 class ConstructorFieldInitializer extends ConstructorInitializer { |
| 3580 |
| 3093 /** | 3581 /** |
| 3094 * The token for the 'this' keyword, or {@code null} if there is no 'this' key
word. | 3582 * The token for the 'this' keyword, or {@code null} if there is no 'this' key
word. |
| 3095 */ | 3583 */ |
| 3096 Token _keyword; | 3584 Token _keyword; |
| 3585 |
| 3097 /** | 3586 /** |
| 3098 * The token for the period after the 'this' keyword, or {@code null} if there
is no 'this' | 3587 * The token for the period after the 'this' keyword, or {@code null} if there
is no 'this' |
| 3099 * keyword. | 3588 * keyword. |
| 3100 */ | 3589 */ |
| 3101 Token _period; | 3590 Token _period; |
| 3591 |
| 3102 /** | 3592 /** |
| 3103 * The name of the field being initialized. | 3593 * The name of the field being initialized. |
| 3104 */ | 3594 */ |
| 3105 SimpleIdentifier _fieldName; | 3595 SimpleIdentifier _fieldName; |
| 3596 |
| 3106 /** | 3597 /** |
| 3107 * The token for the equal sign between the field name and the expression. | 3598 * The token for the equal sign between the field name and the expression. |
| 3108 */ | 3599 */ |
| 3109 Token _equals; | 3600 Token _equals; |
| 3601 |
| 3110 /** | 3602 /** |
| 3111 * The expression computing the value to which the field will be initialized. | 3603 * The expression computing the value to which the field will be initialized. |
| 3112 */ | 3604 */ |
| 3113 Expression _expression; | 3605 Expression _expression; |
| 3606 |
| 3114 /** | 3607 /** |
| 3115 * Initialize a newly created field initializer to initialize the field with t
he given name to the | 3608 * Initialize a newly created field initializer to initialize the field with t
he given name to the |
| 3116 * value of the given expression. | 3609 * value of the given expression. |
| 3117 * @param keyword the token for the 'this' keyword | 3610 * @param keyword the token for the 'this' keyword |
| 3118 * @param period the token for the period after the 'this' keyword | 3611 * @param period the token for the period after the 'this' keyword |
| 3119 * @param fieldName the name of the field being initialized | 3612 * @param fieldName the name of the field being initialized |
| 3120 * @param equals the token for the equal sign between the field name and the e
xpression | 3613 * @param equals the token for the equal sign between the field name and the e
xpression |
| 3121 * @param expression the expression computing the value to which the field wil
l be initialized | 3614 * @param expression the expression computing the value to which the field wil
l be initialized |
| 3122 */ | 3615 */ |
| 3123 ConstructorFieldInitializer.full(Token keyword, Token period, SimpleIdentifier
fieldName, Token equals, Expression expression) { | 3616 ConstructorFieldInitializer.full(Token keyword, Token period, SimpleIdentifier
fieldName, Token equals, Expression expression) { |
| 3124 this._keyword = keyword; | 3617 this._keyword = keyword; |
| 3125 this._period = period; | 3618 this._period = period; |
| 3126 this._fieldName = becomeParentOf(fieldName); | 3619 this._fieldName = becomeParentOf(fieldName); |
| 3127 this._equals = equals; | 3620 this._equals = equals; |
| 3128 this._expression = becomeParentOf(expression); | 3621 this._expression = becomeParentOf(expression); |
| 3129 } | 3622 } |
| 3623 |
| 3130 /** | 3624 /** |
| 3131 * Initialize a newly created field initializer to initialize the field with t
he given name to the | 3625 * Initialize a newly created field initializer to initialize the field with t
he given name to the |
| 3132 * value of the given expression. | 3626 * value of the given expression. |
| 3133 * @param keyword the token for the 'this' keyword | 3627 * @param keyword the token for the 'this' keyword |
| 3134 * @param period the token for the period after the 'this' keyword | 3628 * @param period the token for the period after the 'this' keyword |
| 3135 * @param fieldName the name of the field being initialized | 3629 * @param fieldName the name of the field being initialized |
| 3136 * @param equals the token for the equal sign between the field name and the e
xpression | 3630 * @param equals the token for the equal sign between the field name and the e
xpression |
| 3137 * @param expression the expression computing the value to which the field wil
l be initialized | 3631 * @param expression the expression computing the value to which the field wil
l be initialized |
| 3138 */ | 3632 */ |
| 3139 ConstructorFieldInitializer({Token keyword, Token period, SimpleIdentifier fie
ldName, Token equals, Expression expression}) : this.full(keyword, period, field
Name, equals, expression); | 3633 ConstructorFieldInitializer({Token keyword, Token period, SimpleIdentifier fie
ldName, Token equals, Expression expression}) : this.full(keyword, period, field
Name, equals, expression); |
| 3140 accept(ASTVisitor visitor) => visitor.visitConstructorFieldInitializer(this); | 3634 accept(ASTVisitor visitor) => visitor.visitConstructorFieldInitializer(this); |
| 3141 Token get beginToken { | 3635 Token get beginToken { |
| 3142 if (_keyword != null) { | 3636 if (_keyword != null) { |
| 3143 return _keyword; | 3637 return _keyword; |
| 3144 } | 3638 } |
| 3145 return _fieldName.beginToken; | 3639 return _fieldName.beginToken; |
| 3146 } | 3640 } |
| 3147 Token get endToken => _expression.endToken; | 3641 Token get endToken => _expression.endToken; |
| 3642 |
| 3148 /** | 3643 /** |
| 3149 * Return the token for the equal sign between the field name and the expressi
on. | 3644 * Return the token for the equal sign between the field name and the expressi
on. |
| 3150 * @return the token for the equal sign between the field name and the express
ion | 3645 * @return the token for the equal sign between the field name and the express
ion |
| 3151 */ | 3646 */ |
| 3152 Token get equals => _equals; | 3647 Token get equals => _equals; |
| 3648 |
| 3153 /** | 3649 /** |
| 3154 * Return the expression computing the value to which the field will be initia
lized. | 3650 * Return the expression computing the value to which the field will be initia
lized. |
| 3155 * @return the expression computing the value to which the field will be initi
alized | 3651 * @return the expression computing the value to which the field will be initi
alized |
| 3156 */ | 3652 */ |
| 3157 Expression get expression => _expression; | 3653 Expression get expression => _expression; |
| 3654 |
| 3158 /** | 3655 /** |
| 3159 * Return the name of the field being initialized. | 3656 * Return the name of the field being initialized. |
| 3160 * @return the name of the field being initialized | 3657 * @return the name of the field being initialized |
| 3161 */ | 3658 */ |
| 3162 SimpleIdentifier get fieldName => _fieldName; | 3659 SimpleIdentifier get fieldName => _fieldName; |
| 3660 |
| 3163 /** | 3661 /** |
| 3164 * Return the token for the 'this' keyword, or {@code null} if there is no 'th
is' keyword. | 3662 * Return the token for the 'this' keyword, or {@code null} if there is no 'th
is' keyword. |
| 3165 * @return the token for the 'this' keyword | 3663 * @return the token for the 'this' keyword |
| 3166 */ | 3664 */ |
| 3167 Token get keyword => _keyword; | 3665 Token get keyword => _keyword; |
| 3666 |
| 3168 /** | 3667 /** |
| 3169 * Return the token for the period after the 'this' keyword, or {@code null} i
f there is no 'this' | 3668 * Return the token for the period after the 'this' keyword, or {@code null} i
f there is no 'this' |
| 3170 * keyword. | 3669 * keyword. |
| 3171 * @return the token for the period after the 'this' keyword | 3670 * @return the token for the period after the 'this' keyword |
| 3172 */ | 3671 */ |
| 3173 Token get period => _period; | 3672 Token get period => _period; |
| 3673 |
| 3174 /** | 3674 /** |
| 3175 * Set the token for the equal sign between the field name and the expression
to the given token. | 3675 * Set the token for the equal sign between the field name and the expression
to the given token. |
| 3176 * @param equals the token for the equal sign between the field name and the e
xpression | 3676 * @param equals the token for the equal sign between the field name and the e
xpression |
| 3177 */ | 3677 */ |
| 3178 void set equals(Token equals2) { | 3678 void set equals(Token equals2) { |
| 3179 this._equals = equals2; | 3679 this._equals = equals2; |
| 3180 } | 3680 } |
| 3681 |
| 3181 /** | 3682 /** |
| 3182 * Set the expression computing the value to which the field will be initializ
ed to the given | 3683 * Set the expression computing the value to which the field will be initializ
ed to the given |
| 3183 * expression. | 3684 * expression. |
| 3184 * @param expression the expression computing the value to which the field wil
l be initialized | 3685 * @param expression the expression computing the value to which the field wil
l be initialized |
| 3185 */ | 3686 */ |
| 3186 void set expression(Expression expression2) { | 3687 void set expression(Expression expression2) { |
| 3187 this._expression = becomeParentOf(expression2); | 3688 this._expression = becomeParentOf(expression2); |
| 3188 } | 3689 } |
| 3690 |
| 3189 /** | 3691 /** |
| 3190 * Set the name of the field being initialized to the given identifier. | 3692 * Set the name of the field being initialized to the given identifier. |
| 3191 * @param identifier the name of the field being initialized | 3693 * @param identifier the name of the field being initialized |
| 3192 */ | 3694 */ |
| 3193 void set fieldName(SimpleIdentifier identifier) { | 3695 void set fieldName(SimpleIdentifier identifier) { |
| 3194 _fieldName = becomeParentOf(identifier); | 3696 _fieldName = becomeParentOf(identifier); |
| 3195 } | 3697 } |
| 3698 |
| 3196 /** | 3699 /** |
| 3197 * Set the token for the 'this' keyword to the given token. | 3700 * Set the token for the 'this' keyword to the given token. |
| 3198 * @param keyword the token for the 'this' keyword | 3701 * @param keyword the token for the 'this' keyword |
| 3199 */ | 3702 */ |
| 3200 void set keyword(Token keyword2) { | 3703 void set keyword(Token keyword2) { |
| 3201 this._keyword = keyword2; | 3704 this._keyword = keyword2; |
| 3202 } | 3705 } |
| 3706 |
| 3203 /** | 3707 /** |
| 3204 * Set the token for the period after the 'this' keyword to the given token. | 3708 * Set the token for the period after the 'this' keyword to the given token. |
| 3205 * @param period the token for the period after the 'this' keyword | 3709 * @param period the token for the period after the 'this' keyword |
| 3206 */ | 3710 */ |
| 3207 void set period(Token period2) { | 3711 void set period(Token period2) { |
| 3208 this._period = period2; | 3712 this._period = period2; |
| 3209 } | 3713 } |
| 3210 void visitChildren(ASTVisitor<Object> visitor) { | 3714 void visitChildren(ASTVisitor<Object> visitor) { |
| 3211 safelyVisitChild(_fieldName, visitor); | 3715 safelyVisitChild(_fieldName, visitor); |
| 3212 safelyVisitChild(_expression, visitor); | 3716 safelyVisitChild(_expression, visitor); |
| 3213 } | 3717 } |
| 3214 } | 3718 } |
| 3719 |
| 3215 /** | 3720 /** |
| 3216 * Instances of the class {@code ConstructorInitializer} defines the behavior of
nodes that can | 3721 * Instances of the class {@code ConstructorInitializer} defines the behavior of
nodes that can |
| 3217 * occur in the initializer list of a constructor declaration. | 3722 * occur in the initializer list of a constructor declaration. |
| 3218 * <pre> | 3723 * <pre> |
| 3219 * constructorInitializer ::={@link SuperConstructorInvocation superInvocation}|
{@link ConstructorFieldInitializer fieldInitializer}</pre> | 3724 * constructorInitializer ::={@link SuperConstructorInvocation superInvocation}|
{@link ConstructorFieldInitializer fieldInitializer}</pre> |
| 3220 * @coverage dart.engine.ast | 3725 * @coverage dart.engine.ast |
| 3221 */ | 3726 */ |
| 3222 abstract class ConstructorInitializer extends ASTNode { | 3727 abstract class ConstructorInitializer extends ASTNode { |
| 3223 } | 3728 } |
| 3729 |
| 3224 /** | 3730 /** |
| 3225 * Instances of the class {@code ConstructorName} represent the name of the cons
tructor. | 3731 * Instances of the class {@code ConstructorName} represent the name of the cons
tructor. |
| 3226 * <pre> | 3732 * <pre> |
| 3227 * constructorName: | 3733 * constructorName: |
| 3228 * type ('.' identifier)? | 3734 * type ('.' identifier)? |
| 3229 * </pre> | 3735 * </pre> |
| 3230 * @coverage dart.engine.ast | 3736 * @coverage dart.engine.ast |
| 3231 */ | 3737 */ |
| 3232 class ConstructorName extends ASTNode { | 3738 class ConstructorName extends ASTNode { |
| 3739 |
| 3233 /** | 3740 /** |
| 3234 * The name of the type defining the constructor. | 3741 * The name of the type defining the constructor. |
| 3235 */ | 3742 */ |
| 3236 TypeName _type; | 3743 TypeName _type; |
| 3744 |
| 3237 /** | 3745 /** |
| 3238 * The token for the period before the constructor name, or {@code null} if th
e specified | 3746 * The token for the period before the constructor name, or {@code null} if th
e specified |
| 3239 * constructor is the unnamed constructor. | 3747 * constructor is the unnamed constructor. |
| 3240 */ | 3748 */ |
| 3241 Token _period; | 3749 Token _period; |
| 3750 |
| 3242 /** | 3751 /** |
| 3243 * The name of the constructor, or {@code null} if the specified constructor i
s the unnamed | 3752 * The name of the constructor, or {@code null} if the specified constructor i
s the unnamed |
| 3244 * constructor. | 3753 * constructor. |
| 3245 */ | 3754 */ |
| 3246 SimpleIdentifier _name; | 3755 SimpleIdentifier _name; |
| 3756 |
| 3247 /** | 3757 /** |
| 3248 * The element associated with this constructor name, or {@code null} if the A
ST structure has not | 3758 * The element associated with this constructor name based on static type info
rmation, or{@code null} if the AST structure has not been resolved or if this co
nstructor name could not |
| 3249 * been resolved or if this constructor name could not be resolved. | 3759 * be resolved. |
| 3250 */ | 3760 */ |
| 3251 ConstructorElement _element; | 3761 ConstructorElement _staticElement; |
| 3762 |
| 3763 /** |
| 3764 * 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 thi
s constructor name could not |
| 3765 * be resolved. |
| 3766 */ |
| 3767 ConstructorElement _propagatedElement; |
| 3768 |
| 3252 /** | 3769 /** |
| 3253 * Initialize a newly created constructor name. | 3770 * Initialize a newly created constructor name. |
| 3254 * @param type the name of the type defining the constructor | 3771 * @param type the name of the type defining the constructor |
| 3255 * @param period the token for the period before the constructor name | 3772 * @param period the token for the period before the constructor name |
| 3256 * @param name the name of the constructor | 3773 * @param name the name of the constructor |
| 3257 */ | 3774 */ |
| 3258 ConstructorName.full(TypeName type, Token period, SimpleIdentifier name) { | 3775 ConstructorName.full(TypeName type, Token period, SimpleIdentifier name) { |
| 3259 this._type = becomeParentOf(type); | 3776 this._type = becomeParentOf(type); |
| 3260 this._period = period; | 3777 this._period = period; |
| 3261 this._name = becomeParentOf(name); | 3778 this._name = becomeParentOf(name); |
| 3262 } | 3779 } |
| 3780 |
| 3263 /** | 3781 /** |
| 3264 * Initialize a newly created constructor name. | 3782 * Initialize a newly created constructor name. |
| 3265 * @param type the name of the type defining the constructor | 3783 * @param type the name of the type defining the constructor |
| 3266 * @param period the token for the period before the constructor name | 3784 * @param period the token for the period before the constructor name |
| 3267 * @param name the name of the constructor | 3785 * @param name the name of the constructor |
| 3268 */ | 3786 */ |
| 3269 ConstructorName({TypeName type, Token period, SimpleIdentifier name}) : this.f
ull(type, period, name); | 3787 ConstructorName({TypeName type, Token period, SimpleIdentifier name}) : this.f
ull(type, period, name); |
| 3270 accept(ASTVisitor visitor) => visitor.visitConstructorName(this); | 3788 accept(ASTVisitor visitor) => visitor.visitConstructorName(this); |
| 3271 Token get beginToken => _type.beginToken; | 3789 Token get beginToken => _type.beginToken; |
| 3790 |
| 3272 /** | 3791 /** |
| 3273 * Return the element associated with this constructor name, or {@code null} i
f the AST structure | 3792 * Return the element associated with this constructor name based on propagate
d type information, |
| 3274 * has not been resolved or if this constructor name could not be resolved. | 3793 * or {@code null} if the AST structure has not been resolved or if this const
ructor name could |
| 3794 * not be resolved. |
| 3275 * @return the element associated with this constructor name | 3795 * @return the element associated with this constructor name |
| 3276 */ | 3796 */ |
| 3277 ConstructorElement get element => _element; | 3797 ConstructorElement get element => _propagatedElement; |
| 3278 Token get endToken { | 3798 Token get endToken { |
| 3279 if (_name != null) { | 3799 if (_name != null) { |
| 3280 return _name.endToken; | 3800 return _name.endToken; |
| 3281 } | 3801 } |
| 3282 return _type.endToken; | 3802 return _type.endToken; |
| 3283 } | 3803 } |
| 3804 |
| 3284 /** | 3805 /** |
| 3285 * Return the name of the constructor, or {@code null} if the specified constr
uctor is the unnamed | 3806 * Return the name of the constructor, or {@code null} if the specified constr
uctor is the unnamed |
| 3286 * constructor. | 3807 * constructor. |
| 3287 * @return the name of the constructor | 3808 * @return the name of the constructor |
| 3288 */ | 3809 */ |
| 3289 SimpleIdentifier get name => _name; | 3810 SimpleIdentifier get name => _name; |
| 3811 |
| 3290 /** | 3812 /** |
| 3291 * Return the token for the period before the constructor name, or {@code null
} if the specified | 3813 * Return the token for the period before the constructor name, or {@code null
} if the specified |
| 3292 * constructor is the unnamed constructor. | 3814 * constructor is the unnamed constructor. |
| 3293 * @return the token for the period before the constructor name | 3815 * @return the token for the period before the constructor name |
| 3294 */ | 3816 */ |
| 3295 Token get period => _period; | 3817 Token get period => _period; |
| 3818 |
| 3819 /** |
| 3820 * Return the element associated with this constructor name based on static ty
pe information, or{@code null} if the AST structure has not been resolved or if
this constructor name could not |
| 3821 * be resolved. |
| 3822 * @return the element associated with this constructor name |
| 3823 */ |
| 3824 ConstructorElement get staticElement => _staticElement; |
| 3825 |
| 3296 /** | 3826 /** |
| 3297 * Return the name of the type defining the constructor. | 3827 * Return the name of the type defining the constructor. |
| 3298 * @return the name of the type defining the constructor | 3828 * @return the name of the type defining the constructor |
| 3299 */ | 3829 */ |
| 3300 TypeName get type => _type; | 3830 TypeName get type => _type; |
| 3831 |
| 3301 /** | 3832 /** |
| 3302 * Set the element associated with this constructor name to the given element. | 3833 * Set the element associated with this constructor name based on propagated t
ype information to |
| 3303 * @param element the element associated with this constructor name | 3834 * the given element. |
| 3835 * @param element the element to be associated with this constructor name |
| 3304 */ | 3836 */ |
| 3305 void set element(ConstructorElement element2) { | 3837 void set element(ConstructorElement element2) { |
| 3306 this._element = element2; | 3838 _propagatedElement = element2; |
| 3307 } | 3839 } |
| 3840 |
| 3308 /** | 3841 /** |
| 3309 * Set the name of the constructor to the given name. | 3842 * Set the name of the constructor to the given name. |
| 3310 * @param name the name of the constructor | 3843 * @param name the name of the constructor |
| 3311 */ | 3844 */ |
| 3312 void set name(SimpleIdentifier name2) { | 3845 void set name(SimpleIdentifier name2) { |
| 3313 this._name = becomeParentOf(name2); | 3846 this._name = becomeParentOf(name2); |
| 3314 } | 3847 } |
| 3848 |
| 3315 /** | 3849 /** |
| 3316 * Return the token for the period before the constructor name to the given to
ken. | 3850 * Return the token for the period before the constructor name to the given to
ken. |
| 3317 * @param period the token for the period before the constructor name | 3851 * @param period the token for the period before the constructor name |
| 3318 */ | 3852 */ |
| 3319 void set period(Token period2) { | 3853 void set period(Token period2) { |
| 3320 this._period = period2; | 3854 this._period = period2; |
| 3321 } | 3855 } |
| 3856 |
| 3857 /** |
| 3858 * Set the element associated with this constructor name based on static type
information to the |
| 3859 * given element. |
| 3860 * @param element the element to be associated with this constructor name |
| 3861 */ |
| 3862 void set staticElement(ConstructorElement element) { |
| 3863 _staticElement = element; |
| 3864 } |
| 3865 |
| 3322 /** | 3866 /** |
| 3323 * Set the name of the type defining the constructor to the given type name. | 3867 * Set the name of the type defining the constructor to the given type name. |
| 3324 * @param type the name of the type defining the constructor | 3868 * @param type the name of the type defining the constructor |
| 3325 */ | 3869 */ |
| 3326 void set type(TypeName type2) { | 3870 void set type(TypeName type2) { |
| 3327 this._type = becomeParentOf(type2); | 3871 this._type = becomeParentOf(type2); |
| 3328 } | 3872 } |
| 3329 void visitChildren(ASTVisitor<Object> visitor) { | 3873 void visitChildren(ASTVisitor<Object> visitor) { |
| 3330 safelyVisitChild(_type, visitor); | 3874 safelyVisitChild(_type, visitor); |
| 3331 safelyVisitChild(_name, visitor); | 3875 safelyVisitChild(_name, visitor); |
| 3332 } | 3876 } |
| 3333 } | 3877 } |
| 3878 |
| 3334 /** | 3879 /** |
| 3335 * Instances of the class {@code ContinueStatement} represent a continue stateme
nt. | 3880 * Instances of the class {@code ContinueStatement} represent a continue stateme
nt. |
| 3336 * <pre> | 3881 * <pre> |
| 3337 * continueStatement ::= | 3882 * continueStatement ::= |
| 3338 * 'continue' {@link SimpleIdentifier label}? ';' | 3883 * 'continue' {@link SimpleIdentifier label}? ';' |
| 3339 * </pre> | 3884 * </pre> |
| 3340 * @coverage dart.engine.ast | 3885 * @coverage dart.engine.ast |
| 3341 */ | 3886 */ |
| 3342 class ContinueStatement extends Statement { | 3887 class ContinueStatement extends Statement { |
| 3888 |
| 3343 /** | 3889 /** |
| 3344 * The token representing the 'continue' keyword. | 3890 * The token representing the 'continue' keyword. |
| 3345 */ | 3891 */ |
| 3346 Token _keyword; | 3892 Token _keyword; |
| 3893 |
| 3347 /** | 3894 /** |
| 3348 * The label associated with the statement, or {@code null} if there is no lab
el. | 3895 * The label associated with the statement, or {@code null} if there is no lab
el. |
| 3349 */ | 3896 */ |
| 3350 SimpleIdentifier _label; | 3897 SimpleIdentifier _label; |
| 3898 |
| 3351 /** | 3899 /** |
| 3352 * The semicolon terminating the statement. | 3900 * The semicolon terminating the statement. |
| 3353 */ | 3901 */ |
| 3354 Token _semicolon; | 3902 Token _semicolon; |
| 3903 |
| 3355 /** | 3904 /** |
| 3356 * Initialize a newly created continue statement. | 3905 * Initialize a newly created continue statement. |
| 3357 * @param keyword the token representing the 'continue' keyword | 3906 * @param keyword the token representing the 'continue' keyword |
| 3358 * @param label the label associated with the statement | 3907 * @param label the label associated with the statement |
| 3359 * @param semicolon the semicolon terminating the statement | 3908 * @param semicolon the semicolon terminating the statement |
| 3360 */ | 3909 */ |
| 3361 ContinueStatement.full(Token keyword, SimpleIdentifier label, Token semicolon)
{ | 3910 ContinueStatement.full(Token keyword, SimpleIdentifier label, Token semicolon)
{ |
| 3362 this._keyword = keyword; | 3911 this._keyword = keyword; |
| 3363 this._label = becomeParentOf(label); | 3912 this._label = becomeParentOf(label); |
| 3364 this._semicolon = semicolon; | 3913 this._semicolon = semicolon; |
| 3365 } | 3914 } |
| 3915 |
| 3366 /** | 3916 /** |
| 3367 * Initialize a newly created continue statement. | 3917 * Initialize a newly created continue statement. |
| 3368 * @param keyword the token representing the 'continue' keyword | 3918 * @param keyword the token representing the 'continue' keyword |
| 3369 * @param label the label associated with the statement | 3919 * @param label the label associated with the statement |
| 3370 * @param semicolon the semicolon terminating the statement | 3920 * @param semicolon the semicolon terminating the statement |
| 3371 */ | 3921 */ |
| 3372 ContinueStatement({Token keyword, SimpleIdentifier label, Token semicolon}) :
this.full(keyword, label, semicolon); | 3922 ContinueStatement({Token keyword, SimpleIdentifier label, Token semicolon}) :
this.full(keyword, label, semicolon); |
| 3373 accept(ASTVisitor visitor) => visitor.visitContinueStatement(this); | 3923 accept(ASTVisitor visitor) => visitor.visitContinueStatement(this); |
| 3374 Token get beginToken => _keyword; | 3924 Token get beginToken => _keyword; |
| 3375 Token get endToken => _semicolon; | 3925 Token get endToken => _semicolon; |
| 3926 |
| 3376 /** | 3927 /** |
| 3377 * Return the token representing the 'continue' keyword. | 3928 * Return the token representing the 'continue' keyword. |
| 3378 * @return the token representing the 'continue' keyword | 3929 * @return the token representing the 'continue' keyword |
| 3379 */ | 3930 */ |
| 3380 Token get keyword => _keyword; | 3931 Token get keyword => _keyword; |
| 3932 |
| 3381 /** | 3933 /** |
| 3382 * Return the label associated with the statement, or {@code null} if there is
no label. | 3934 * Return the label associated with the statement, or {@code null} if there is
no label. |
| 3383 * @return the label associated with the statement | 3935 * @return the label associated with the statement |
| 3384 */ | 3936 */ |
| 3385 SimpleIdentifier get label => _label; | 3937 SimpleIdentifier get label => _label; |
| 3938 |
| 3386 /** | 3939 /** |
| 3387 * Return the semicolon terminating the statement. | 3940 * Return the semicolon terminating the statement. |
| 3388 * @return the semicolon terminating the statement | 3941 * @return the semicolon terminating the statement |
| 3389 */ | 3942 */ |
| 3390 Token get semicolon => _semicolon; | 3943 Token get semicolon => _semicolon; |
| 3944 |
| 3391 /** | 3945 /** |
| 3392 * Set the token representing the 'continue' keyword to the given token. | 3946 * Set the token representing the 'continue' keyword to the given token. |
| 3393 * @param keyword the token representing the 'continue' keyword | 3947 * @param keyword the token representing the 'continue' keyword |
| 3394 */ | 3948 */ |
| 3395 void set keyword(Token keyword2) { | 3949 void set keyword(Token keyword2) { |
| 3396 this._keyword = keyword2; | 3950 this._keyword = keyword2; |
| 3397 } | 3951 } |
| 3952 |
| 3398 /** | 3953 /** |
| 3399 * Set the label associated with the statement to the given label. | 3954 * Set the label associated with the statement to the given label. |
| 3400 * @param identifier the label associated with the statement | 3955 * @param identifier the label associated with the statement |
| 3401 */ | 3956 */ |
| 3402 void set label(SimpleIdentifier identifier) { | 3957 void set label(SimpleIdentifier identifier) { |
| 3403 _label = becomeParentOf(identifier); | 3958 _label = becomeParentOf(identifier); |
| 3404 } | 3959 } |
| 3960 |
| 3405 /** | 3961 /** |
| 3406 * Set the semicolon terminating the statement to the given token. | 3962 * Set the semicolon terminating the statement to the given token. |
| 3407 * @param semicolon the semicolon terminating the statement | 3963 * @param semicolon the semicolon terminating the statement |
| 3408 */ | 3964 */ |
| 3409 void set semicolon(Token semicolon2) { | 3965 void set semicolon(Token semicolon2) { |
| 3410 this._semicolon = semicolon2; | 3966 this._semicolon = semicolon2; |
| 3411 } | 3967 } |
| 3412 void visitChildren(ASTVisitor<Object> visitor) { | 3968 void visitChildren(ASTVisitor<Object> visitor) { |
| 3413 safelyVisitChild(_label, visitor); | 3969 safelyVisitChild(_label, visitor); |
| 3414 } | 3970 } |
| 3415 } | 3971 } |
| 3972 |
| 3416 /** | 3973 /** |
| 3417 * The abstract class {@code Declaration} defines the behavior common to nodes t
hat represent the | 3974 * The abstract class {@code Declaration} defines the behavior common to nodes t
hat represent the |
| 3418 * declaration of a name. Each declared name is visible within a name scope. | 3975 * declaration of a name. Each declared name is visible within a name scope. |
| 3419 * @coverage dart.engine.ast | 3976 * @coverage dart.engine.ast |
| 3420 */ | 3977 */ |
| 3421 abstract class Declaration extends AnnotatedNode { | 3978 abstract class Declaration extends AnnotatedNode { |
| 3979 |
| 3422 /** | 3980 /** |
| 3423 * Initialize a newly created declaration. | 3981 * Initialize a newly created declaration. |
| 3424 * @param comment the documentation comment associated with this declaration | 3982 * @param comment the documentation comment associated with this declaration |
| 3425 * @param metadata the annotations associated with this declaration | 3983 * @param metadata the annotations associated with this declaration |
| 3426 */ | 3984 */ |
| 3427 Declaration.full(Comment comment, List<Annotation> metadata) : super.full(comm
ent, metadata) { | 3985 Declaration.full(Comment comment, List<Annotation> metadata) : super.full(comm
ent, metadata) { |
| 3428 } | 3986 } |
| 3987 |
| 3429 /** | 3988 /** |
| 3430 * Initialize a newly created declaration. | 3989 * Initialize a newly created declaration. |
| 3431 * @param comment the documentation comment associated with this declaration | 3990 * @param comment the documentation comment associated with this declaration |
| 3432 * @param metadata the annotations associated with this declaration | 3991 * @param metadata the annotations associated with this declaration |
| 3433 */ | 3992 */ |
| 3434 Declaration({Comment comment, List<Annotation> metadata}) : this.full(comment,
metadata); | 3993 Declaration({Comment comment, List<Annotation> metadata}) : this.full(comment,
metadata); |
| 3994 |
| 3435 /** | 3995 /** |
| 3436 * Return the element associated with this declaration, or {@code null} if eit
her this node | 3996 * Return the element associated with this declaration, or {@code null} if eit
her this node |
| 3437 * corresponds to a list of declarations or if the AST structure has not been
resolved. | 3997 * corresponds to a list of declarations or if the AST structure has not been
resolved. |
| 3438 * @return the element associated with this declaration | 3998 * @return the element associated with this declaration |
| 3439 */ | 3999 */ |
| 3440 Element get element; | 4000 Element get element; |
| 3441 } | 4001 } |
| 4002 |
| 3442 /** | 4003 /** |
| 3443 * Instances of the class {@code DeclaredIdentifier} represent the declaration o
f a single | 4004 * Instances of the class {@code DeclaredIdentifier} represent the declaration o
f a single |
| 3444 * identifier. | 4005 * identifier. |
| 3445 * <pre> | 4006 * <pre> |
| 3446 * declaredIdentifier ::= | 4007 * declaredIdentifier ::= |
| 3447 * ({@link Annotation metadata} finalConstVarOrType {@link SimpleIdentifier iden
tifier}</pre> | 4008 * ({@link Annotation metadata} finalConstVarOrType {@link SimpleIdentifier iden
tifier}</pre> |
| 3448 * @coverage dart.engine.ast | 4009 * @coverage dart.engine.ast |
| 3449 */ | 4010 */ |
| 3450 class DeclaredIdentifier extends Declaration { | 4011 class DeclaredIdentifier extends Declaration { |
| 4012 |
| 3451 /** | 4013 /** |
| 3452 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no | 4014 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no |
| 3453 * keyword was used. | 4015 * keyword was used. |
| 3454 */ | 4016 */ |
| 3455 Token _keyword; | 4017 Token _keyword; |
| 4018 |
| 3456 /** | 4019 /** |
| 3457 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have | 4020 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have |
| 3458 * a declared type. | 4021 * a declared type. |
| 3459 */ | 4022 */ |
| 3460 TypeName _type; | 4023 TypeName _type; |
| 4024 |
| 3461 /** | 4025 /** |
| 3462 * The name of the variable being declared. | 4026 * The name of the variable being declared. |
| 3463 */ | 4027 */ |
| 3464 SimpleIdentifier _identifier; | 4028 SimpleIdentifier _identifier; |
| 4029 |
| 3465 /** | 4030 /** |
| 3466 * Initialize a newly created formal parameter. | 4031 * Initialize a newly created formal parameter. |
| 3467 * @param comment the documentation comment associated with this parameter | 4032 * @param comment the documentation comment associated with this parameter |
| 3468 * @param metadata the annotations associated with this parameter | 4033 * @param metadata the annotations associated with this parameter |
| 3469 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 4034 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 3470 * @param type the name of the declared type of the parameter | 4035 * @param type the name of the declared type of the parameter |
| 3471 * @param identifier the name of the parameter being declared | 4036 * @param identifier the name of the parameter being declared |
| 3472 */ | 4037 */ |
| 3473 DeclaredIdentifier.full(Comment comment, List<Annotation> metadata, Token keyw
ord, TypeName type, SimpleIdentifier identifier) : super.full(comment, metadata)
{ | 4038 DeclaredIdentifier.full(Comment comment, List<Annotation> metadata, Token keyw
ord, TypeName type, SimpleIdentifier identifier) : super.full(comment, metadata)
{ |
| 3474 this._keyword = keyword; | 4039 this._keyword = keyword; |
| 3475 this._type = becomeParentOf(type); | 4040 this._type = becomeParentOf(type); |
| 3476 this._identifier = becomeParentOf(identifier); | 4041 this._identifier = becomeParentOf(identifier); |
| 3477 } | 4042 } |
| 4043 |
| 3478 /** | 4044 /** |
| 3479 * Initialize a newly created formal parameter. | 4045 * Initialize a newly created formal parameter. |
| 3480 * @param comment the documentation comment associated with this parameter | 4046 * @param comment the documentation comment associated with this parameter |
| 3481 * @param metadata the annotations associated with this parameter | 4047 * @param metadata the annotations associated with this parameter |
| 3482 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 4048 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 3483 * @param type the name of the declared type of the parameter | 4049 * @param type the name of the declared type of the parameter |
| 3484 * @param identifier the name of the parameter being declared | 4050 * @param identifier the name of the parameter being declared |
| 3485 */ | 4051 */ |
| 3486 DeclaredIdentifier({Comment comment, List<Annotation> metadata, Token keyword,
TypeName type, SimpleIdentifier identifier}) : this.full(comment, metadata, key
word, type, identifier); | 4052 DeclaredIdentifier({Comment comment, List<Annotation> metadata, Token keyword,
TypeName type, SimpleIdentifier identifier}) : this.full(comment, metadata, key
word, type, identifier); |
| 3487 accept(ASTVisitor visitor) => visitor.visitDeclaredIdentifier(this); | 4053 accept(ASTVisitor visitor) => visitor.visitDeclaredIdentifier(this); |
| 3488 LocalVariableElement get element { | 4054 LocalVariableElement get element { |
| 3489 SimpleIdentifier identifier2 = identifier; | 4055 SimpleIdentifier identifier2 = identifier; |
| 3490 if (identifier2 == null) { | 4056 if (identifier2 == null) { |
| 3491 return null; | 4057 return null; |
| 3492 } | 4058 } |
| 3493 return identifier2.element as LocalVariableElement; | 4059 return identifier2.element as LocalVariableElement; |
| 3494 } | 4060 } |
| 3495 Token get endToken => _identifier.endToken; | 4061 Token get endToken => _identifier.endToken; |
| 4062 |
| 3496 /** | 4063 /** |
| 3497 * Return the name of the variable being declared. | 4064 * Return the name of the variable being declared. |
| 3498 * @return the name of the variable being declared | 4065 * @return the name of the variable being declared |
| 3499 */ | 4066 */ |
| 3500 SimpleIdentifier get identifier => _identifier; | 4067 SimpleIdentifier get identifier => _identifier; |
| 4068 |
| 3501 /** | 4069 /** |
| 3502 * Return the token representing either the 'final', 'const' or 'var' keyword. | 4070 * Return the token representing either the 'final', 'const' or 'var' keyword. |
| 3503 * @return the token representing either the 'final', 'const' or 'var' keyword | 4071 * @return the token representing either the 'final', 'const' or 'var' keyword |
| 3504 */ | 4072 */ |
| 3505 Token get keyword => _keyword; | 4073 Token get keyword => _keyword; |
| 4074 |
| 3506 /** | 4075 /** |
| 3507 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does | 4076 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does |
| 3508 * not have a declared type. | 4077 * not have a declared type. |
| 3509 * @return the name of the declared type of the parameter | 4078 * @return the name of the declared type of the parameter |
| 3510 */ | 4079 */ |
| 3511 TypeName get type => _type; | 4080 TypeName get type => _type; |
| 4081 |
| 3512 /** | 4082 /** |
| 3513 * Return {@code true} if this variable was declared with the 'const' modifier
. | 4083 * Return {@code true} if this variable was declared with the 'const' modifier
. |
| 3514 * @return {@code true} if this variable was declared with the 'const' modifie
r | 4084 * @return {@code true} if this variable was declared with the 'const' modifie
r |
| 3515 */ | 4085 */ |
| 3516 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); | 4086 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); |
| 4087 |
| 3517 /** | 4088 /** |
| 3518 * Return {@code true} if this variable was declared with the 'final' modifier
. Variables that are | 4089 * Return {@code true} if this variable was declared with the 'final' modifier
. Variables that are |
| 3519 * declared with the 'const' modifier will return {@code false} even though th
ey are implicitly | 4090 * declared with the 'const' modifier will return {@code false} even though th
ey are implicitly |
| 3520 * final. | 4091 * final. |
| 3521 * @return {@code true} if this variable was declared with the 'final' modifie
r | 4092 * @return {@code true} if this variable was declared with the 'final' modifie
r |
| 3522 */ | 4093 */ |
| 3523 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); | 4094 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); |
| 4095 |
| 3524 /** | 4096 /** |
| 3525 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. | 4097 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. |
| 3526 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 4098 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 3527 */ | 4099 */ |
| 3528 void set keyword(Token keyword2) { | 4100 void set keyword(Token keyword2) { |
| 3529 this._keyword = keyword2; | 4101 this._keyword = keyword2; |
| 3530 } | 4102 } |
| 4103 |
| 3531 /** | 4104 /** |
| 3532 * Set the name of the declared type of the parameter to the given type name. | 4105 * Set the name of the declared type of the parameter to the given type name. |
| 3533 * @param typeName the name of the declared type of the parameter | 4106 * @param typeName the name of the declared type of the parameter |
| 3534 */ | 4107 */ |
| 3535 void set type(TypeName typeName) { | 4108 void set type(TypeName typeName) { |
| 3536 _type = becomeParentOf(typeName); | 4109 _type = becomeParentOf(typeName); |
| 3537 } | 4110 } |
| 3538 void visitChildren(ASTVisitor<Object> visitor) { | 4111 void visitChildren(ASTVisitor<Object> visitor) { |
| 3539 super.visitChildren(visitor); | 4112 super.visitChildren(visitor); |
| 3540 safelyVisitChild(_type, visitor); | 4113 safelyVisitChild(_type, visitor); |
| 3541 safelyVisitChild(_identifier, visitor); | 4114 safelyVisitChild(_identifier, visitor); |
| 3542 } | 4115 } |
| 3543 Token get firstTokenAfterCommentAndMetadata { | 4116 Token get firstTokenAfterCommentAndMetadata { |
| 3544 if (_keyword != null) { | 4117 if (_keyword != null) { |
| 3545 return _keyword; | 4118 return _keyword; |
| 3546 } else if (_type != null) { | 4119 } else if (_type != null) { |
| 3547 return _type.beginToken; | 4120 return _type.beginToken; |
| 3548 } | 4121 } |
| 3549 return _identifier.beginToken; | 4122 return _identifier.beginToken; |
| 3550 } | 4123 } |
| 3551 } | 4124 } |
| 4125 |
| 3552 /** | 4126 /** |
| 3553 * Instances of the class {@code DefaultFormalParameter} represent a formal para
meter with a default | 4127 * Instances of the class {@code DefaultFormalParameter} represent a formal para
meter with a default |
| 3554 * value. There are two kinds of parameters that are both represented by this cl
ass: named formal | 4128 * value. There are two kinds of parameters that are both represented by this cl
ass: named formal |
| 3555 * parameters and positional formal parameters. | 4129 * parameters and positional formal parameters. |
| 3556 * <pre> | 4130 * <pre> |
| 3557 * defaultFormalParameter ::={@link NormalFormalParameter normalFormalParameter}
('=' {@link Expression defaultValue})? | 4131 * defaultFormalParameter ::={@link NormalFormalParameter normalFormalParameter}
('=' {@link Expression defaultValue})? |
| 3558 * defaultNamedParameter ::={@link NormalFormalParameter normalFormalParameter}
(':' {@link Expression defaultValue})? | 4132 * defaultNamedParameter ::={@link NormalFormalParameter normalFormalParameter}
(':' {@link Expression defaultValue})? |
| 3559 * </pre> | 4133 * </pre> |
| 3560 * @coverage dart.engine.ast | 4134 * @coverage dart.engine.ast |
| 3561 */ | 4135 */ |
| 3562 class DefaultFormalParameter extends FormalParameter { | 4136 class DefaultFormalParameter extends FormalParameter { |
| 4137 |
| 3563 /** | 4138 /** |
| 3564 * The formal parameter with which the default value is associated. | 4139 * The formal parameter with which the default value is associated. |
| 3565 */ | 4140 */ |
| 3566 NormalFormalParameter _parameter; | 4141 NormalFormalParameter _parameter; |
| 4142 |
| 3567 /** | 4143 /** |
| 3568 * The kind of this parameter. | 4144 * The kind of this parameter. |
| 3569 */ | 4145 */ |
| 3570 ParameterKind _kind; | 4146 ParameterKind _kind; |
| 4147 |
| 3571 /** | 4148 /** |
| 3572 * The token separating the parameter from the default value, or {@code null}
if there is no | 4149 * The token separating the parameter from the default value, or {@code null}
if there is no |
| 3573 * default value. | 4150 * default value. |
| 3574 */ | 4151 */ |
| 3575 Token _separator; | 4152 Token _separator; |
| 4153 |
| 3576 /** | 4154 /** |
| 3577 * The expression computing the default value for the parameter, or {@code nul
l} if there is no | 4155 * The expression computing the default value for the parameter, or {@code nul
l} if there is no |
| 3578 * default value. | 4156 * default value. |
| 3579 */ | 4157 */ |
| 3580 Expression _defaultValue; | 4158 Expression _defaultValue; |
| 4159 |
| 3581 /** | 4160 /** |
| 3582 * Initialize a newly created default formal parameter. | 4161 * Initialize a newly created default formal parameter. |
| 3583 * @param parameter the formal parameter with which the default value is assoc
iated | 4162 * @param parameter the formal parameter with which the default value is assoc
iated |
| 3584 * @param kind the kind of this parameter | 4163 * @param kind the kind of this parameter |
| 3585 * @param separator the token separating the parameter from the default value | 4164 * @param separator the token separating the parameter from the default value |
| 3586 * @param defaultValue the expression computing the default value for the para
meter | 4165 * @param defaultValue the expression computing the default value for the para
meter |
| 3587 */ | 4166 */ |
| 3588 DefaultFormalParameter.full(NormalFormalParameter parameter, ParameterKind kin
d, Token separator, Expression defaultValue) { | 4167 DefaultFormalParameter.full(NormalFormalParameter parameter, ParameterKind kin
d, Token separator, Expression defaultValue) { |
| 3589 this._parameter = becomeParentOf(parameter); | 4168 this._parameter = becomeParentOf(parameter); |
| 3590 this._kind = kind; | 4169 this._kind = kind; |
| 3591 this._separator = separator; | 4170 this._separator = separator; |
| 3592 this._defaultValue = becomeParentOf(defaultValue); | 4171 this._defaultValue = becomeParentOf(defaultValue); |
| 3593 } | 4172 } |
| 4173 |
| 3594 /** | 4174 /** |
| 3595 * Initialize a newly created default formal parameter. | 4175 * Initialize a newly created default formal parameter. |
| 3596 * @param parameter the formal parameter with which the default value is assoc
iated | 4176 * @param parameter the formal parameter with which the default value is assoc
iated |
| 3597 * @param kind the kind of this parameter | 4177 * @param kind the kind of this parameter |
| 3598 * @param separator the token separating the parameter from the default value | 4178 * @param separator the token separating the parameter from the default value |
| 3599 * @param defaultValue the expression computing the default value for the para
meter | 4179 * @param defaultValue the expression computing the default value for the para
meter |
| 3600 */ | 4180 */ |
| 3601 DefaultFormalParameter({NormalFormalParameter parameter, ParameterKind kind, T
oken separator, Expression defaultValue}) : this.full(parameter, kind, separator
, defaultValue); | 4181 DefaultFormalParameter({NormalFormalParameter parameter, ParameterKind kind, T
oken separator, Expression defaultValue}) : this.full(parameter, kind, separator
, defaultValue); |
| 3602 accept(ASTVisitor visitor) => visitor.visitDefaultFormalParameter(this); | 4182 accept(ASTVisitor visitor) => visitor.visitDefaultFormalParameter(this); |
| 3603 Token get beginToken => _parameter.beginToken; | 4183 Token get beginToken => _parameter.beginToken; |
| 4184 |
| 3604 /** | 4185 /** |
| 3605 * Return the expression computing the default value for the parameter, or {@c
ode null} if there | 4186 * Return the expression computing the default value for the parameter, or {@c
ode null} if there |
| 3606 * is no default value. | 4187 * is no default value. |
| 3607 * @return the expression computing the default value for the parameter | 4188 * @return the expression computing the default value for the parameter |
| 3608 */ | 4189 */ |
| 3609 Expression get defaultValue => _defaultValue; | 4190 Expression get defaultValue => _defaultValue; |
| 3610 Token get endToken { | 4191 Token get endToken { |
| 3611 if (_defaultValue != null) { | 4192 if (_defaultValue != null) { |
| 3612 return _defaultValue.endToken; | 4193 return _defaultValue.endToken; |
| 3613 } | 4194 } |
| 3614 return _parameter.endToken; | 4195 return _parameter.endToken; |
| 3615 } | 4196 } |
| 3616 SimpleIdentifier get identifier => _parameter.identifier; | 4197 SimpleIdentifier get identifier => _parameter.identifier; |
| 3617 ParameterKind get kind => _kind; | 4198 ParameterKind get kind => _kind; |
| 4199 |
| 3618 /** | 4200 /** |
| 3619 * Return the formal parameter with which the default value is associated. | 4201 * Return the formal parameter with which the default value is associated. |
| 3620 * @return the formal parameter with which the default value is associated | 4202 * @return the formal parameter with which the default value is associated |
| 3621 */ | 4203 */ |
| 3622 NormalFormalParameter get parameter => _parameter; | 4204 NormalFormalParameter get parameter => _parameter; |
| 4205 |
| 3623 /** | 4206 /** |
| 3624 * Return the token separating the parameter from the default value, or {@code
null} if there is | 4207 * Return the token separating the parameter from the default value, or {@code
null} if there is |
| 3625 * no default value. | 4208 * no default value. |
| 3626 * @return the token separating the parameter from the default value | 4209 * @return the token separating the parameter from the default value |
| 3627 */ | 4210 */ |
| 3628 Token get separator => _separator; | 4211 Token get separator => _separator; |
| 4212 |
| 3629 /** | 4213 /** |
| 3630 * Return {@code true} if this parameter was declared with the 'const' modifie
r. | 4214 * Return {@code true} if this parameter was declared with the 'const' modifie
r. |
| 3631 * @return {@code true} if this parameter was declared with the 'const' modifi
er | 4215 * @return {@code true} if this parameter was declared with the 'const' modifi
er |
| 3632 */ | 4216 */ |
| 3633 bool isConst() => _parameter != null && _parameter.isConst(); | 4217 bool isConst() => _parameter != null && _parameter.isConst(); |
| 4218 |
| 3634 /** | 4219 /** |
| 3635 * Return {@code true} if this parameter was declared with the 'final' modifie
r. Parameters that | 4220 * Return {@code true} if this parameter was declared with the 'final' modifie
r. Parameters that |
| 3636 * are declared with the 'const' modifier will return {@code false} even thoug
h they are | 4221 * are declared with the 'const' modifier will return {@code false} even thoug
h they are |
| 3637 * implicitly final. | 4222 * implicitly final. |
| 3638 * @return {@code true} if this parameter was declared with the 'final' modifi
er | 4223 * @return {@code true} if this parameter was declared with the 'final' modifi
er |
| 3639 */ | 4224 */ |
| 3640 bool isFinal() => _parameter != null && _parameter.isFinal(); | 4225 bool isFinal() => _parameter != null && _parameter.isFinal(); |
| 4226 |
| 3641 /** | 4227 /** |
| 3642 * Set the expression computing the default value for the parameter to the giv
en expression. | 4228 * Set the expression computing the default value for the parameter to the giv
en expression. |
| 3643 * @param expression the expression computing the default value for the parame
ter | 4229 * @param expression the expression computing the default value for the parame
ter |
| 3644 */ | 4230 */ |
| 3645 void set defaultValue(Expression expression) { | 4231 void set defaultValue(Expression expression) { |
| 3646 _defaultValue = becomeParentOf(expression); | 4232 _defaultValue = becomeParentOf(expression); |
| 3647 } | 4233 } |
| 4234 |
| 3648 /** | 4235 /** |
| 3649 * Set the kind of this parameter to the given kind. | 4236 * Set the kind of this parameter to the given kind. |
| 3650 * @param kind the kind of this parameter | 4237 * @param kind the kind of this parameter |
| 3651 */ | 4238 */ |
| 3652 void set kind(ParameterKind kind2) { | 4239 void set kind(ParameterKind kind2) { |
| 3653 this._kind = kind2; | 4240 this._kind = kind2; |
| 3654 } | 4241 } |
| 4242 |
| 3655 /** | 4243 /** |
| 3656 * Set the formal parameter with which the default value is associated to the
given parameter. | 4244 * Set the formal parameter with which the default value is associated to the
given parameter. |
| 3657 * @param formalParameter the formal parameter with which the default value is
associated | 4245 * @param formalParameter the formal parameter with which the default value is
associated |
| 3658 */ | 4246 */ |
| 3659 void set parameter(NormalFormalParameter formalParameter) { | 4247 void set parameter(NormalFormalParameter formalParameter) { |
| 3660 _parameter = becomeParentOf(formalParameter); | 4248 _parameter = becomeParentOf(formalParameter); |
| 3661 } | 4249 } |
| 4250 |
| 3662 /** | 4251 /** |
| 3663 * Set the token separating the parameter from the default value to the given
token. | 4252 * Set the token separating the parameter from the default value to the given
token. |
| 3664 * @param separator the token separating the parameter from the default value | 4253 * @param separator the token separating the parameter from the default value |
| 3665 */ | 4254 */ |
| 3666 void set separator(Token separator2) { | 4255 void set separator(Token separator2) { |
| 3667 this._separator = separator2; | 4256 this._separator = separator2; |
| 3668 } | 4257 } |
| 3669 void visitChildren(ASTVisitor<Object> visitor) { | 4258 void visitChildren(ASTVisitor<Object> visitor) { |
| 3670 safelyVisitChild(_parameter, visitor); | 4259 safelyVisitChild(_parameter, visitor); |
| 3671 safelyVisitChild(_defaultValue, visitor); | 4260 safelyVisitChild(_defaultValue, visitor); |
| 3672 } | 4261 } |
| 3673 } | 4262 } |
| 4263 |
| 3674 /** | 4264 /** |
| 3675 * The abstract class {@code Directive} defines the behavior common to nodes tha
t represent a | 4265 * The abstract class {@code Directive} defines the behavior common to nodes tha
t represent a |
| 3676 * directive. | 4266 * directive. |
| 3677 * <pre> | 4267 * <pre> |
| 3678 * directive ::={@link ExportDirective exportDirective}| {@link ImportDirective
importDirective}| {@link LibraryDirective libraryDirective}| {@link PartDirectiv
e partDirective}| {@link PartOfDirective partOfDirective}</pre> | 4268 * directive ::={@link ExportDirective exportDirective}| {@link ImportDirective
importDirective}| {@link LibraryDirective libraryDirective}| {@link PartDirectiv
e partDirective}| {@link PartOfDirective partOfDirective}</pre> |
| 3679 * @coverage dart.engine.ast | 4269 * @coverage dart.engine.ast |
| 3680 */ | 4270 */ |
| 3681 abstract class Directive extends AnnotatedNode { | 4271 abstract class Directive extends AnnotatedNode { |
| 4272 |
| 3682 /** | 4273 /** |
| 3683 * The element associated with this directive, or {@code null} if the AST stru
cture has not been | 4274 * The element associated with this directive, or {@code null} if the AST stru
cture has not been |
| 3684 * resolved or if this directive could not be resolved. | 4275 * resolved or if this directive could not be resolved. |
| 3685 */ | 4276 */ |
| 3686 Element _element; | 4277 Element _element; |
| 4278 |
| 3687 /** | 4279 /** |
| 3688 * Initialize a newly create directive. | 4280 * Initialize a newly create directive. |
| 3689 * @param comment the documentation comment associated with this directive | 4281 * @param comment the documentation comment associated with this directive |
| 3690 * @param metadata the annotations associated with the directive | 4282 * @param metadata the annotations associated with the directive |
| 3691 */ | 4283 */ |
| 3692 Directive.full(Comment comment, List<Annotation> metadata) : super.full(commen
t, metadata) { | 4284 Directive.full(Comment comment, List<Annotation> metadata) : super.full(commen
t, metadata) { |
| 3693 } | 4285 } |
| 4286 |
| 3694 /** | 4287 /** |
| 3695 * Initialize a newly create directive. | 4288 * Initialize a newly create directive. |
| 3696 * @param comment the documentation comment associated with this directive | 4289 * @param comment the documentation comment associated with this directive |
| 3697 * @param metadata the annotations associated with the directive | 4290 * @param metadata the annotations associated with the directive |
| 3698 */ | 4291 */ |
| 3699 Directive({Comment comment, List<Annotation> metadata}) : this.full(comment, m
etadata); | 4292 Directive({Comment comment, List<Annotation> metadata}) : this.full(comment, m
etadata); |
| 4293 |
| 3700 /** | 4294 /** |
| 3701 * Return the element associated with this directive, or {@code null} if the A
ST structure has not | 4295 * Return the element associated with this directive, or {@code null} if the A
ST structure has not |
| 3702 * been resolved or if this directive could not be resolved. Examples of the l
atter case include a | 4296 * been resolved or if this directive could not be resolved. Examples of the l
atter case include a |
| 3703 * directive that contains an invalid URL or a URL that does not exist. | 4297 * directive that contains an invalid URL or a URL that does not exist. |
| 3704 * @return the element associated with this directive | 4298 * @return the element associated with this directive |
| 3705 */ | 4299 */ |
| 3706 Element get element => _element; | 4300 Element get element => _element; |
| 4301 |
| 3707 /** | 4302 /** |
| 3708 * Return the token representing the keyword that introduces this directive ('
import', 'export', | 4303 * Return the token representing the keyword that introduces this directive ('
import', 'export', |
| 3709 * 'library' or 'part'). | 4304 * 'library' or 'part'). |
| 3710 * @return the token representing the keyword that introduces this directive | 4305 * @return the token representing the keyword that introduces this directive |
| 3711 */ | 4306 */ |
| 3712 Token get keyword; | 4307 Token get keyword; |
| 4308 |
| 3713 /** | 4309 /** |
| 3714 * Set the element associated with this directive to the given element. | 4310 * Set the element associated with this directive to the given element. |
| 3715 * @param element the element associated with this directive | 4311 * @param element the element associated with this directive |
| 3716 */ | 4312 */ |
| 3717 void set element(Element element2) { | 4313 void set element(Element element2) { |
| 3718 this._element = element2; | 4314 this._element = element2; |
| 3719 } | 4315 } |
| 3720 } | 4316 } |
| 4317 |
| 3721 /** | 4318 /** |
| 3722 * Instances of the class {@code DoStatement} represent a do statement. | 4319 * Instances of the class {@code DoStatement} represent a do statement. |
| 3723 * <pre> | 4320 * <pre> |
| 3724 * doStatement ::= | 4321 * doStatement ::= |
| 3725 * 'do' {@link Statement body} 'while' '(' {@link Expression condition} ')' ';' | 4322 * 'do' {@link Statement body} 'while' '(' {@link Expression condition} ')' ';' |
| 3726 * </pre> | 4323 * </pre> |
| 3727 * @coverage dart.engine.ast | 4324 * @coverage dart.engine.ast |
| 3728 */ | 4325 */ |
| 3729 class DoStatement extends Statement { | 4326 class DoStatement extends Statement { |
| 4327 |
| 3730 /** | 4328 /** |
| 3731 * The token representing the 'do' keyword. | 4329 * The token representing the 'do' keyword. |
| 3732 */ | 4330 */ |
| 3733 Token _doKeyword; | 4331 Token _doKeyword; |
| 4332 |
| 3734 /** | 4333 /** |
| 3735 * The body of the loop. | 4334 * The body of the loop. |
| 3736 */ | 4335 */ |
| 3737 Statement _body; | 4336 Statement _body; |
| 4337 |
| 3738 /** | 4338 /** |
| 3739 * The token representing the 'while' keyword. | 4339 * The token representing the 'while' keyword. |
| 3740 */ | 4340 */ |
| 3741 Token _whileKeyword; | 4341 Token _whileKeyword; |
| 4342 |
| 3742 /** | 4343 /** |
| 3743 * The left parenthesis. | 4344 * The left parenthesis. |
| 3744 */ | 4345 */ |
| 3745 Token _leftParenthesis; | 4346 Token _leftParenthesis; |
| 4347 |
| 3746 /** | 4348 /** |
| 3747 * The condition that determines when the loop will terminate. | 4349 * The condition that determines when the loop will terminate. |
| 3748 */ | 4350 */ |
| 3749 Expression _condition; | 4351 Expression _condition; |
| 4352 |
| 3750 /** | 4353 /** |
| 3751 * The right parenthesis. | 4354 * The right parenthesis. |
| 3752 */ | 4355 */ |
| 3753 Token _rightParenthesis; | 4356 Token _rightParenthesis; |
| 4357 |
| 3754 /** | 4358 /** |
| 3755 * The semicolon terminating the statement. | 4359 * The semicolon terminating the statement. |
| 3756 */ | 4360 */ |
| 3757 Token _semicolon; | 4361 Token _semicolon; |
| 4362 |
| 3758 /** | 4363 /** |
| 3759 * Initialize a newly created do loop. | 4364 * Initialize a newly created do loop. |
| 3760 * @param doKeyword the token representing the 'do' keyword | 4365 * @param doKeyword the token representing the 'do' keyword |
| 3761 * @param body the body of the loop | 4366 * @param body the body of the loop |
| 3762 * @param whileKeyword the token representing the 'while' keyword | 4367 * @param whileKeyword the token representing the 'while' keyword |
| 3763 * @param leftParenthesis the left parenthesis | 4368 * @param leftParenthesis the left parenthesis |
| 3764 * @param condition the condition that determines when the loop will terminate | 4369 * @param condition the condition that determines when the loop will terminate |
| 3765 * @param rightParenthesis the right parenthesis | 4370 * @param rightParenthesis the right parenthesis |
| 3766 * @param semicolon the semicolon terminating the statement | 4371 * @param semicolon the semicolon terminating the statement |
| 3767 */ | 4372 */ |
| 3768 DoStatement.full(Token doKeyword, Statement body, Token whileKeyword, Token le
ftParenthesis, Expression condition, Token rightParenthesis, Token semicolon) { | 4373 DoStatement.full(Token doKeyword, Statement body, Token whileKeyword, Token le
ftParenthesis, Expression condition, Token rightParenthesis, Token semicolon) { |
| 3769 this._doKeyword = doKeyword; | 4374 this._doKeyword = doKeyword; |
| 3770 this._body = becomeParentOf(body); | 4375 this._body = becomeParentOf(body); |
| 3771 this._whileKeyword = whileKeyword; | 4376 this._whileKeyword = whileKeyword; |
| 3772 this._leftParenthesis = leftParenthesis; | 4377 this._leftParenthesis = leftParenthesis; |
| 3773 this._condition = becomeParentOf(condition); | 4378 this._condition = becomeParentOf(condition); |
| 3774 this._rightParenthesis = rightParenthesis; | 4379 this._rightParenthesis = rightParenthesis; |
| 3775 this._semicolon = semicolon; | 4380 this._semicolon = semicolon; |
| 3776 } | 4381 } |
| 4382 |
| 3777 /** | 4383 /** |
| 3778 * Initialize a newly created do loop. | 4384 * Initialize a newly created do loop. |
| 3779 * @param doKeyword the token representing the 'do' keyword | 4385 * @param doKeyword the token representing the 'do' keyword |
| 3780 * @param body the body of the loop | 4386 * @param body the body of the loop |
| 3781 * @param whileKeyword the token representing the 'while' keyword | 4387 * @param whileKeyword the token representing the 'while' keyword |
| 3782 * @param leftParenthesis the left parenthesis | 4388 * @param leftParenthesis the left parenthesis |
| 3783 * @param condition the condition that determines when the loop will terminate | 4389 * @param condition the condition that determines when the loop will terminate |
| 3784 * @param rightParenthesis the right parenthesis | 4390 * @param rightParenthesis the right parenthesis |
| 3785 * @param semicolon the semicolon terminating the statement | 4391 * @param semicolon the semicolon terminating the statement |
| 3786 */ | 4392 */ |
| 3787 DoStatement({Token doKeyword, Statement body, Token whileKeyword, Token leftPa
renthesis, Expression condition, Token rightParenthesis, Token semicolon}) : thi
s.full(doKeyword, body, whileKeyword, leftParenthesis, condition, rightParenthes
is, semicolon); | 4393 DoStatement({Token doKeyword, Statement body, Token whileKeyword, Token leftPa
renthesis, Expression condition, Token rightParenthesis, Token semicolon}) : thi
s.full(doKeyword, body, whileKeyword, leftParenthesis, condition, rightParenthes
is, semicolon); |
| 3788 accept(ASTVisitor visitor) => visitor.visitDoStatement(this); | 4394 accept(ASTVisitor visitor) => visitor.visitDoStatement(this); |
| 3789 Token get beginToken => _doKeyword; | 4395 Token get beginToken => _doKeyword; |
| 4396 |
| 3790 /** | 4397 /** |
| 3791 * Return the body of the loop. | 4398 * Return the body of the loop. |
| 3792 * @return the body of the loop | 4399 * @return the body of the loop |
| 3793 */ | 4400 */ |
| 3794 Statement get body => _body; | 4401 Statement get body => _body; |
| 4402 |
| 3795 /** | 4403 /** |
| 3796 * Return the condition that determines when the loop will terminate. | 4404 * Return the condition that determines when the loop will terminate. |
| 3797 * @return the condition that determines when the loop will terminate | 4405 * @return the condition that determines when the loop will terminate |
| 3798 */ | 4406 */ |
| 3799 Expression get condition => _condition; | 4407 Expression get condition => _condition; |
| 4408 |
| 3800 /** | 4409 /** |
| 3801 * Return the token representing the 'do' keyword. | 4410 * Return the token representing the 'do' keyword. |
| 3802 * @return the token representing the 'do' keyword | 4411 * @return the token representing the 'do' keyword |
| 3803 */ | 4412 */ |
| 3804 Token get doKeyword => _doKeyword; | 4413 Token get doKeyword => _doKeyword; |
| 3805 Token get endToken => _semicolon; | 4414 Token get endToken => _semicolon; |
| 4415 |
| 3806 /** | 4416 /** |
| 3807 * Return the left parenthesis. | 4417 * Return the left parenthesis. |
| 3808 * @return the left parenthesis | 4418 * @return the left parenthesis |
| 3809 */ | 4419 */ |
| 3810 Token get leftParenthesis => _leftParenthesis; | 4420 Token get leftParenthesis => _leftParenthesis; |
| 4421 |
| 3811 /** | 4422 /** |
| 3812 * Return the right parenthesis. | 4423 * Return the right parenthesis. |
| 3813 * @return the right parenthesis | 4424 * @return the right parenthesis |
| 3814 */ | 4425 */ |
| 3815 Token get rightParenthesis => _rightParenthesis; | 4426 Token get rightParenthesis => _rightParenthesis; |
| 4427 |
| 3816 /** | 4428 /** |
| 3817 * Return the semicolon terminating the statement. | 4429 * Return the semicolon terminating the statement. |
| 3818 * @return the semicolon terminating the statement | 4430 * @return the semicolon terminating the statement |
| 3819 */ | 4431 */ |
| 3820 Token get semicolon => _semicolon; | 4432 Token get semicolon => _semicolon; |
| 4433 |
| 3821 /** | 4434 /** |
| 3822 * Return the token representing the 'while' keyword. | 4435 * Return the token representing the 'while' keyword. |
| 3823 * @return the token representing the 'while' keyword | 4436 * @return the token representing the 'while' keyword |
| 3824 */ | 4437 */ |
| 3825 Token get whileKeyword => _whileKeyword; | 4438 Token get whileKeyword => _whileKeyword; |
| 4439 |
| 3826 /** | 4440 /** |
| 3827 * Set the body of the loop to the given statement. | 4441 * Set the body of the loop to the given statement. |
| 3828 * @param statement the body of the loop | 4442 * @param statement the body of the loop |
| 3829 */ | 4443 */ |
| 3830 void set body(Statement statement) { | 4444 void set body(Statement statement) { |
| 3831 _body = becomeParentOf(statement); | 4445 _body = becomeParentOf(statement); |
| 3832 } | 4446 } |
| 4447 |
| 3833 /** | 4448 /** |
| 3834 * Set the condition that determines when the loop will terminate to the given
expression. | 4449 * Set the condition that determines when the loop will terminate to the given
expression. |
| 3835 * @param expression the condition that determines when the loop will terminat
e | 4450 * @param expression the condition that determines when the loop will terminat
e |
| 3836 */ | 4451 */ |
| 3837 void set condition(Expression expression) { | 4452 void set condition(Expression expression) { |
| 3838 _condition = becomeParentOf(expression); | 4453 _condition = becomeParentOf(expression); |
| 3839 } | 4454 } |
| 4455 |
| 3840 /** | 4456 /** |
| 3841 * Set the token representing the 'do' keyword to the given token. | 4457 * Set the token representing the 'do' keyword to the given token. |
| 3842 * @param doKeyword the token representing the 'do' keyword | 4458 * @param doKeyword the token representing the 'do' keyword |
| 3843 */ | 4459 */ |
| 3844 void set doKeyword(Token doKeyword2) { | 4460 void set doKeyword(Token doKeyword2) { |
| 3845 this._doKeyword = doKeyword2; | 4461 this._doKeyword = doKeyword2; |
| 3846 } | 4462 } |
| 4463 |
| 3847 /** | 4464 /** |
| 3848 * Set the left parenthesis to the given token. | 4465 * Set the left parenthesis to the given token. |
| 3849 * @param parenthesis the left parenthesis | 4466 * @param parenthesis the left parenthesis |
| 3850 */ | 4467 */ |
| 3851 void set leftParenthesis(Token parenthesis) { | 4468 void set leftParenthesis(Token parenthesis) { |
| 3852 _leftParenthesis = parenthesis; | 4469 _leftParenthesis = parenthesis; |
| 3853 } | 4470 } |
| 4471 |
| 3854 /** | 4472 /** |
| 3855 * Set the right parenthesis to the given token. | 4473 * Set the right parenthesis to the given token. |
| 3856 * @param parenthesis the right parenthesis | 4474 * @param parenthesis the right parenthesis |
| 3857 */ | 4475 */ |
| 3858 void set rightParenthesis(Token parenthesis) { | 4476 void set rightParenthesis(Token parenthesis) { |
| 3859 _rightParenthesis = parenthesis; | 4477 _rightParenthesis = parenthesis; |
| 3860 } | 4478 } |
| 4479 |
| 3861 /** | 4480 /** |
| 3862 * Set the semicolon terminating the statement to the given token. | 4481 * Set the semicolon terminating the statement to the given token. |
| 3863 * @param semicolon the semicolon terminating the statement | 4482 * @param semicolon the semicolon terminating the statement |
| 3864 */ | 4483 */ |
| 3865 void set semicolon(Token semicolon2) { | 4484 void set semicolon(Token semicolon2) { |
| 3866 this._semicolon = semicolon2; | 4485 this._semicolon = semicolon2; |
| 3867 } | 4486 } |
| 4487 |
| 3868 /** | 4488 /** |
| 3869 * Set the token representing the 'while' keyword to the given token. | 4489 * Set the token representing the 'while' keyword to the given token. |
| 3870 * @param whileKeyword the token representing the 'while' keyword | 4490 * @param whileKeyword the token representing the 'while' keyword |
| 3871 */ | 4491 */ |
| 3872 void set whileKeyword(Token whileKeyword2) { | 4492 void set whileKeyword(Token whileKeyword2) { |
| 3873 this._whileKeyword = whileKeyword2; | 4493 this._whileKeyword = whileKeyword2; |
| 3874 } | 4494 } |
| 3875 void visitChildren(ASTVisitor<Object> visitor) { | 4495 void visitChildren(ASTVisitor<Object> visitor) { |
| 3876 safelyVisitChild(_body, visitor); | 4496 safelyVisitChild(_body, visitor); |
| 3877 safelyVisitChild(_condition, visitor); | 4497 safelyVisitChild(_condition, visitor); |
| 3878 } | 4498 } |
| 3879 } | 4499 } |
| 4500 |
| 3880 /** | 4501 /** |
| 3881 * Instances of the class {@code DoubleLiteral} represent a floating point liter
al expression. | 4502 * Instances of the class {@code DoubleLiteral} represent a floating point liter
al expression. |
| 3882 * <pre> | 4503 * <pre> |
| 3883 * doubleLiteral ::= | 4504 * doubleLiteral ::= |
| 3884 * decimalDigit+ ('.' decimalDigit*)? exponent? | 4505 * decimalDigit+ ('.' decimalDigit*)? exponent? |
| 3885 * | '.' decimalDigit+ exponent? | 4506 * | '.' decimalDigit+ exponent? |
| 3886 * exponent ::= | 4507 * exponent ::= |
| 3887 * ('e' | 'E') ('+' | '-')? decimalDigit+ | 4508 * ('e' | 'E') ('+' | '-')? decimalDigit+ |
| 3888 * </pre> | 4509 * </pre> |
| 3889 * @coverage dart.engine.ast | 4510 * @coverage dart.engine.ast |
| 3890 */ | 4511 */ |
| 3891 class DoubleLiteral extends Literal { | 4512 class DoubleLiteral extends Literal { |
| 4513 |
| 3892 /** | 4514 /** |
| 3893 * The token representing the literal. | 4515 * The token representing the literal. |
| 3894 */ | 4516 */ |
| 3895 Token _literal; | 4517 Token _literal; |
| 4518 |
| 3896 /** | 4519 /** |
| 3897 * The value of the literal. | 4520 * The value of the literal. |
| 3898 */ | 4521 */ |
| 3899 double _value = 0.0; | 4522 double _value = 0.0; |
| 4523 |
| 3900 /** | 4524 /** |
| 3901 * Initialize a newly created floating point literal. | 4525 * Initialize a newly created floating point literal. |
| 3902 * @param literal the token representing the literal | 4526 * @param literal the token representing the literal |
| 3903 * @param value the value of the literal | 4527 * @param value the value of the literal |
| 3904 */ | 4528 */ |
| 3905 DoubleLiteral.full(Token literal, double value) { | 4529 DoubleLiteral.full(Token literal, double value) { |
| 3906 this._literal = literal; | 4530 this._literal = literal; |
| 3907 this._value = value; | 4531 this._value = value; |
| 3908 } | 4532 } |
| 4533 |
| 3909 /** | 4534 /** |
| 3910 * Initialize a newly created floating point literal. | 4535 * Initialize a newly created floating point literal. |
| 3911 * @param literal the token representing the literal | 4536 * @param literal the token representing the literal |
| 3912 * @param value the value of the literal | 4537 * @param value the value of the literal |
| 3913 */ | 4538 */ |
| 3914 DoubleLiteral({Token literal, double value}) : this.full(literal, value); | 4539 DoubleLiteral({Token literal, double value}) : this.full(literal, value); |
| 3915 accept(ASTVisitor visitor) => visitor.visitDoubleLiteral(this); | 4540 accept(ASTVisitor visitor) => visitor.visitDoubleLiteral(this); |
| 3916 Token get beginToken => _literal; | 4541 Token get beginToken => _literal; |
| 3917 Token get endToken => _literal; | 4542 Token get endToken => _literal; |
| 4543 |
| 3918 /** | 4544 /** |
| 3919 * Return the token representing the literal. | 4545 * Return the token representing the literal. |
| 3920 * @return the token representing the literal | 4546 * @return the token representing the literal |
| 3921 */ | 4547 */ |
| 3922 Token get literal => _literal; | 4548 Token get literal => _literal; |
| 4549 |
| 3923 /** | 4550 /** |
| 3924 * Return the value of the literal. | 4551 * Return the value of the literal. |
| 3925 * @return the value of the literal | 4552 * @return the value of the literal |
| 3926 */ | 4553 */ |
| 3927 double get value => _value; | 4554 double get value => _value; |
| 4555 |
| 3928 /** | 4556 /** |
| 3929 * Set the token representing the literal to the given token. | 4557 * Set the token representing the literal to the given token. |
| 3930 * @param literal the token representing the literal | 4558 * @param literal the token representing the literal |
| 3931 */ | 4559 */ |
| 3932 void set literal(Token literal2) { | 4560 void set literal(Token literal2) { |
| 3933 this._literal = literal2; | 4561 this._literal = literal2; |
| 3934 } | 4562 } |
| 4563 |
| 3935 /** | 4564 /** |
| 3936 * Set the value of the literal to the given value. | 4565 * Set the value of the literal to the given value. |
| 3937 * @param value the value of the literal | 4566 * @param value the value of the literal |
| 3938 */ | 4567 */ |
| 3939 void set value(double value2) { | 4568 void set value(double value2) { |
| 3940 this._value = value2; | 4569 this._value = value2; |
| 3941 } | 4570 } |
| 3942 void visitChildren(ASTVisitor<Object> visitor) { | 4571 void visitChildren(ASTVisitor<Object> visitor) { |
| 3943 } | 4572 } |
| 3944 } | 4573 } |
| 4574 |
| 3945 /** | 4575 /** |
| 3946 * Instances of the class {@code EmptyFunctionBody} represent an empty function
body, which can only | 4576 * Instances of the class {@code EmptyFunctionBody} represent an empty function
body, which can only |
| 3947 * appear in constructors or abstract methods. | 4577 * appear in constructors or abstract methods. |
| 3948 * <pre> | 4578 * <pre> |
| 3949 * emptyFunctionBody ::= | 4579 * emptyFunctionBody ::= |
| 3950 * ';' | 4580 * ';' |
| 3951 * </pre> | 4581 * </pre> |
| 3952 * @coverage dart.engine.ast | 4582 * @coverage dart.engine.ast |
| 3953 */ | 4583 */ |
| 3954 class EmptyFunctionBody extends FunctionBody { | 4584 class EmptyFunctionBody extends FunctionBody { |
| 4585 |
| 3955 /** | 4586 /** |
| 3956 * The token representing the semicolon that marks the end of the function bod
y. | 4587 * The token representing the semicolon that marks the end of the function bod
y. |
| 3957 */ | 4588 */ |
| 3958 Token _semicolon; | 4589 Token _semicolon; |
| 4590 |
| 3959 /** | 4591 /** |
| 3960 * Initialize a newly created function body. | 4592 * Initialize a newly created function body. |
| 3961 * @param semicolon the token representing the semicolon that marks the end of
the function body | 4593 * @param semicolon the token representing the semicolon that marks the end of
the function body |
| 3962 */ | 4594 */ |
| 3963 EmptyFunctionBody.full(Token semicolon) { | 4595 EmptyFunctionBody.full(Token semicolon) { |
| 3964 this._semicolon = semicolon; | 4596 this._semicolon = semicolon; |
| 3965 } | 4597 } |
| 4598 |
| 3966 /** | 4599 /** |
| 3967 * Initialize a newly created function body. | 4600 * Initialize a newly created function body. |
| 3968 * @param semicolon the token representing the semicolon that marks the end of
the function body | 4601 * @param semicolon the token representing the semicolon that marks the end of
the function body |
| 3969 */ | 4602 */ |
| 3970 EmptyFunctionBody({Token semicolon}) : this.full(semicolon); | 4603 EmptyFunctionBody({Token semicolon}) : this.full(semicolon); |
| 3971 accept(ASTVisitor visitor) => visitor.visitEmptyFunctionBody(this); | 4604 accept(ASTVisitor visitor) => visitor.visitEmptyFunctionBody(this); |
| 3972 Token get beginToken => _semicolon; | 4605 Token get beginToken => _semicolon; |
| 3973 Token get endToken => _semicolon; | 4606 Token get endToken => _semicolon; |
| 4607 |
| 3974 /** | 4608 /** |
| 3975 * Return the token representing the semicolon that marks the end of the funct
ion body. | 4609 * Return the token representing the semicolon that marks the end of the funct
ion body. |
| 3976 * @return the token representing the semicolon that marks the end of the func
tion body | 4610 * @return the token representing the semicolon that marks the end of the func
tion body |
| 3977 */ | 4611 */ |
| 3978 Token get semicolon => _semicolon; | 4612 Token get semicolon => _semicolon; |
| 4613 |
| 3979 /** | 4614 /** |
| 3980 * Set the token representing the semicolon that marks the end of the function
body to the given | 4615 * Set the token representing the semicolon that marks the end of the function
body to the given |
| 3981 * token. | 4616 * token. |
| 3982 * @param semicolon the token representing the semicolon that marks the end of
the function body | 4617 * @param semicolon the token representing the semicolon that marks the end of
the function body |
| 3983 */ | 4618 */ |
| 3984 void set semicolon(Token semicolon2) { | 4619 void set semicolon(Token semicolon2) { |
| 3985 this._semicolon = semicolon2; | 4620 this._semicolon = semicolon2; |
| 3986 } | 4621 } |
| 3987 void visitChildren(ASTVisitor<Object> visitor) { | 4622 void visitChildren(ASTVisitor<Object> visitor) { |
| 3988 } | 4623 } |
| 3989 } | 4624 } |
| 4625 |
| 3990 /** | 4626 /** |
| 3991 * Instances of the class {@code EmptyStatement} represent an empty statement. | 4627 * Instances of the class {@code EmptyStatement} represent an empty statement. |
| 3992 * <pre> | 4628 * <pre> |
| 3993 * emptyStatement ::= | 4629 * emptyStatement ::= |
| 3994 * ';' | 4630 * ';' |
| 3995 * </pre> | 4631 * </pre> |
| 3996 * @coverage dart.engine.ast | 4632 * @coverage dart.engine.ast |
| 3997 */ | 4633 */ |
| 3998 class EmptyStatement extends Statement { | 4634 class EmptyStatement extends Statement { |
| 4635 |
| 3999 /** | 4636 /** |
| 4000 * The semicolon terminating the statement. | 4637 * The semicolon terminating the statement. |
| 4001 */ | 4638 */ |
| 4002 Token _semicolon; | 4639 Token _semicolon; |
| 4640 |
| 4003 /** | 4641 /** |
| 4004 * Initialize a newly created empty statement. | 4642 * Initialize a newly created empty statement. |
| 4005 * @param semicolon the semicolon terminating the statement | 4643 * @param semicolon the semicolon terminating the statement |
| 4006 */ | 4644 */ |
| 4007 EmptyStatement.full(Token semicolon) { | 4645 EmptyStatement.full(Token semicolon) { |
| 4008 this._semicolon = semicolon; | 4646 this._semicolon = semicolon; |
| 4009 } | 4647 } |
| 4648 |
| 4010 /** | 4649 /** |
| 4011 * Initialize a newly created empty statement. | 4650 * Initialize a newly created empty statement. |
| 4012 * @param semicolon the semicolon terminating the statement | 4651 * @param semicolon the semicolon terminating the statement |
| 4013 */ | 4652 */ |
| 4014 EmptyStatement({Token semicolon}) : this.full(semicolon); | 4653 EmptyStatement({Token semicolon}) : this.full(semicolon); |
| 4015 accept(ASTVisitor visitor) => visitor.visitEmptyStatement(this); | 4654 accept(ASTVisitor visitor) => visitor.visitEmptyStatement(this); |
| 4016 Token get beginToken => _semicolon; | 4655 Token get beginToken => _semicolon; |
| 4017 Token get endToken => _semicolon; | 4656 Token get endToken => _semicolon; |
| 4657 |
| 4018 /** | 4658 /** |
| 4019 * Return the semicolon terminating the statement. | 4659 * Return the semicolon terminating the statement. |
| 4020 * @return the semicolon terminating the statement | 4660 * @return the semicolon terminating the statement |
| 4021 */ | 4661 */ |
| 4022 Token get semicolon => _semicolon; | 4662 Token get semicolon => _semicolon; |
| 4663 |
| 4023 /** | 4664 /** |
| 4024 * Set the semicolon terminating the statement to the given token. | 4665 * Set the semicolon terminating the statement to the given token. |
| 4025 * @param semicolon the semicolon terminating the statement | 4666 * @param semicolon the semicolon terminating the statement |
| 4026 */ | 4667 */ |
| 4027 void set semicolon(Token semicolon2) { | 4668 void set semicolon(Token semicolon2) { |
| 4028 this._semicolon = semicolon2; | 4669 this._semicolon = semicolon2; |
| 4029 } | 4670 } |
| 4030 void visitChildren(ASTVisitor<Object> visitor) { | 4671 void visitChildren(ASTVisitor<Object> visitor) { |
| 4031 } | 4672 } |
| 4032 } | 4673 } |
| 4674 |
| 4033 /** | 4675 /** |
| 4034 * Ephemeral identifiers are created as needed to mimic the presence of an empty
identifier. | 4676 * Ephemeral identifiers are created as needed to mimic the presence of an empty
identifier. |
| 4035 * @coverage dart.engine.ast | 4677 * @coverage dart.engine.ast |
| 4036 */ | 4678 */ |
| 4037 class EphemeralIdentifier extends SimpleIdentifier { | 4679 class EphemeralIdentifier extends SimpleIdentifier { |
| 4038 EphemeralIdentifier.full(ASTNode parent, int location) : super.full(new Token(
TokenType.IDENTIFIER, location)) { | 4680 EphemeralIdentifier.full(ASTNode parent, int location) : super.full(new Token(
TokenType.IDENTIFIER, location)) { |
| 4039 parent.becomeParentOf(this); | 4681 parent.becomeParentOf(this); |
| 4040 } | 4682 } |
| 4041 EphemeralIdentifier({ASTNode parent, int location}) : this.full(parent, locati
on); | 4683 EphemeralIdentifier({ASTNode parent, int location}) : this.full(parent, locati
on); |
| 4042 } | 4684 } |
| 4685 |
| 4043 /** | 4686 /** |
| 4044 * Instances of the class {@code ExportDirective} represent an export directive. | 4687 * Instances of the class {@code ExportDirective} represent an export directive. |
| 4045 * <pre> | 4688 * <pre> |
| 4046 * exportDirective ::={@link Annotation metadata} 'export' {@link StringLiteral
libraryUri} {@link Combinator combinator}* ';' | 4689 * exportDirective ::={@link Annotation metadata} 'export' {@link StringLiteral
libraryUri} {@link Combinator combinator}* ';' |
| 4047 * </pre> | 4690 * </pre> |
| 4048 * @coverage dart.engine.ast | 4691 * @coverage dart.engine.ast |
| 4049 */ | 4692 */ |
| 4050 class ExportDirective extends NamespaceDirective { | 4693 class ExportDirective extends NamespaceDirective { |
| 4694 |
| 4051 /** | 4695 /** |
| 4052 * Initialize a newly created export directive. | 4696 * Initialize a newly created export directive. |
| 4053 * @param comment the documentation comment associated with this directive | 4697 * @param comment the documentation comment associated with this directive |
| 4054 * @param metadata the annotations associated with the directive | 4698 * @param metadata the annotations associated with the directive |
| 4055 * @param keyword the token representing the 'export' keyword | 4699 * @param keyword the token representing the 'export' keyword |
| 4056 * @param libraryUri the URI of the library being exported | 4700 * @param libraryUri the URI of the library being exported |
| 4057 * @param combinators the combinators used to control which names are exported | 4701 * @param combinators the combinators used to control which names are exported |
| 4058 * @param semicolon the semicolon terminating the directive | 4702 * @param semicolon the semicolon terminating the directive |
| 4059 */ | 4703 */ |
| 4060 ExportDirective.full(Comment comment, List<Annotation> metadata, Token keyword
, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon) : sup
er.full(comment, metadata, keyword, libraryUri, combinators, semicolon) { | 4704 ExportDirective.full(Comment comment, List<Annotation> metadata, Token keyword
, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon) : sup
er.full(comment, metadata, keyword, libraryUri, combinators, semicolon) { |
| 4061 } | 4705 } |
| 4706 |
| 4062 /** | 4707 /** |
| 4063 * Initialize a newly created export directive. | 4708 * Initialize a newly created export directive. |
| 4064 * @param comment the documentation comment associated with this directive | 4709 * @param comment the documentation comment associated with this directive |
| 4065 * @param metadata the annotations associated with the directive | 4710 * @param metadata the annotations associated with the directive |
| 4066 * @param keyword the token representing the 'export' keyword | 4711 * @param keyword the token representing the 'export' keyword |
| 4067 * @param libraryUri the URI of the library being exported | 4712 * @param libraryUri the URI of the library being exported |
| 4068 * @param combinators the combinators used to control which names are exported | 4713 * @param combinators the combinators used to control which names are exported |
| 4069 * @param semicolon the semicolon terminating the directive | 4714 * @param semicolon the semicolon terminating the directive |
| 4070 */ | 4715 */ |
| 4071 ExportDirective({Comment comment, List<Annotation> metadata, Token keyword, St
ringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : this.f
ull(comment, metadata, keyword, libraryUri, combinators, semicolon); | 4716 ExportDirective({Comment comment, List<Annotation> metadata, Token keyword, St
ringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : this.f
ull(comment, metadata, keyword, libraryUri, combinators, semicolon); |
| 4072 accept(ASTVisitor visitor) => visitor.visitExportDirective(this); | 4717 accept(ASTVisitor visitor) => visitor.visitExportDirective(this); |
| 4718 LibraryElement get uriElement { |
| 4719 Element element2 = element; |
| 4720 if (element2 is ExportElement) { |
| 4721 return ((element2 as ExportElement)).exportedLibrary; |
| 4722 } |
| 4723 return null; |
| 4724 } |
| 4073 void visitChildren(ASTVisitor<Object> visitor) { | 4725 void visitChildren(ASTVisitor<Object> visitor) { |
| 4074 super.visitChildren(visitor); | 4726 super.visitChildren(visitor); |
| 4075 combinators.accept(visitor); | 4727 combinators.accept(visitor); |
| 4076 } | 4728 } |
| 4077 } | 4729 } |
| 4730 |
| 4078 /** | 4731 /** |
| 4079 * Instances of the class {@code Expression} defines the behavior common to node
s that represent an | 4732 * Instances of the class {@code Expression} defines the behavior common to node
s that represent an |
| 4080 * expression. | 4733 * expression. |
| 4081 * <pre> | 4734 * <pre> |
| 4082 * expression ::={@link AssignmentExpression assignmentExpression}| {@link Condi
tionalExpression conditionalExpression} cascadeSection | 4735 * expression ::={@link AssignmentExpression assignmentExpression}| {@link Condi
tionalExpression conditionalExpression} cascadeSection |
| 4083 * | {@link ThrowExpression throwExpression}</pre> | 4736 * | {@link ThrowExpression throwExpression}</pre> |
| 4084 * @coverage dart.engine.ast | 4737 * @coverage dart.engine.ast |
| 4085 */ | 4738 */ |
| 4086 abstract class Expression extends ASTNode { | 4739 abstract class Expression extends ASTNode { |
| 4740 |
| 4087 /** | 4741 /** |
| 4088 * The static type of this expression, or {@code null} if the AST structure ha
s not been resolved. | 4742 * The static type of this expression, or {@code null} if the AST structure ha
s not been resolved. |
| 4089 */ | 4743 */ |
| 4090 Type2 _staticType; | 4744 Type2 _staticType; |
| 4745 |
| 4091 /** | 4746 /** |
| 4092 * The propagated type of this expression, or {@code null} if type propagation
has not been | 4747 * The propagated type of this expression, or {@code null} if type propagation
has not been |
| 4093 * performed on the AST structure. | 4748 * performed on the AST structure. |
| 4094 */ | 4749 */ |
| 4095 Type2 _propagatedType; | 4750 Type2 _propagatedType; |
| 4751 |
| 4096 /** | 4752 /** |
| 4097 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, | 4753 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, |
| 4098 * and the function being invoked is known, and this expression corresponds to
one of the | 4754 * and the function being invoked is known, and this expression corresponds to
one of the |
| 4099 * parameters of the function being invoked, then return the parameter element
representing the | 4755 * parameters of the function being invoked, then return the parameter element
representing the |
| 4100 * parameter to which the value of this expression will be bound. Otherwise, r
eturn {@code null}. | 4756 * parameter to which the value of this expression will be bound. Otherwise, r
eturn {@code null}. |
| 4101 * @return the parameter element representing the parameter to which the value
of this expression | 4757 * @return the parameter element representing the parameter to which the value
of this expression |
| 4102 * will be bound | 4758 * will be bound |
| 4103 */ | 4759 */ |
| 4104 ParameterElement get parameterElement { | 4760 ParameterElement get parameterElement { |
| 4105 ASTNode parent2 = parent; | 4761 ASTNode parent2 = parent; |
| 4106 if (parent2 is ArgumentList) { | 4762 if (parent2 is ArgumentList) { |
| 4107 return ((parent2 as ArgumentList)).getParameterElementFor(this); | 4763 return ((parent2 as ArgumentList)).getParameterElementFor(this); |
| 4108 } | 4764 } |
| 4765 if (parent2 is IndexExpression) { |
| 4766 IndexExpression indexExpression = parent2 as IndexExpression; |
| 4767 if (identical(indexExpression.index, this)) { |
| 4768 return indexExpression.parameterElementForIndex; |
| 4769 } |
| 4770 } |
| 4771 if (parent2 is BinaryExpression) { |
| 4772 BinaryExpression binaryExpression = parent2 as BinaryExpression; |
| 4773 if (identical(binaryExpression.rightOperand, this)) { |
| 4774 return binaryExpression.parameterElementForRightOperand; |
| 4775 } |
| 4776 } |
| 4109 return null; | 4777 return null; |
| 4110 } | 4778 } |
| 4779 |
| 4111 /** | 4780 /** |
| 4112 * Return the propagated type of this expression, or {@code null} if type prop
agation has not been | 4781 * Return the propagated type of this expression, or {@code null} if type prop
agation has not been |
| 4113 * performed on the AST structure. | 4782 * performed on the AST structure. |
| 4114 * @return the propagated type of this expression | 4783 * @return the propagated type of this expression |
| 4115 */ | 4784 */ |
| 4116 Type2 get propagatedType => _propagatedType; | 4785 Type2 get propagatedType => _propagatedType; |
| 4786 |
| 4117 /** | 4787 /** |
| 4118 * Return the static type of this expression, or {@code null} if the AST struc
ture has not been | 4788 * Return the static type of this expression, or {@code null} if the AST struc
ture has not been |
| 4119 * resolved. | 4789 * resolved. |
| 4120 * @return the static type of this expression | 4790 * @return the static type of this expression |
| 4121 */ | 4791 */ |
| 4122 Type2 get staticType => _staticType; | 4792 Type2 get staticType => _staticType; |
| 4793 |
| 4123 /** | 4794 /** |
| 4124 * Return {@code true} if this expression is syntactically valid for the LHS o
f an{@link AssignmentExpression assignment expression}. | 4795 * Return {@code true} if this expression is syntactically valid for the LHS o
f an{@link AssignmentExpression assignment expression}. |
| 4125 * @return {@code true} if this expression matches the {@code assignableExpres
sion} production | 4796 * @return {@code true} if this expression matches the {@code assignableExpres
sion} production |
| 4126 */ | 4797 */ |
| 4127 bool isAssignable() => false; | 4798 bool isAssignable() => false; |
| 4799 |
| 4128 /** | 4800 /** |
| 4129 * Set the propagated type of this expression to the given type. | 4801 * Set the propagated type of this expression to the given type. |
| 4130 * @param propagatedType the propagated type of this expression | 4802 * @param propagatedType the propagated type of this expression |
| 4131 */ | 4803 */ |
| 4132 void set propagatedType(Type2 propagatedType2) { | 4804 void set propagatedType(Type2 propagatedType2) { |
| 4133 this._propagatedType = propagatedType2; | 4805 this._propagatedType = propagatedType2; |
| 4134 } | 4806 } |
| 4807 |
| 4135 /** | 4808 /** |
| 4136 * Set the static type of this expression to the given type. | 4809 * Set the static type of this expression to the given type. |
| 4137 * @param staticType the static type of this expression | 4810 * @param staticType the static type of this expression |
| 4138 */ | 4811 */ |
| 4139 void set staticType(Type2 staticType2) { | 4812 void set staticType(Type2 staticType2) { |
| 4140 this._staticType = staticType2; | 4813 this._staticType = staticType2; |
| 4141 } | 4814 } |
| 4142 } | 4815 } |
| 4816 |
| 4143 /** | 4817 /** |
| 4144 * Instances of the class {@code ExpressionFunctionBody} represent a function bo
dy consisting of a | 4818 * Instances of the class {@code ExpressionFunctionBody} represent a function bo
dy consisting of a |
| 4145 * single expression. | 4819 * single expression. |
| 4146 * <pre> | 4820 * <pre> |
| 4147 * expressionFunctionBody ::= | 4821 * expressionFunctionBody ::= |
| 4148 * '=>' {@link Expression expression} ';' | 4822 * '=>' {@link Expression expression} ';' |
| 4149 * </pre> | 4823 * </pre> |
| 4150 * @coverage dart.engine.ast | 4824 * @coverage dart.engine.ast |
| 4151 */ | 4825 */ |
| 4152 class ExpressionFunctionBody extends FunctionBody { | 4826 class ExpressionFunctionBody extends FunctionBody { |
| 4827 |
| 4153 /** | 4828 /** |
| 4154 * The token introducing the expression that represents the body of the functi
on. | 4829 * The token introducing the expression that represents the body of the functi
on. |
| 4155 */ | 4830 */ |
| 4156 Token _functionDefinition; | 4831 Token _functionDefinition; |
| 4832 |
| 4157 /** | 4833 /** |
| 4158 * The expression representing the body of the function. | 4834 * The expression representing the body of the function. |
| 4159 */ | 4835 */ |
| 4160 Expression _expression; | 4836 Expression _expression; |
| 4837 |
| 4161 /** | 4838 /** |
| 4162 * The semicolon terminating the statement. | 4839 * The semicolon terminating the statement. |
| 4163 */ | 4840 */ |
| 4164 Token _semicolon; | 4841 Token _semicolon; |
| 4842 |
| 4165 /** | 4843 /** |
| 4166 * Initialize a newly created function body consisting of a block of statement
s. | 4844 * Initialize a newly created function body consisting of a block of statement
s. |
| 4167 * @param functionDefinition the token introducing the expression that represe
nts the body of the | 4845 * @param functionDefinition the token introducing the expression that represe
nts the body of the |
| 4168 * function | 4846 * function |
| 4169 * @param expression the expression representing the body of the function | 4847 * @param expression the expression representing the body of the function |
| 4170 * @param semicolon the semicolon terminating the statement | 4848 * @param semicolon the semicolon terminating the statement |
| 4171 */ | 4849 */ |
| 4172 ExpressionFunctionBody.full(Token functionDefinition, Expression expression, T
oken semicolon) { | 4850 ExpressionFunctionBody.full(Token functionDefinition, Expression expression, T
oken semicolon) { |
| 4173 this._functionDefinition = functionDefinition; | 4851 this._functionDefinition = functionDefinition; |
| 4174 this._expression = becomeParentOf(expression); | 4852 this._expression = becomeParentOf(expression); |
| 4175 this._semicolon = semicolon; | 4853 this._semicolon = semicolon; |
| 4176 } | 4854 } |
| 4855 |
| 4177 /** | 4856 /** |
| 4178 * Initialize a newly created function body consisting of a block of statement
s. | 4857 * Initialize a newly created function body consisting of a block of statement
s. |
| 4179 * @param functionDefinition the token introducing the expression that represe
nts the body of the | 4858 * @param functionDefinition the token introducing the expression that represe
nts the body of the |
| 4180 * function | 4859 * function |
| 4181 * @param expression the expression representing the body of the function | 4860 * @param expression the expression representing the body of the function |
| 4182 * @param semicolon the semicolon terminating the statement | 4861 * @param semicolon the semicolon terminating the statement |
| 4183 */ | 4862 */ |
| 4184 ExpressionFunctionBody({Token functionDefinition, Expression expression, Token
semicolon}) : this.full(functionDefinition, expression, semicolon); | 4863 ExpressionFunctionBody({Token functionDefinition, Expression expression, Token
semicolon}) : this.full(functionDefinition, expression, semicolon); |
| 4185 accept(ASTVisitor visitor) => visitor.visitExpressionFunctionBody(this); | 4864 accept(ASTVisitor visitor) => visitor.visitExpressionFunctionBody(this); |
| 4186 Token get beginToken => _functionDefinition; | 4865 Token get beginToken => _functionDefinition; |
| 4187 Token get endToken { | 4866 Token get endToken { |
| 4188 if (_semicolon != null) { | 4867 if (_semicolon != null) { |
| 4189 return _semicolon; | 4868 return _semicolon; |
| 4190 } | 4869 } |
| 4191 return _expression.endToken; | 4870 return _expression.endToken; |
| 4192 } | 4871 } |
| 4872 |
| 4193 /** | 4873 /** |
| 4194 * Return the expression representing the body of the function. | 4874 * Return the expression representing the body of the function. |
| 4195 * @return the expression representing the body of the function | 4875 * @return the expression representing the body of the function |
| 4196 */ | 4876 */ |
| 4197 Expression get expression => _expression; | 4877 Expression get expression => _expression; |
| 4878 |
| 4198 /** | 4879 /** |
| 4199 * Return the token introducing the expression that represents the body of the
function. | 4880 * Return the token introducing the expression that represents the body of the
function. |
| 4200 * @return the function definition token | 4881 * @return the function definition token |
| 4201 */ | 4882 */ |
| 4202 Token get functionDefinition => _functionDefinition; | 4883 Token get functionDefinition => _functionDefinition; |
| 4884 |
| 4203 /** | 4885 /** |
| 4204 * Return the semicolon terminating the statement. | 4886 * Return the semicolon terminating the statement. |
| 4205 * @return the semicolon terminating the statement | 4887 * @return the semicolon terminating the statement |
| 4206 */ | 4888 */ |
| 4207 Token get semicolon => _semicolon; | 4889 Token get semicolon => _semicolon; |
| 4890 |
| 4208 /** | 4891 /** |
| 4209 * Set the expression representing the body of the function to the given expre
ssion. | 4892 * Set the expression representing the body of the function to the given expre
ssion. |
| 4210 * @param expression the expression representing the body of the function | 4893 * @param expression the expression representing the body of the function |
| 4211 */ | 4894 */ |
| 4212 void set expression(Expression expression2) { | 4895 void set expression(Expression expression2) { |
| 4213 this._expression = becomeParentOf(expression2); | 4896 this._expression = becomeParentOf(expression2); |
| 4214 } | 4897 } |
| 4898 |
| 4215 /** | 4899 /** |
| 4216 * Set the token introducing the expression that represents the body of the fu
nction to the given | 4900 * Set the token introducing the expression that represents the body of the fu
nction to the given |
| 4217 * token. | 4901 * token. |
| 4218 * @param functionDefinition the function definition token | 4902 * @param functionDefinition the function definition token |
| 4219 */ | 4903 */ |
| 4220 void set functionDefinition(Token functionDefinition2) { | 4904 void set functionDefinition(Token functionDefinition2) { |
| 4221 this._functionDefinition = functionDefinition2; | 4905 this._functionDefinition = functionDefinition2; |
| 4222 } | 4906 } |
| 4907 |
| 4223 /** | 4908 /** |
| 4224 * Set the semicolon terminating the statement to the given token. | 4909 * Set the semicolon terminating the statement to the given token. |
| 4225 * @param semicolon the semicolon terminating the statement | 4910 * @param semicolon the semicolon terminating the statement |
| 4226 */ | 4911 */ |
| 4227 void set semicolon(Token semicolon2) { | 4912 void set semicolon(Token semicolon2) { |
| 4228 this._semicolon = semicolon2; | 4913 this._semicolon = semicolon2; |
| 4229 } | 4914 } |
| 4230 void visitChildren(ASTVisitor<Object> visitor) { | 4915 void visitChildren(ASTVisitor<Object> visitor) { |
| 4231 safelyVisitChild(_expression, visitor); | 4916 safelyVisitChild(_expression, visitor); |
| 4232 } | 4917 } |
| 4233 } | 4918 } |
| 4919 |
| 4234 /** | 4920 /** |
| 4235 * Instances of the class {@code ExpressionStatement} wrap an expression as a st
atement. | 4921 * Instances of the class {@code ExpressionStatement} wrap an expression as a st
atement. |
| 4236 * <pre> | 4922 * <pre> |
| 4237 * expressionStatement ::={@link Expression expression}? ';' | 4923 * expressionStatement ::={@link Expression expression}? ';' |
| 4238 * </pre> | 4924 * </pre> |
| 4239 * @coverage dart.engine.ast | 4925 * @coverage dart.engine.ast |
| 4240 */ | 4926 */ |
| 4241 class ExpressionStatement extends Statement { | 4927 class ExpressionStatement extends Statement { |
| 4928 |
| 4242 /** | 4929 /** |
| 4243 * The expression that comprises the statement. | 4930 * The expression that comprises the statement. |
| 4244 */ | 4931 */ |
| 4245 Expression _expression; | 4932 Expression _expression; |
| 4933 |
| 4246 /** | 4934 /** |
| 4247 * The semicolon terminating the statement, or {@code null} if the expression
is a function | 4935 * The semicolon terminating the statement, or {@code null} if the expression
is a function |
| 4248 * expression and isn't followed by a semicolon. | 4936 * expression and isn't followed by a semicolon. |
| 4249 */ | 4937 */ |
| 4250 Token _semicolon; | 4938 Token _semicolon; |
| 4939 |
| 4251 /** | 4940 /** |
| 4252 * Initialize a newly created expression statement. | 4941 * Initialize a newly created expression statement. |
| 4253 * @param expression the expression that comprises the statement | 4942 * @param expression the expression that comprises the statement |
| 4254 * @param semicolon the semicolon terminating the statement | 4943 * @param semicolon the semicolon terminating the statement |
| 4255 */ | 4944 */ |
| 4256 ExpressionStatement.full(Expression expression, Token semicolon) { | 4945 ExpressionStatement.full(Expression expression, Token semicolon) { |
| 4257 this._expression = becomeParentOf(expression); | 4946 this._expression = becomeParentOf(expression); |
| 4258 this._semicolon = semicolon; | 4947 this._semicolon = semicolon; |
| 4259 } | 4948 } |
| 4949 |
| 4260 /** | 4950 /** |
| 4261 * Initialize a newly created expression statement. | 4951 * Initialize a newly created expression statement. |
| 4262 * @param expression the expression that comprises the statement | 4952 * @param expression the expression that comprises the statement |
| 4263 * @param semicolon the semicolon terminating the statement | 4953 * @param semicolon the semicolon terminating the statement |
| 4264 */ | 4954 */ |
| 4265 ExpressionStatement({Expression expression, Token semicolon}) : this.full(expr
ession, semicolon); | 4955 ExpressionStatement({Expression expression, Token semicolon}) : this.full(expr
ession, semicolon); |
| 4266 accept(ASTVisitor visitor) => visitor.visitExpressionStatement(this); | 4956 accept(ASTVisitor visitor) => visitor.visitExpressionStatement(this); |
| 4267 Token get beginToken => _expression.beginToken; | 4957 Token get beginToken => _expression.beginToken; |
| 4268 Token get endToken { | 4958 Token get endToken { |
| 4269 if (_semicolon != null) { | 4959 if (_semicolon != null) { |
| 4270 return _semicolon; | 4960 return _semicolon; |
| 4271 } | 4961 } |
| 4272 return _expression.endToken; | 4962 return _expression.endToken; |
| 4273 } | 4963 } |
| 4964 |
| 4274 /** | 4965 /** |
| 4275 * Return the expression that comprises the statement. | 4966 * Return the expression that comprises the statement. |
| 4276 * @return the expression that comprises the statement | 4967 * @return the expression that comprises the statement |
| 4277 */ | 4968 */ |
| 4278 Expression get expression => _expression; | 4969 Expression get expression => _expression; |
| 4970 |
| 4279 /** | 4971 /** |
| 4280 * Return the semicolon terminating the statement. | 4972 * Return the semicolon terminating the statement. |
| 4281 * @return the semicolon terminating the statement | 4973 * @return the semicolon terminating the statement |
| 4282 */ | 4974 */ |
| 4283 Token get semicolon => _semicolon; | 4975 Token get semicolon => _semicolon; |
| 4284 bool isSynthetic() => _expression.isSynthetic() && _semicolon.isSynthetic(); | 4976 bool isSynthetic() => _expression.isSynthetic() && _semicolon.isSynthetic(); |
| 4977 |
| 4285 /** | 4978 /** |
| 4286 * Set the expression that comprises the statement to the given expression. | 4979 * Set the expression that comprises the statement to the given expression. |
| 4287 * @param expression the expression that comprises the statement | 4980 * @param expression the expression that comprises the statement |
| 4288 */ | 4981 */ |
| 4289 void set expression(Expression expression2) { | 4982 void set expression(Expression expression2) { |
| 4290 this._expression = becomeParentOf(expression2); | 4983 this._expression = becomeParentOf(expression2); |
| 4291 } | 4984 } |
| 4985 |
| 4292 /** | 4986 /** |
| 4293 * Set the semicolon terminating the statement to the given token. | 4987 * Set the semicolon terminating the statement to the given token. |
| 4294 * @param semicolon the semicolon terminating the statement | 4988 * @param semicolon the semicolon terminating the statement |
| 4295 */ | 4989 */ |
| 4296 void set semicolon(Token semicolon2) { | 4990 void set semicolon(Token semicolon2) { |
| 4297 this._semicolon = semicolon2; | 4991 this._semicolon = semicolon2; |
| 4298 } | 4992 } |
| 4299 void visitChildren(ASTVisitor<Object> visitor) { | 4993 void visitChildren(ASTVisitor<Object> visitor) { |
| 4300 safelyVisitChild(_expression, visitor); | 4994 safelyVisitChild(_expression, visitor); |
| 4301 } | 4995 } |
| 4302 } | 4996 } |
| 4997 |
| 4303 /** | 4998 /** |
| 4304 * Instances of the class {@code ExtendsClause} represent the "extends" clause i
n a class | 4999 * Instances of the class {@code ExtendsClause} represent the "extends" clause i
n a class |
| 4305 * declaration. | 5000 * declaration. |
| 4306 * <pre> | 5001 * <pre> |
| 4307 * extendsClause ::= | 5002 * extendsClause ::= |
| 4308 * 'extends' {@link TypeName superclass}</pre> | 5003 * 'extends' {@link TypeName superclass}</pre> |
| 4309 * @coverage dart.engine.ast | 5004 * @coverage dart.engine.ast |
| 4310 */ | 5005 */ |
| 4311 class ExtendsClause extends ASTNode { | 5006 class ExtendsClause extends ASTNode { |
| 5007 |
| 4312 /** | 5008 /** |
| 4313 * The token representing the 'extends' keyword. | 5009 * The token representing the 'extends' keyword. |
| 4314 */ | 5010 */ |
| 4315 Token _keyword; | 5011 Token _keyword; |
| 5012 |
| 4316 /** | 5013 /** |
| 4317 * The name of the class that is being extended. | 5014 * The name of the class that is being extended. |
| 4318 */ | 5015 */ |
| 4319 TypeName _superclass; | 5016 TypeName _superclass; |
| 5017 |
| 4320 /** | 5018 /** |
| 4321 * Initialize a newly created extends clause. | 5019 * Initialize a newly created extends clause. |
| 4322 * @param keyword the token representing the 'extends' keyword | 5020 * @param keyword the token representing the 'extends' keyword |
| 4323 * @param superclass the name of the class that is being extended | 5021 * @param superclass the name of the class that is being extended |
| 4324 */ | 5022 */ |
| 4325 ExtendsClause.full(Token keyword, TypeName superclass) { | 5023 ExtendsClause.full(Token keyword, TypeName superclass) { |
| 4326 this._keyword = keyword; | 5024 this._keyword = keyword; |
| 4327 this._superclass = becomeParentOf(superclass); | 5025 this._superclass = becomeParentOf(superclass); |
| 4328 } | 5026 } |
| 5027 |
| 4329 /** | 5028 /** |
| 4330 * Initialize a newly created extends clause. | 5029 * Initialize a newly created extends clause. |
| 4331 * @param keyword the token representing the 'extends' keyword | 5030 * @param keyword the token representing the 'extends' keyword |
| 4332 * @param superclass the name of the class that is being extended | 5031 * @param superclass the name of the class that is being extended |
| 4333 */ | 5032 */ |
| 4334 ExtendsClause({Token keyword, TypeName superclass}) : this.full(keyword, super
class); | 5033 ExtendsClause({Token keyword, TypeName superclass}) : this.full(keyword, super
class); |
| 4335 accept(ASTVisitor visitor) => visitor.visitExtendsClause(this); | 5034 accept(ASTVisitor visitor) => visitor.visitExtendsClause(this); |
| 4336 Token get beginToken => _keyword; | 5035 Token get beginToken => _keyword; |
| 4337 Token get endToken => _superclass.endToken; | 5036 Token get endToken => _superclass.endToken; |
| 5037 |
| 4338 /** | 5038 /** |
| 4339 * Return the token representing the 'extends' keyword. | 5039 * Return the token representing the 'extends' keyword. |
| 4340 * @return the token representing the 'extends' keyword | 5040 * @return the token representing the 'extends' keyword |
| 4341 */ | 5041 */ |
| 4342 Token get keyword => _keyword; | 5042 Token get keyword => _keyword; |
| 5043 |
| 4343 /** | 5044 /** |
| 4344 * Return the name of the class that is being extended. | 5045 * Return the name of the class that is being extended. |
| 4345 * @return the name of the class that is being extended | 5046 * @return the name of the class that is being extended |
| 4346 */ | 5047 */ |
| 4347 TypeName get superclass => _superclass; | 5048 TypeName get superclass => _superclass; |
| 5049 |
| 4348 /** | 5050 /** |
| 4349 * Set the token representing the 'extends' keyword to the given token. | 5051 * Set the token representing the 'extends' keyword to the given token. |
| 4350 * @param keyword the token representing the 'extends' keyword | 5052 * @param keyword the token representing the 'extends' keyword |
| 4351 */ | 5053 */ |
| 4352 void set keyword(Token keyword2) { | 5054 void set keyword(Token keyword2) { |
| 4353 this._keyword = keyword2; | 5055 this._keyword = keyword2; |
| 4354 } | 5056 } |
| 5057 |
| 4355 /** | 5058 /** |
| 4356 * Set the name of the class that is being extended to the given name. | 5059 * Set the name of the class that is being extended to the given name. |
| 4357 * @param name the name of the class that is being extended | 5060 * @param name the name of the class that is being extended |
| 4358 */ | 5061 */ |
| 4359 void set superclass(TypeName name) { | 5062 void set superclass(TypeName name) { |
| 4360 _superclass = becomeParentOf(name); | 5063 _superclass = becomeParentOf(name); |
| 4361 } | 5064 } |
| 4362 void visitChildren(ASTVisitor<Object> visitor) { | 5065 void visitChildren(ASTVisitor<Object> visitor) { |
| 4363 safelyVisitChild(_superclass, visitor); | 5066 safelyVisitChild(_superclass, visitor); |
| 4364 } | 5067 } |
| 4365 } | 5068 } |
| 5069 |
| 4366 /** | 5070 /** |
| 4367 * Instances of the class {@code FieldDeclaration} represent the declaration of
one or more fields | 5071 * Instances of the class {@code FieldDeclaration} represent the declaration of
one or more fields |
| 4368 * of the same type. | 5072 * of the same type. |
| 4369 * <pre> | 5073 * <pre> |
| 4370 * fieldDeclaration ::= | 5074 * fieldDeclaration ::= |
| 4371 * 'static'? {@link VariableDeclarationList fieldList} ';' | 5075 * 'static'? {@link VariableDeclarationList fieldList} ';' |
| 4372 * </pre> | 5076 * </pre> |
| 4373 * @coverage dart.engine.ast | 5077 * @coverage dart.engine.ast |
| 4374 */ | 5078 */ |
| 4375 class FieldDeclaration extends ClassMember { | 5079 class FieldDeclaration extends ClassMember { |
| 5080 |
| 4376 /** | 5081 /** |
| 4377 * The token representing the 'static' keyword, or {@code null} if the fields
are not static. | 5082 * The token representing the 'static' keyword, or {@code null} if the fields
are not static. |
| 4378 */ | 5083 */ |
| 4379 Token _keyword; | 5084 Token _keyword; |
| 5085 |
| 4380 /** | 5086 /** |
| 4381 * The fields being declared. | 5087 * The fields being declared. |
| 4382 */ | 5088 */ |
| 4383 VariableDeclarationList _fieldList; | 5089 VariableDeclarationList _fieldList; |
| 5090 |
| 4384 /** | 5091 /** |
| 4385 * The semicolon terminating the declaration. | 5092 * The semicolon terminating the declaration. |
| 4386 */ | 5093 */ |
| 4387 Token _semicolon; | 5094 Token _semicolon; |
| 5095 |
| 4388 /** | 5096 /** |
| 4389 * Initialize a newly created field declaration. | 5097 * Initialize a newly created field declaration. |
| 4390 * @param comment the documentation comment associated with this field | 5098 * @param comment the documentation comment associated with this field |
| 4391 * @param metadata the annotations associated with this field | 5099 * @param metadata the annotations associated with this field |
| 4392 * @param keyword the token representing the 'static' keyword | 5100 * @param keyword the token representing the 'static' keyword |
| 4393 * @param fieldList the fields being declared | 5101 * @param fieldList the fields being declared |
| 4394 * @param semicolon the semicolon terminating the declaration | 5102 * @param semicolon the semicolon terminating the declaration |
| 4395 */ | 5103 */ |
| 4396 FieldDeclaration.full(Comment comment, List<Annotation> metadata, Token keywor
d, VariableDeclarationList fieldList, Token semicolon) : super.full(comment, met
adata) { | 5104 FieldDeclaration.full(Comment comment, List<Annotation> metadata, Token keywor
d, VariableDeclarationList fieldList, Token semicolon) : super.full(comment, met
adata) { |
| 4397 this._keyword = keyword; | 5105 this._keyword = keyword; |
| 4398 this._fieldList = becomeParentOf(fieldList); | 5106 this._fieldList = becomeParentOf(fieldList); |
| 4399 this._semicolon = semicolon; | 5107 this._semicolon = semicolon; |
| 4400 } | 5108 } |
| 5109 |
| 4401 /** | 5110 /** |
| 4402 * Initialize a newly created field declaration. | 5111 * Initialize a newly created field declaration. |
| 4403 * @param comment the documentation comment associated with this field | 5112 * @param comment the documentation comment associated with this field |
| 4404 * @param metadata the annotations associated with this field | 5113 * @param metadata the annotations associated with this field |
| 4405 * @param keyword the token representing the 'static' keyword | 5114 * @param keyword the token representing the 'static' keyword |
| 4406 * @param fieldList the fields being declared | 5115 * @param fieldList the fields being declared |
| 4407 * @param semicolon the semicolon terminating the declaration | 5116 * @param semicolon the semicolon terminating the declaration |
| 4408 */ | 5117 */ |
| 4409 FieldDeclaration({Comment comment, List<Annotation> metadata, Token keyword, V
ariableDeclarationList fieldList, Token semicolon}) : this.full(comment, metadat
a, keyword, fieldList, semicolon); | 5118 FieldDeclaration({Comment comment, List<Annotation> metadata, Token keyword, V
ariableDeclarationList fieldList, Token semicolon}) : this.full(comment, metadat
a, keyword, fieldList, semicolon); |
| 4410 accept(ASTVisitor visitor) => visitor.visitFieldDeclaration(this); | 5119 accept(ASTVisitor visitor) => visitor.visitFieldDeclaration(this); |
| 4411 Element get element => null; | 5120 Element get element => null; |
| 4412 Token get endToken => _semicolon; | 5121 Token get endToken => _semicolon; |
| 5122 |
| 4413 /** | 5123 /** |
| 4414 * Return the fields being declared. | 5124 * Return the fields being declared. |
| 4415 * @return the fields being declared | 5125 * @return the fields being declared |
| 4416 */ | 5126 */ |
| 4417 VariableDeclarationList get fields => _fieldList; | 5127 VariableDeclarationList get fields => _fieldList; |
| 5128 |
| 4418 /** | 5129 /** |
| 4419 * Return the token representing the 'static' keyword, or {@code null} if the
fields are not | 5130 * Return the token representing the 'static' keyword, or {@code null} if the
fields are not |
| 4420 * static. | 5131 * static. |
| 4421 * @return the token representing the 'static' keyword | 5132 * @return the token representing the 'static' keyword |
| 4422 */ | 5133 */ |
| 4423 Token get keyword => _keyword; | 5134 Token get keyword => _keyword; |
| 5135 |
| 4424 /** | 5136 /** |
| 4425 * Return the semicolon terminating the declaration. | 5137 * Return the semicolon terminating the declaration. |
| 4426 * @return the semicolon terminating the declaration | 5138 * @return the semicolon terminating the declaration |
| 4427 */ | 5139 */ |
| 4428 Token get semicolon => _semicolon; | 5140 Token get semicolon => _semicolon; |
| 5141 |
| 5142 /** |
| 5143 * Return {@code true} if the fields are static. |
| 5144 * @return {@code true} if the fields are declared to be static |
| 5145 */ |
| 5146 bool isStatic() => _keyword != null; |
| 5147 |
| 4429 /** | 5148 /** |
| 4430 * Set the fields being declared to the given list of variables. | 5149 * Set the fields being declared to the given list of variables. |
| 4431 * @param fieldList the fields being declared | 5150 * @param fieldList the fields being declared |
| 4432 */ | 5151 */ |
| 4433 void set fields(VariableDeclarationList fieldList) { | 5152 void set fields(VariableDeclarationList fieldList) { |
| 4434 fieldList = becomeParentOf(fieldList); | 5153 fieldList = becomeParentOf(fieldList); |
| 4435 } | 5154 } |
| 5155 |
| 4436 /** | 5156 /** |
| 4437 * Set the token representing the 'static' keyword to the given token. | 5157 * Set the token representing the 'static' keyword to the given token. |
| 4438 * @param keyword the token representing the 'static' keyword | 5158 * @param keyword the token representing the 'static' keyword |
| 4439 */ | 5159 */ |
| 4440 void set keyword(Token keyword2) { | 5160 void set keyword(Token keyword2) { |
| 4441 this._keyword = keyword2; | 5161 this._keyword = keyword2; |
| 4442 } | 5162 } |
| 5163 |
| 4443 /** | 5164 /** |
| 4444 * Set the semicolon terminating the declaration to the given token. | 5165 * Set the semicolon terminating the declaration to the given token. |
| 4445 * @param semicolon the semicolon terminating the declaration | 5166 * @param semicolon the semicolon terminating the declaration |
| 4446 */ | 5167 */ |
| 4447 void set semicolon(Token semicolon2) { | 5168 void set semicolon(Token semicolon2) { |
| 4448 this._semicolon = semicolon2; | 5169 this._semicolon = semicolon2; |
| 4449 } | 5170 } |
| 4450 void visitChildren(ASTVisitor<Object> visitor) { | 5171 void visitChildren(ASTVisitor<Object> visitor) { |
| 4451 super.visitChildren(visitor); | 5172 super.visitChildren(visitor); |
| 4452 safelyVisitChild(_fieldList, visitor); | 5173 safelyVisitChild(_fieldList, visitor); |
| 4453 } | 5174 } |
| 4454 Token get firstTokenAfterCommentAndMetadata { | 5175 Token get firstTokenAfterCommentAndMetadata { |
| 4455 if (_keyword != null) { | 5176 if (_keyword != null) { |
| 4456 return _keyword; | 5177 return _keyword; |
| 4457 } | 5178 } |
| 4458 return _fieldList.beginToken; | 5179 return _fieldList.beginToken; |
| 4459 } | 5180 } |
| 4460 } | 5181 } |
| 5182 |
| 4461 /** | 5183 /** |
| 4462 * Instances of the class {@code FieldFormalParameter} represent a field formal
parameter. | 5184 * Instances of the class {@code FieldFormalParameter} represent a field formal
parameter. |
| 4463 * <pre> | 5185 * <pre> |
| 4464 * fieldFormalParameter ::= | 5186 * fieldFormalParameter ::= |
| 4465 * ('final' {@link TypeName type} | 'const' {@link TypeName type} | 'var' | {@li
nk TypeName type})? 'this' '.' {@link SimpleIdentifier identifier}</pre> | 5187 * ('final' {@link TypeName type} | 'const' {@link TypeName type} | 'var' | {@li
nk TypeName type})? 'this' '.' {@link SimpleIdentifier identifier}</pre> |
| 4466 * @coverage dart.engine.ast | 5188 * @coverage dart.engine.ast |
| 4467 */ | 5189 */ |
| 4468 class FieldFormalParameter extends NormalFormalParameter { | 5190 class FieldFormalParameter extends NormalFormalParameter { |
| 5191 |
| 4469 /** | 5192 /** |
| 4470 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no | 5193 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no |
| 4471 * keyword was used. | 5194 * keyword was used. |
| 4472 */ | 5195 */ |
| 4473 Token _keyword; | 5196 Token _keyword; |
| 5197 |
| 4474 /** | 5198 /** |
| 4475 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have | 5199 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have |
| 4476 * a declared type. | 5200 * a declared type. |
| 4477 */ | 5201 */ |
| 4478 TypeName _type; | 5202 TypeName _type; |
| 5203 |
| 4479 /** | 5204 /** |
| 4480 * The token representing the 'this' keyword. | 5205 * The token representing the 'this' keyword. |
| 4481 */ | 5206 */ |
| 4482 Token _thisToken; | 5207 Token _thisToken; |
| 5208 |
| 4483 /** | 5209 /** |
| 4484 * The token representing the period. | 5210 * The token representing the period. |
| 4485 */ | 5211 */ |
| 4486 Token _period; | 5212 Token _period; |
| 5213 |
| 4487 /** | 5214 /** |
| 4488 * Initialize a newly created formal parameter. | 5215 * Initialize a newly created formal parameter. |
| 4489 * @param comment the documentation comment associated with this parameter | 5216 * @param comment the documentation comment associated with this parameter |
| 4490 * @param metadata the annotations associated with this parameter | 5217 * @param metadata the annotations associated with this parameter |
| 4491 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 5218 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 4492 * @param type the name of the declared type of the parameter | 5219 * @param type the name of the declared type of the parameter |
| 4493 * @param thisToken the token representing the 'this' keyword | 5220 * @param thisToken the token representing the 'this' keyword |
| 4494 * @param period the token representing the period | 5221 * @param period the token representing the period |
| 4495 * @param identifier the name of the parameter being declared | 5222 * @param identifier the name of the parameter being declared |
| 4496 */ | 5223 */ |
| 4497 FieldFormalParameter.full(Comment comment, List<Annotation> metadata, Token ke
yword, TypeName type, Token thisToken, Token period, SimpleIdentifier identifier
) : super.full(comment, metadata, identifier) { | 5224 FieldFormalParameter.full(Comment comment, List<Annotation> metadata, Token ke
yword, TypeName type, Token thisToken, Token period, SimpleIdentifier identifier
) : super.full(comment, metadata, identifier) { |
| 4498 this._keyword = keyword; | 5225 this._keyword = keyword; |
| 4499 this._type = becomeParentOf(type); | 5226 this._type = becomeParentOf(type); |
| 4500 this._thisToken = thisToken; | 5227 this._thisToken = thisToken; |
| 4501 this._period = period; | 5228 this._period = period; |
| 4502 } | 5229 } |
| 5230 |
| 4503 /** | 5231 /** |
| 4504 * Initialize a newly created formal parameter. | 5232 * Initialize a newly created formal parameter. |
| 4505 * @param comment the documentation comment associated with this parameter | 5233 * @param comment the documentation comment associated with this parameter |
| 4506 * @param metadata the annotations associated with this parameter | 5234 * @param metadata the annotations associated with this parameter |
| 4507 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 5235 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 4508 * @param type the name of the declared type of the parameter | 5236 * @param type the name of the declared type of the parameter |
| 4509 * @param thisToken the token representing the 'this' keyword | 5237 * @param thisToken the token representing the 'this' keyword |
| 4510 * @param period the token representing the period | 5238 * @param period the token representing the period |
| 4511 * @param identifier the name of the parameter being declared | 5239 * @param identifier the name of the parameter being declared |
| 4512 */ | 5240 */ |
| 4513 FieldFormalParameter({Comment comment, List<Annotation> metadata, Token keywor
d, TypeName type, Token thisToken, Token period, SimpleIdentifier identifier}) :
this.full(comment, metadata, keyword, type, thisToken, period, identifier); | 5241 FieldFormalParameter({Comment comment, List<Annotation> metadata, Token keywor
d, TypeName type, Token thisToken, Token period, SimpleIdentifier identifier}) :
this.full(comment, metadata, keyword, type, thisToken, period, identifier); |
| 4514 accept(ASTVisitor visitor) => visitor.visitFieldFormalParameter(this); | 5242 accept(ASTVisitor visitor) => visitor.visitFieldFormalParameter(this); |
| 4515 Token get beginToken { | 5243 Token get beginToken { |
| 4516 if (_keyword != null) { | 5244 if (_keyword != null) { |
| 4517 return _keyword; | 5245 return _keyword; |
| 4518 } else if (_type != null) { | 5246 } else if (_type != null) { |
| 4519 return _type.beginToken; | 5247 return _type.beginToken; |
| 4520 } | 5248 } |
| 4521 return _thisToken; | 5249 return _thisToken; |
| 4522 } | 5250 } |
| 4523 Token get endToken => identifier.endToken; | 5251 Token get endToken => identifier.endToken; |
| 5252 |
| 4524 /** | 5253 /** |
| 4525 * Return the token representing either the 'final', 'const' or 'var' keyword. | 5254 * Return the token representing either the 'final', 'const' or 'var' keyword. |
| 4526 * @return the token representing either the 'final', 'const' or 'var' keyword | 5255 * @return the token representing either the 'final', 'const' or 'var' keyword |
| 4527 */ | 5256 */ |
| 4528 Token get keyword => _keyword; | 5257 Token get keyword => _keyword; |
| 5258 |
| 4529 /** | 5259 /** |
| 4530 * Return the token representing the period. | 5260 * Return the token representing the period. |
| 4531 * @return the token representing the period | 5261 * @return the token representing the period |
| 4532 */ | 5262 */ |
| 4533 Token get period => _period; | 5263 Token get period => _period; |
| 5264 |
| 4534 /** | 5265 /** |
| 4535 * Return the token representing the 'this' keyword. | 5266 * Return the token representing the 'this' keyword. |
| 4536 * @return the token representing the 'this' keyword | 5267 * @return the token representing the 'this' keyword |
| 4537 */ | 5268 */ |
| 4538 Token get thisToken => _thisToken; | 5269 Token get thisToken => _thisToken; |
| 5270 |
| 4539 /** | 5271 /** |
| 4540 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does | 5272 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does |
| 4541 * not have a declared type. | 5273 * not have a declared type. |
| 4542 * @return the name of the declared type of the parameter | 5274 * @return the name of the declared type of the parameter |
| 4543 */ | 5275 */ |
| 4544 TypeName get type => _type; | 5276 TypeName get type => _type; |
| 4545 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); | 5277 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); |
| 4546 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); | 5278 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); |
| 5279 |
| 4547 /** | 5280 /** |
| 4548 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. | 5281 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. |
| 4549 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 5282 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 4550 */ | 5283 */ |
| 4551 void set keyword(Token keyword2) { | 5284 void set keyword(Token keyword2) { |
| 4552 this._keyword = keyword2; | 5285 this._keyword = keyword2; |
| 4553 } | 5286 } |
| 5287 |
| 4554 /** | 5288 /** |
| 4555 * Set the token representing the period to the given token. | 5289 * Set the token representing the period to the given token. |
| 4556 * @param period the token representing the period | 5290 * @param period the token representing the period |
| 4557 */ | 5291 */ |
| 4558 void set period(Token period2) { | 5292 void set period(Token period2) { |
| 4559 this._period = period2; | 5293 this._period = period2; |
| 4560 } | 5294 } |
| 5295 |
| 4561 /** | 5296 /** |
| 4562 * Set the token representing the 'this' keyword to the given token. | 5297 * Set the token representing the 'this' keyword to the given token. |
| 4563 * @param thisToken the token representing the 'this' keyword | 5298 * @param thisToken the token representing the 'this' keyword |
| 4564 */ | 5299 */ |
| 4565 void set thisToken(Token thisToken2) { | 5300 void set thisToken(Token thisToken2) { |
| 4566 this._thisToken = thisToken2; | 5301 this._thisToken = thisToken2; |
| 4567 } | 5302 } |
| 5303 |
| 4568 /** | 5304 /** |
| 4569 * Set the name of the declared type of the parameter to the given type name. | 5305 * Set the name of the declared type of the parameter to the given type name. |
| 4570 * @param typeName the name of the declared type of the parameter | 5306 * @param typeName the name of the declared type of the parameter |
| 4571 */ | 5307 */ |
| 4572 void set type(TypeName typeName) { | 5308 void set type(TypeName typeName) { |
| 4573 _type = becomeParentOf(typeName); | 5309 _type = becomeParentOf(typeName); |
| 4574 } | 5310 } |
| 4575 void visitChildren(ASTVisitor<Object> visitor) { | 5311 void visitChildren(ASTVisitor<Object> visitor) { |
| 4576 super.visitChildren(visitor); | 5312 super.visitChildren(visitor); |
| 4577 safelyVisitChild(_type, visitor); | 5313 safelyVisitChild(_type, visitor); |
| 4578 safelyVisitChild(identifier, visitor); | 5314 safelyVisitChild(identifier, visitor); |
| 4579 } | 5315 } |
| 4580 } | 5316 } |
| 5317 |
| 4581 /** | 5318 /** |
| 4582 * Instances of the class {@code ForEachStatement} represent a for-each statemen
t. | 5319 * Instances of the class {@code ForEachStatement} represent a for-each statemen
t. |
| 4583 * <pre> | 5320 * <pre> |
| 4584 * forEachStatement ::= | 5321 * forEachStatement ::= |
| 4585 * 'for' '(' {@link SimpleFormalParameter loopParameter} 'in' {@link Expression
iterator} ')' {@link Block body}</pre> | 5322 * 'for' '(' {@link SimpleFormalParameter loopParameter} 'in' {@link Expression
iterator} ')' {@link Block body}</pre> |
| 4586 * @coverage dart.engine.ast | 5323 * @coverage dart.engine.ast |
| 4587 */ | 5324 */ |
| 4588 class ForEachStatement extends Statement { | 5325 class ForEachStatement extends Statement { |
| 5326 |
| 4589 /** | 5327 /** |
| 4590 * The token representing the 'for' keyword. | 5328 * The token representing the 'for' keyword. |
| 4591 */ | 5329 */ |
| 4592 Token _forKeyword; | 5330 Token _forKeyword; |
| 5331 |
| 4593 /** | 5332 /** |
| 4594 * The left parenthesis. | 5333 * The left parenthesis. |
| 4595 */ | 5334 */ |
| 4596 Token _leftParenthesis; | 5335 Token _leftParenthesis; |
| 5336 |
| 4597 /** | 5337 /** |
| 4598 * The declaration of the loop variable. | 5338 * The declaration of the loop variable. |
| 4599 */ | 5339 */ |
| 4600 DeclaredIdentifier _loopVariable; | 5340 DeclaredIdentifier _loopVariable; |
| 5341 |
| 4601 /** | 5342 /** |
| 4602 * The token representing the 'in' keyword. | 5343 * The token representing the 'in' keyword. |
| 4603 */ | 5344 */ |
| 4604 Token _inKeyword; | 5345 Token _inKeyword; |
| 5346 |
| 4605 /** | 5347 /** |
| 4606 * The expression evaluated to produce the iterator. | 5348 * The expression evaluated to produce the iterator. |
| 4607 */ | 5349 */ |
| 4608 Expression _iterator; | 5350 Expression _iterator; |
| 5351 |
| 4609 /** | 5352 /** |
| 4610 * The right parenthesis. | 5353 * The right parenthesis. |
| 4611 */ | 5354 */ |
| 4612 Token _rightParenthesis; | 5355 Token _rightParenthesis; |
| 5356 |
| 4613 /** | 5357 /** |
| 4614 * The body of the loop. | 5358 * The body of the loop. |
| 4615 */ | 5359 */ |
| 4616 Statement _body; | 5360 Statement _body; |
| 5361 |
| 4617 /** | 5362 /** |
| 4618 * Initialize a newly created for-each statement. | 5363 * Initialize a newly created for-each statement. |
| 4619 * @param forKeyword the token representing the 'for' keyword | 5364 * @param forKeyword the token representing the 'for' keyword |
| 4620 * @param leftParenthesis the left parenthesis | 5365 * @param leftParenthesis the left parenthesis |
| 4621 * @param loopVariable the declaration of the loop variable | 5366 * @param loopVariable the declaration of the loop variable |
| 4622 * @param iterator the expression evaluated to produce the iterator | 5367 * @param iterator the expression evaluated to produce the iterator |
| 4623 * @param rightParenthesis the right parenthesis | 5368 * @param rightParenthesis the right parenthesis |
| 4624 * @param body the body of the loop | 5369 * @param body the body of the loop |
| 4625 */ | 5370 */ |
| 4626 ForEachStatement.full(Token forKeyword, Token leftParenthesis, DeclaredIdentif
ier loopVariable, Token inKeyword, Expression iterator, Token rightParenthesis,
Statement body) { | 5371 ForEachStatement.full(Token forKeyword, Token leftParenthesis, DeclaredIdentif
ier loopVariable, Token inKeyword, Expression iterator, Token rightParenthesis,
Statement body) { |
| 4627 this._forKeyword = forKeyword; | 5372 this._forKeyword = forKeyword; |
| 4628 this._leftParenthesis = leftParenthesis; | 5373 this._leftParenthesis = leftParenthesis; |
| 4629 this._loopVariable = becomeParentOf(loopVariable); | 5374 this._loopVariable = becomeParentOf(loopVariable); |
| 4630 this._inKeyword = inKeyword; | 5375 this._inKeyword = inKeyword; |
| 4631 this._iterator = becomeParentOf(iterator); | 5376 this._iterator = becomeParentOf(iterator); |
| 4632 this._rightParenthesis = rightParenthesis; | 5377 this._rightParenthesis = rightParenthesis; |
| 4633 this._body = becomeParentOf(body); | 5378 this._body = becomeParentOf(body); |
| 4634 } | 5379 } |
| 5380 |
| 4635 /** | 5381 /** |
| 4636 * Initialize a newly created for-each statement. | 5382 * Initialize a newly created for-each statement. |
| 4637 * @param forKeyword the token representing the 'for' keyword | 5383 * @param forKeyword the token representing the 'for' keyword |
| 4638 * @param leftParenthesis the left parenthesis | 5384 * @param leftParenthesis the left parenthesis |
| 4639 * @param loopVariable the declaration of the loop variable | 5385 * @param loopVariable the declaration of the loop variable |
| 4640 * @param iterator the expression evaluated to produce the iterator | 5386 * @param iterator the expression evaluated to produce the iterator |
| 4641 * @param rightParenthesis the right parenthesis | 5387 * @param rightParenthesis the right parenthesis |
| 4642 * @param body the body of the loop | 5388 * @param body the body of the loop |
| 4643 */ | 5389 */ |
| 4644 ForEachStatement({Token forKeyword, Token leftParenthesis, DeclaredIdentifier
loopVariable, Token inKeyword, Expression iterator, Token rightParenthesis, Stat
ement body}) : this.full(forKeyword, leftParenthesis, loopVariable, inKeyword, i
terator, rightParenthesis, body); | 5390 ForEachStatement({Token forKeyword, Token leftParenthesis, DeclaredIdentifier
loopVariable, Token inKeyword, Expression iterator, Token rightParenthesis, Stat
ement body}) : this.full(forKeyword, leftParenthesis, loopVariable, inKeyword, i
terator, rightParenthesis, body); |
| 4645 accept(ASTVisitor visitor) => visitor.visitForEachStatement(this); | 5391 accept(ASTVisitor visitor) => visitor.visitForEachStatement(this); |
| 4646 Token get beginToken => _forKeyword; | 5392 Token get beginToken => _forKeyword; |
| 5393 |
| 4647 /** | 5394 /** |
| 4648 * Return the body of the loop. | 5395 * Return the body of the loop. |
| 4649 * @return the body of the loop | 5396 * @return the body of the loop |
| 4650 */ | 5397 */ |
| 4651 Statement get body => _body; | 5398 Statement get body => _body; |
| 4652 Token get endToken => _body.endToken; | 5399 Token get endToken => _body.endToken; |
| 5400 |
| 4653 /** | 5401 /** |
| 4654 * Return the token representing the 'for' keyword. | 5402 * Return the token representing the 'for' keyword. |
| 4655 * @return the token representing the 'for' keyword | 5403 * @return the token representing the 'for' keyword |
| 4656 */ | 5404 */ |
| 4657 Token get forKeyword => _forKeyword; | 5405 Token get forKeyword => _forKeyword; |
| 5406 |
| 4658 /** | 5407 /** |
| 4659 * Return the token representing the 'in' keyword. | 5408 * Return the token representing the 'in' keyword. |
| 4660 * @return the token representing the 'in' keyword | 5409 * @return the token representing the 'in' keyword |
| 4661 */ | 5410 */ |
| 4662 Token get inKeyword => _inKeyword; | 5411 Token get inKeyword => _inKeyword; |
| 5412 |
| 4663 /** | 5413 /** |
| 4664 * Return the expression evaluated to produce the iterator. | 5414 * Return the expression evaluated to produce the iterator. |
| 4665 * @return the expression evaluated to produce the iterator | 5415 * @return the expression evaluated to produce the iterator |
| 4666 */ | 5416 */ |
| 4667 Expression get iterator => _iterator; | 5417 Expression get iterator => _iterator; |
| 5418 |
| 4668 /** | 5419 /** |
| 4669 * Return the left parenthesis. | 5420 * Return the left parenthesis. |
| 4670 * @return the left parenthesis | 5421 * @return the left parenthesis |
| 4671 */ | 5422 */ |
| 4672 Token get leftParenthesis => _leftParenthesis; | 5423 Token get leftParenthesis => _leftParenthesis; |
| 5424 |
| 4673 /** | 5425 /** |
| 4674 * Return the declaration of the loop variable. | 5426 * Return the declaration of the loop variable. |
| 4675 * @return the declaration of the loop variable | 5427 * @return the declaration of the loop variable |
| 4676 */ | 5428 */ |
| 4677 DeclaredIdentifier get loopVariable => _loopVariable; | 5429 DeclaredIdentifier get loopVariable => _loopVariable; |
| 5430 |
| 4678 /** | 5431 /** |
| 4679 * Return the right parenthesis. | 5432 * Return the right parenthesis. |
| 4680 * @return the right parenthesis | 5433 * @return the right parenthesis |
| 4681 */ | 5434 */ |
| 4682 Token get rightParenthesis => _rightParenthesis; | 5435 Token get rightParenthesis => _rightParenthesis; |
| 5436 |
| 4683 /** | 5437 /** |
| 4684 * Set the body of the loop to the given block. | 5438 * Set the body of the loop to the given block. |
| 4685 * @param body the body of the loop | 5439 * @param body the body of the loop |
| 4686 */ | 5440 */ |
| 4687 void set body(Statement body2) { | 5441 void set body(Statement body2) { |
| 4688 this._body = becomeParentOf(body2); | 5442 this._body = becomeParentOf(body2); |
| 4689 } | 5443 } |
| 5444 |
| 4690 /** | 5445 /** |
| 4691 * Set the token representing the 'for' keyword to the given token. | 5446 * Set the token representing the 'for' keyword to the given token. |
| 4692 * @param forKeyword the token representing the 'for' keyword | 5447 * @param forKeyword the token representing the 'for' keyword |
| 4693 */ | 5448 */ |
| 4694 void set forKeyword(Token forKeyword2) { | 5449 void set forKeyword(Token forKeyword2) { |
| 4695 this._forKeyword = forKeyword2; | 5450 this._forKeyword = forKeyword2; |
| 4696 } | 5451 } |
| 5452 |
| 4697 /** | 5453 /** |
| 4698 * Set the token representing the 'in' keyword to the given token. | 5454 * Set the token representing the 'in' keyword to the given token. |
| 4699 * @param inKeyword the token representing the 'in' keyword | 5455 * @param inKeyword the token representing the 'in' keyword |
| 4700 */ | 5456 */ |
| 4701 void set inKeyword(Token inKeyword2) { | 5457 void set inKeyword(Token inKeyword2) { |
| 4702 this._inKeyword = inKeyword2; | 5458 this._inKeyword = inKeyword2; |
| 4703 } | 5459 } |
| 5460 |
| 4704 /** | 5461 /** |
| 4705 * Set the expression evaluated to produce the iterator to the given expressio
n. | 5462 * Set the expression evaluated to produce the iterator to the given expressio
n. |
| 4706 * @param expression the expression evaluated to produce the iterator | 5463 * @param expression the expression evaluated to produce the iterator |
| 4707 */ | 5464 */ |
| 4708 void set iterator(Expression expression) { | 5465 void set iterator(Expression expression) { |
| 4709 _iterator = becomeParentOf(expression); | 5466 _iterator = becomeParentOf(expression); |
| 4710 } | 5467 } |
| 5468 |
| 4711 /** | 5469 /** |
| 4712 * Set the left parenthesis to the given token. | 5470 * Set the left parenthesis to the given token. |
| 4713 * @param leftParenthesis the left parenthesis | 5471 * @param leftParenthesis the left parenthesis |
| 4714 */ | 5472 */ |
| 4715 void set leftParenthesis(Token leftParenthesis2) { | 5473 void set leftParenthesis(Token leftParenthesis2) { |
| 4716 this._leftParenthesis = leftParenthesis2; | 5474 this._leftParenthesis = leftParenthesis2; |
| 4717 } | 5475 } |
| 5476 |
| 4718 /** | 5477 /** |
| 4719 * Set the declaration of the loop variable to the given variable. | 5478 * Set the declaration of the loop variable to the given variable. |
| 4720 * @param variable the declaration of the loop variable | 5479 * @param variable the declaration of the loop variable |
| 4721 */ | 5480 */ |
| 4722 void set loopVariable(DeclaredIdentifier variable) { | 5481 void set loopVariable(DeclaredIdentifier variable) { |
| 4723 _loopVariable = becomeParentOf(variable); | 5482 _loopVariable = becomeParentOf(variable); |
| 4724 } | 5483 } |
| 5484 |
| 4725 /** | 5485 /** |
| 4726 * Set the right parenthesis to the given token. | 5486 * Set the right parenthesis to the given token. |
| 4727 * @param rightParenthesis the right parenthesis | 5487 * @param rightParenthesis the right parenthesis |
| 4728 */ | 5488 */ |
| 4729 void set rightParenthesis(Token rightParenthesis2) { | 5489 void set rightParenthesis(Token rightParenthesis2) { |
| 4730 this._rightParenthesis = rightParenthesis2; | 5490 this._rightParenthesis = rightParenthesis2; |
| 4731 } | 5491 } |
| 4732 void visitChildren(ASTVisitor<Object> visitor) { | 5492 void visitChildren(ASTVisitor<Object> visitor) { |
| 4733 safelyVisitChild(_loopVariable, visitor); | 5493 safelyVisitChild(_loopVariable, visitor); |
| 4734 safelyVisitChild(_iterator, visitor); | 5494 safelyVisitChild(_iterator, visitor); |
| 4735 safelyVisitChild(_body, visitor); | 5495 safelyVisitChild(_body, visitor); |
| 4736 } | 5496 } |
| 4737 } | 5497 } |
| 5498 |
| 4738 /** | 5499 /** |
| 4739 * Instances of the class {@code ForStatement} represent a for statement. | 5500 * Instances of the class {@code ForStatement} represent a for statement. |
| 4740 * <pre> | 5501 * <pre> |
| 4741 * forStatement ::= | 5502 * forStatement ::= |
| 4742 * 'for' '(' forLoopParts ')' {@link Statement statement}forLoopParts ::= | 5503 * 'for' '(' forLoopParts ')' {@link Statement statement}forLoopParts ::= |
| 4743 * forInitializerStatement ';' {@link Expression expression}? ';' {@link Express
ion expressionList}? | 5504 * forInitializerStatement ';' {@link Expression expression}? ';' {@link Express
ion expressionList}? |
| 4744 * forInitializerStatement ::={@link DefaultFormalParameter initializedVariableD
eclaration}| {@link Expression expression}? | 5505 * forInitializerStatement ::={@link DefaultFormalParameter initializedVariableD
eclaration}| {@link Expression expression}? |
| 4745 * </pre> | 5506 * </pre> |
| 4746 * @coverage dart.engine.ast | 5507 * @coverage dart.engine.ast |
| 4747 */ | 5508 */ |
| 4748 class ForStatement extends Statement { | 5509 class ForStatement extends Statement { |
| 5510 |
| 4749 /** | 5511 /** |
| 4750 * The token representing the 'for' keyword. | 5512 * The token representing the 'for' keyword. |
| 4751 */ | 5513 */ |
| 4752 Token _forKeyword; | 5514 Token _forKeyword; |
| 5515 |
| 4753 /** | 5516 /** |
| 4754 * The left parenthesis. | 5517 * The left parenthesis. |
| 4755 */ | 5518 */ |
| 4756 Token _leftParenthesis; | 5519 Token _leftParenthesis; |
| 5520 |
| 4757 /** | 5521 /** |
| 4758 * The declaration of the loop variables, or {@code null} if there are no vari
ables. Note that a | 5522 * The declaration of the loop variables, or {@code null} if there are no vari
ables. Note that a |
| 4759 * for statement cannot have both a variable list and an initialization expres
sion, but can | 5523 * for statement cannot have both a variable list and an initialization expres
sion, but can |
| 4760 * validly have neither. | 5524 * validly have neither. |
| 4761 */ | 5525 */ |
| 4762 VariableDeclarationList _variableList; | 5526 VariableDeclarationList _variableList; |
| 5527 |
| 4763 /** | 5528 /** |
| 4764 * The initialization expression, or {@code null} if there is no initializatio
n expression. Note | 5529 * The initialization expression, or {@code null} if there is no initializatio
n expression. Note |
| 4765 * that a for statement cannot have both a variable list and an initialization
expression, but can | 5530 * that a for statement cannot have both a variable list and an initialization
expression, but can |
| 4766 * validly have neither. | 5531 * validly have neither. |
| 4767 */ | 5532 */ |
| 4768 Expression _initialization; | 5533 Expression _initialization; |
| 5534 |
| 4769 /** | 5535 /** |
| 4770 * The semicolon separating the initializer and the condition. | 5536 * The semicolon separating the initializer and the condition. |
| 4771 */ | 5537 */ |
| 4772 Token _leftSeparator; | 5538 Token _leftSeparator; |
| 5539 |
| 4773 /** | 5540 /** |
| 4774 * The condition used to determine when to terminate the loop. | 5541 * The condition used to determine when to terminate the loop. |
| 4775 */ | 5542 */ |
| 4776 Expression _condition; | 5543 Expression _condition; |
| 5544 |
| 4777 /** | 5545 /** |
| 4778 * The semicolon separating the condition and the updater. | 5546 * The semicolon separating the condition and the updater. |
| 4779 */ | 5547 */ |
| 4780 Token _rightSeparator; | 5548 Token _rightSeparator; |
| 5549 |
| 4781 /** | 5550 /** |
| 4782 * The list of expressions run after each execution of the loop body. | 5551 * The list of expressions run after each execution of the loop body. |
| 4783 */ | 5552 */ |
| 4784 NodeList<Expression> _updaters; | 5553 NodeList<Expression> _updaters; |
| 5554 |
| 4785 /** | 5555 /** |
| 4786 * The right parenthesis. | 5556 * The right parenthesis. |
| 4787 */ | 5557 */ |
| 4788 Token _rightParenthesis; | 5558 Token _rightParenthesis; |
| 5559 |
| 4789 /** | 5560 /** |
| 4790 * The body of the loop. | 5561 * The body of the loop. |
| 4791 */ | 5562 */ |
| 4792 Statement _body; | 5563 Statement _body; |
| 5564 |
| 4793 /** | 5565 /** |
| 4794 * Initialize a newly created for statement. | 5566 * Initialize a newly created for statement. |
| 4795 * @param forKeyword the token representing the 'for' keyword | 5567 * @param forKeyword the token representing the 'for' keyword |
| 4796 * @param leftParenthesis the left parenthesis | 5568 * @param leftParenthesis the left parenthesis |
| 4797 * @param variableList the declaration of the loop variables | 5569 * @param variableList the declaration of the loop variables |
| 4798 * @param initialization the initialization expression | 5570 * @param initialization the initialization expression |
| 4799 * @param leftSeparator the semicolon separating the initializer and the condi
tion | 5571 * @param leftSeparator the semicolon separating the initializer and the condi
tion |
| 4800 * @param condition the condition used to determine when to terminate the loop | 5572 * @param condition the condition used to determine when to terminate the loop |
| 4801 * @param rightSeparator the semicolon separating the condition and the update
r | 5573 * @param rightSeparator the semicolon separating the condition and the update
r |
| 4802 * @param updaters the list of expressions run after each execution of the loo
p body | 5574 * @param updaters the list of expressions run after each execution of the loo
p body |
| 4803 * @param rightParenthesis the right parenthesis | 5575 * @param rightParenthesis the right parenthesis |
| 4804 * @param body the body of the loop | 5576 * @param body the body of the loop |
| 4805 */ | 5577 */ |
| 4806 ForStatement.full(Token forKeyword, Token leftParenthesis, VariableDeclaration
List variableList, Expression initialization, Token leftSeparator, Expression co
ndition, Token rightSeparator, List<Expression> updaters, Token rightParenthesis
, Statement body) { | 5578 ForStatement.full(Token forKeyword, Token leftParenthesis, VariableDeclaration
List variableList, Expression initialization, Token leftSeparator, Expression co
ndition, Token rightSeparator, List<Expression> updaters, Token rightParenthesis
, Statement body) { |
| 4807 this._updaters = new NodeList<Expression>(this); | 5579 this._updaters = new NodeList<Expression>(this); |
| 4808 this._forKeyword = forKeyword; | 5580 this._forKeyword = forKeyword; |
| 4809 this._leftParenthesis = leftParenthesis; | 5581 this._leftParenthesis = leftParenthesis; |
| 4810 this._variableList = becomeParentOf(variableList); | 5582 this._variableList = becomeParentOf(variableList); |
| 4811 this._initialization = becomeParentOf(initialization); | 5583 this._initialization = becomeParentOf(initialization); |
| 4812 this._leftSeparator = leftSeparator; | 5584 this._leftSeparator = leftSeparator; |
| 4813 this._condition = becomeParentOf(condition); | 5585 this._condition = becomeParentOf(condition); |
| 4814 this._rightSeparator = rightSeparator; | 5586 this._rightSeparator = rightSeparator; |
| 4815 this._updaters.addAll(updaters); | 5587 this._updaters.addAll(updaters); |
| 4816 this._rightParenthesis = rightParenthesis; | 5588 this._rightParenthesis = rightParenthesis; |
| 4817 this._body = becomeParentOf(body); | 5589 this._body = becomeParentOf(body); |
| 4818 } | 5590 } |
| 5591 |
| 4819 /** | 5592 /** |
| 4820 * Initialize a newly created for statement. | 5593 * Initialize a newly created for statement. |
| 4821 * @param forKeyword the token representing the 'for' keyword | 5594 * @param forKeyword the token representing the 'for' keyword |
| 4822 * @param leftParenthesis the left parenthesis | 5595 * @param leftParenthesis the left parenthesis |
| 4823 * @param variableList the declaration of the loop variables | 5596 * @param variableList the declaration of the loop variables |
| 4824 * @param initialization the initialization expression | 5597 * @param initialization the initialization expression |
| 4825 * @param leftSeparator the semicolon separating the initializer and the condi
tion | 5598 * @param leftSeparator the semicolon separating the initializer and the condi
tion |
| 4826 * @param condition the condition used to determine when to terminate the loop | 5599 * @param condition the condition used to determine when to terminate the loop |
| 4827 * @param rightSeparator the semicolon separating the condition and the update
r | 5600 * @param rightSeparator the semicolon separating the condition and the update
r |
| 4828 * @param updaters the list of expressions run after each execution of the loo
p body | 5601 * @param updaters the list of expressions run after each execution of the loo
p body |
| 4829 * @param rightParenthesis the right parenthesis | 5602 * @param rightParenthesis the right parenthesis |
| 4830 * @param body the body of the loop | 5603 * @param body the body of the loop |
| 4831 */ | 5604 */ |
| 4832 ForStatement({Token forKeyword, Token leftParenthesis, VariableDeclarationList
variableList, Expression initialization, Token leftSeparator, Expression condit
ion, Token rightSeparator, List<Expression> updaters, Token rightParenthesis, St
atement body}) : this.full(forKeyword, leftParenthesis, variableList, initializa
tion, leftSeparator, condition, rightSeparator, updaters, rightParenthesis, body
); | 5605 ForStatement({Token forKeyword, Token leftParenthesis, VariableDeclarationList
variableList, Expression initialization, Token leftSeparator, Expression condit
ion, Token rightSeparator, List<Expression> updaters, Token rightParenthesis, St
atement body}) : this.full(forKeyword, leftParenthesis, variableList, initializa
tion, leftSeparator, condition, rightSeparator, updaters, rightParenthesis, body
); |
| 4833 accept(ASTVisitor visitor) => visitor.visitForStatement(this); | 5606 accept(ASTVisitor visitor) => visitor.visitForStatement(this); |
| 4834 Token get beginToken => _forKeyword; | 5607 Token get beginToken => _forKeyword; |
| 5608 |
| 4835 /** | 5609 /** |
| 4836 * Return the body of the loop. | 5610 * Return the body of the loop. |
| 4837 * @return the body of the loop | 5611 * @return the body of the loop |
| 4838 */ | 5612 */ |
| 4839 Statement get body => _body; | 5613 Statement get body => _body; |
| 5614 |
| 4840 /** | 5615 /** |
| 4841 * Return the condition used to determine when to terminate the loop. | 5616 * Return the condition used to determine when to terminate the loop. |
| 4842 * @return the condition used to determine when to terminate the loop | 5617 * @return the condition used to determine when to terminate the loop |
| 4843 */ | 5618 */ |
| 4844 Expression get condition => _condition; | 5619 Expression get condition => _condition; |
| 4845 Token get endToken => _body.endToken; | 5620 Token get endToken => _body.endToken; |
| 5621 |
| 4846 /** | 5622 /** |
| 4847 * Return the token representing the 'for' keyword. | 5623 * Return the token representing the 'for' keyword. |
| 4848 * @return the token representing the 'for' keyword | 5624 * @return the token representing the 'for' keyword |
| 4849 */ | 5625 */ |
| 4850 Token get forKeyword => _forKeyword; | 5626 Token get forKeyword => _forKeyword; |
| 5627 |
| 4851 /** | 5628 /** |
| 4852 * Return the initialization expression, or {@code null} if there is no initia
lization expression. | 5629 * Return the initialization expression, or {@code null} if there is no initia
lization expression. |
| 4853 * @return the initialization expression | 5630 * @return the initialization expression |
| 4854 */ | 5631 */ |
| 4855 Expression get initialization => _initialization; | 5632 Expression get initialization => _initialization; |
| 5633 |
| 4856 /** | 5634 /** |
| 4857 * Return the left parenthesis. | 5635 * Return the left parenthesis. |
| 4858 * @return the left parenthesis | 5636 * @return the left parenthesis |
| 4859 */ | 5637 */ |
| 4860 Token get leftParenthesis => _leftParenthesis; | 5638 Token get leftParenthesis => _leftParenthesis; |
| 5639 |
| 4861 /** | 5640 /** |
| 4862 * Return the semicolon separating the initializer and the condition. | 5641 * Return the semicolon separating the initializer and the condition. |
| 4863 * @return the semicolon separating the initializer and the condition | 5642 * @return the semicolon separating the initializer and the condition |
| 4864 */ | 5643 */ |
| 4865 Token get leftSeparator => _leftSeparator; | 5644 Token get leftSeparator => _leftSeparator; |
| 5645 |
| 4866 /** | 5646 /** |
| 4867 * Return the right parenthesis. | 5647 * Return the right parenthesis. |
| 4868 * @return the right parenthesis | 5648 * @return the right parenthesis |
| 4869 */ | 5649 */ |
| 4870 Token get rightParenthesis => _rightParenthesis; | 5650 Token get rightParenthesis => _rightParenthesis; |
| 5651 |
| 4871 /** | 5652 /** |
| 4872 * Return the semicolon separating the condition and the updater. | 5653 * Return the semicolon separating the condition and the updater. |
| 4873 * @return the semicolon separating the condition and the updater | 5654 * @return the semicolon separating the condition and the updater |
| 4874 */ | 5655 */ |
| 4875 Token get rightSeparator => _rightSeparator; | 5656 Token get rightSeparator => _rightSeparator; |
| 5657 |
| 4876 /** | 5658 /** |
| 4877 * Return the list of expressions run after each execution of the loop body. | 5659 * Return the list of expressions run after each execution of the loop body. |
| 4878 * @return the list of expressions run after each execution of the loop body | 5660 * @return the list of expressions run after each execution of the loop body |
| 4879 */ | 5661 */ |
| 4880 NodeList<Expression> get updaters => _updaters; | 5662 NodeList<Expression> get updaters => _updaters; |
| 5663 |
| 4881 /** | 5664 /** |
| 4882 * Return the declaration of the loop variables, or {@code null} if there are
no variables. | 5665 * Return the declaration of the loop variables, or {@code null} if there are
no variables. |
| 4883 * @return the declaration of the loop variables, or {@code null} if there are
no variables | 5666 * @return the declaration of the loop variables, or {@code null} if there are
no variables |
| 4884 */ | 5667 */ |
| 4885 VariableDeclarationList get variables => _variableList; | 5668 VariableDeclarationList get variables => _variableList; |
| 5669 |
| 4886 /** | 5670 /** |
| 4887 * Set the body of the loop to the given statement. | 5671 * Set the body of the loop to the given statement. |
| 4888 * @param body the body of the loop | 5672 * @param body the body of the loop |
| 4889 */ | 5673 */ |
| 4890 void set body(Statement body2) { | 5674 void set body(Statement body2) { |
| 4891 this._body = becomeParentOf(body2); | 5675 this._body = becomeParentOf(body2); |
| 4892 } | 5676 } |
| 5677 |
| 4893 /** | 5678 /** |
| 4894 * Set the condition used to determine when to terminate the loop to the given
expression. | 5679 * Set the condition used to determine when to terminate the loop to the given
expression. |
| 4895 * @param expression the condition used to determine when to terminate the loo
p | 5680 * @param expression the condition used to determine when to terminate the loo
p |
| 4896 */ | 5681 */ |
| 4897 void set condition(Expression expression) { | 5682 void set condition(Expression expression) { |
| 4898 _condition = becomeParentOf(expression); | 5683 _condition = becomeParentOf(expression); |
| 4899 } | 5684 } |
| 5685 |
| 4900 /** | 5686 /** |
| 4901 * Set the token representing the 'for' keyword to the given token. | 5687 * Set the token representing the 'for' keyword to the given token. |
| 4902 * @param forKeyword the token representing the 'for' keyword | 5688 * @param forKeyword the token representing the 'for' keyword |
| 4903 */ | 5689 */ |
| 4904 void set forKeyword(Token forKeyword2) { | 5690 void set forKeyword(Token forKeyword2) { |
| 4905 this._forKeyword = forKeyword2; | 5691 this._forKeyword = forKeyword2; |
| 4906 } | 5692 } |
| 5693 |
| 4907 /** | 5694 /** |
| 4908 * Set the initialization expression to the given expression. | 5695 * Set the initialization expression to the given expression. |
| 4909 * @param initialization the initialization expression | 5696 * @param initialization the initialization expression |
| 4910 */ | 5697 */ |
| 4911 void set initialization(Expression initialization2) { | 5698 void set initialization(Expression initialization2) { |
| 4912 this._initialization = becomeParentOf(initialization2); | 5699 this._initialization = becomeParentOf(initialization2); |
| 4913 } | 5700 } |
| 5701 |
| 4914 /** | 5702 /** |
| 4915 * Set the left parenthesis to the given token. | 5703 * Set the left parenthesis to the given token. |
| 4916 * @param leftParenthesis the left parenthesis | 5704 * @param leftParenthesis the left parenthesis |
| 4917 */ | 5705 */ |
| 4918 void set leftParenthesis(Token leftParenthesis2) { | 5706 void set leftParenthesis(Token leftParenthesis2) { |
| 4919 this._leftParenthesis = leftParenthesis2; | 5707 this._leftParenthesis = leftParenthesis2; |
| 4920 } | 5708 } |
| 5709 |
| 4921 /** | 5710 /** |
| 4922 * Set the semicolon separating the initializer and the condition to the given
token. | 5711 * Set the semicolon separating the initializer and the condition to the given
token. |
| 4923 * @param leftSeparator the semicolon separating the initializer and the condi
tion | 5712 * @param leftSeparator the semicolon separating the initializer and the condi
tion |
| 4924 */ | 5713 */ |
| 4925 void set leftSeparator(Token leftSeparator2) { | 5714 void set leftSeparator(Token leftSeparator2) { |
| 4926 this._leftSeparator = leftSeparator2; | 5715 this._leftSeparator = leftSeparator2; |
| 4927 } | 5716 } |
| 5717 |
| 4928 /** | 5718 /** |
| 4929 * Set the right parenthesis to the given token. | 5719 * Set the right parenthesis to the given token. |
| 4930 * @param rightParenthesis the right parenthesis | 5720 * @param rightParenthesis the right parenthesis |
| 4931 */ | 5721 */ |
| 4932 void set rightParenthesis(Token rightParenthesis2) { | 5722 void set rightParenthesis(Token rightParenthesis2) { |
| 4933 this._rightParenthesis = rightParenthesis2; | 5723 this._rightParenthesis = rightParenthesis2; |
| 4934 } | 5724 } |
| 5725 |
| 4935 /** | 5726 /** |
| 4936 * Set the semicolon separating the condition and the updater to the given tok
en. | 5727 * Set the semicolon separating the condition and the updater to the given tok
en. |
| 4937 * @param rightSeparator the semicolon separating the condition and the update
r | 5728 * @param rightSeparator the semicolon separating the condition and the update
r |
| 4938 */ | 5729 */ |
| 4939 void set rightSeparator(Token rightSeparator2) { | 5730 void set rightSeparator(Token rightSeparator2) { |
| 4940 this._rightSeparator = rightSeparator2; | 5731 this._rightSeparator = rightSeparator2; |
| 4941 } | 5732 } |
| 5733 |
| 4942 /** | 5734 /** |
| 4943 * Set the declaration of the loop variables to the given parameter. | 5735 * Set the declaration of the loop variables to the given parameter. |
| 4944 * @param variableList the declaration of the loop variables | 5736 * @param variableList the declaration of the loop variables |
| 4945 */ | 5737 */ |
| 4946 void set variables(VariableDeclarationList variableList) { | 5738 void set variables(VariableDeclarationList variableList) { |
| 4947 variableList = becomeParentOf(variableList); | 5739 variableList = becomeParentOf(variableList); |
| 4948 } | 5740 } |
| 4949 void visitChildren(ASTVisitor<Object> visitor) { | 5741 void visitChildren(ASTVisitor<Object> visitor) { |
| 4950 safelyVisitChild(_variableList, visitor); | 5742 safelyVisitChild(_variableList, visitor); |
| 4951 safelyVisitChild(_initialization, visitor); | 5743 safelyVisitChild(_initialization, visitor); |
| 4952 safelyVisitChild(_condition, visitor); | 5744 safelyVisitChild(_condition, visitor); |
| 4953 _updaters.accept(visitor); | 5745 _updaters.accept(visitor); |
| 4954 safelyVisitChild(_body, visitor); | 5746 safelyVisitChild(_body, visitor); |
| 4955 } | 5747 } |
| 4956 } | 5748 } |
| 5749 |
| 4957 /** | 5750 /** |
| 4958 * The abstract class {@code FormalParameter} defines the behavior of objects re
presenting a | 5751 * The abstract class {@code FormalParameter} defines the behavior of objects re
presenting a |
| 4959 * parameter to a function. | 5752 * parameter to a function. |
| 4960 * <pre> | 5753 * <pre> |
| 4961 * formalParameter ::={@link NormalFormalParameter normalFormalParameter}| {@lin
k DefaultFormalParameter namedFormalParameter}| {@link DefaultFormalParameter op
tionalFormalParameter}</pre> | 5754 * formalParameter ::={@link NormalFormalParameter normalFormalParameter}| {@lin
k DefaultFormalParameter namedFormalParameter}| {@link DefaultFormalParameter op
tionalFormalParameter}</pre> |
| 4962 * @coverage dart.engine.ast | 5755 * @coverage dart.engine.ast |
| 4963 */ | 5756 */ |
| 4964 abstract class FormalParameter extends ASTNode { | 5757 abstract class FormalParameter extends ASTNode { |
| 5758 |
| 4965 /** | 5759 /** |
| 4966 * Return the element representing this parameter, or {@code null} if this par
ameter has not been | 5760 * Return the element representing this parameter, or {@code null} if this par
ameter has not been |
| 4967 * resolved. | 5761 * resolved. |
| 4968 * @return the element representing this parameter | 5762 * @return the element representing this parameter |
| 4969 */ | 5763 */ |
| 4970 ParameterElement get element { | 5764 ParameterElement get element { |
| 4971 SimpleIdentifier identifier2 = identifier; | 5765 SimpleIdentifier identifier2 = identifier; |
| 4972 if (identifier2 == null) { | 5766 if (identifier2 == null) { |
| 4973 return null; | 5767 return null; |
| 4974 } | 5768 } |
| 4975 return identifier2.element as ParameterElement; | 5769 return identifier2.element as ParameterElement; |
| 4976 } | 5770 } |
| 5771 |
| 4977 /** | 5772 /** |
| 4978 * Return the name of the parameter being declared. | 5773 * Return the name of the parameter being declared. |
| 4979 * @return the name of the parameter being declared | 5774 * @return the name of the parameter being declared |
| 4980 */ | 5775 */ |
| 4981 SimpleIdentifier get identifier; | 5776 SimpleIdentifier get identifier; |
| 5777 |
| 4982 /** | 5778 /** |
| 4983 * Return the kind of this parameter. | 5779 * Return the kind of this parameter. |
| 4984 * @return the kind of this parameter | 5780 * @return the kind of this parameter |
| 4985 */ | 5781 */ |
| 4986 ParameterKind get kind; | 5782 ParameterKind get kind; |
| 4987 } | 5783 } |
| 5784 |
| 4988 /** | 5785 /** |
| 4989 * Instances of the class {@code FormalParameterList} represent the formal param
eter list of a | 5786 * Instances of the class {@code FormalParameterList} represent the formal param
eter list of a |
| 4990 * method declaration, function declaration, or function type alias. | 5787 * method declaration, function declaration, or function type alias. |
| 4991 * <p> | 5788 * <p> |
| 4992 * While the grammar requires all optional formal parameters to follow all of th
e normal formal | 5789 * While the grammar requires all optional formal parameters to follow all of th
e normal formal |
| 4993 * parameters and at most one grouping of optional formal parameters, this class
does not enforce | 5790 * parameters and at most one grouping of optional formal parameters, this class
does not enforce |
| 4994 * those constraints. All parameters are flattened into a single list, which can
have any or all | 5791 * those constraints. All parameters are flattened into a single list, which can
have any or all |
| 4995 * kinds of parameters (normal, named, and positional) in any order. | 5792 * kinds of parameters (normal, named, and positional) in any order. |
| 4996 * <pre> | 5793 * <pre> |
| 4997 * formalParameterList ::= | 5794 * formalParameterList ::= |
| 4998 * '(' ')' | 5795 * '(' ')' |
| 4999 * | '(' normalFormalParameters (',' optionalFormalParameters)? ')' | 5796 * | '(' normalFormalParameters (',' optionalFormalParameters)? ')' |
| 5000 * | '(' optionalFormalParameters ')' | 5797 * | '(' optionalFormalParameters ')' |
| 5001 * normalFormalParameters ::={@link NormalFormalParameter normalFormalParameter}
(',' {@link NormalFormalParameter normalFormalParameter}) | 5798 * normalFormalParameters ::={@link NormalFormalParameter normalFormalParameter}
(',' {@link NormalFormalParameter normalFormalParameter}) |
| 5002 * optionalFormalParameters ::= | 5799 * optionalFormalParameters ::= |
| 5003 * optionalPositionalFormalParameters | 5800 * optionalPositionalFormalParameters |
| 5004 * | namedFormalParameters | 5801 * | namedFormalParameters |
| 5005 * optionalPositionalFormalParameters ::= | 5802 * optionalPositionalFormalParameters ::= |
| 5006 * '\[' {@link DefaultFormalParameter positionalFormalParameter} (',' {@link Def
aultFormalParameter positionalFormalParameter})* '\]' | 5803 * '\[' {@link DefaultFormalParameter positionalFormalParameter} (',' {@link Def
aultFormalParameter positionalFormalParameter})* '\]' |
| 5007 * namedFormalParameters ::= | 5804 * namedFormalParameters ::= |
| 5008 * '{' {@link DefaultFormalParameter namedFormalParameter} (',' {@link DefaultFo
rmalParameter namedFormalParameter})* '}' | 5805 * '{' {@link DefaultFormalParameter namedFormalParameter} (',' {@link DefaultFo
rmalParameter namedFormalParameter})* '}' |
| 5009 * </pre> | 5806 * </pre> |
| 5010 * @coverage dart.engine.ast | 5807 * @coverage dart.engine.ast |
| 5011 */ | 5808 */ |
| 5012 class FormalParameterList extends ASTNode { | 5809 class FormalParameterList extends ASTNode { |
| 5810 |
| 5013 /** | 5811 /** |
| 5014 * The left parenthesis. | 5812 * The left parenthesis. |
| 5015 */ | 5813 */ |
| 5016 Token _leftParenthesis; | 5814 Token _leftParenthesis; |
| 5815 |
| 5017 /** | 5816 /** |
| 5018 * The parameters associated with the method. | 5817 * The parameters associated with the method. |
| 5019 */ | 5818 */ |
| 5020 NodeList<FormalParameter> _parameters; | 5819 NodeList<FormalParameter> _parameters; |
| 5820 |
| 5021 /** | 5821 /** |
| 5022 * The left square bracket ('\[') or left curly brace ('{') introducing the op
tional parameters. | 5822 * The left square bracket ('\[') or left curly brace ('{') introducing the op
tional parameters. |
| 5023 */ | 5823 */ |
| 5024 Token _leftDelimiter; | 5824 Token _leftDelimiter; |
| 5825 |
| 5025 /** | 5826 /** |
| 5026 * The right square bracket ('\]') or right curly brace ('}') introducing the
optional parameters. | 5827 * The right square bracket ('\]') or right curly brace ('}') introducing the
optional parameters. |
| 5027 */ | 5828 */ |
| 5028 Token _rightDelimiter; | 5829 Token _rightDelimiter; |
| 5830 |
| 5029 /** | 5831 /** |
| 5030 * The right parenthesis. | 5832 * The right parenthesis. |
| 5031 */ | 5833 */ |
| 5032 Token _rightParenthesis; | 5834 Token _rightParenthesis; |
| 5835 |
| 5033 /** | 5836 /** |
| 5034 * Initialize a newly created parameter list. | 5837 * Initialize a newly created parameter list. |
| 5035 * @param leftParenthesis the left parenthesis | 5838 * @param leftParenthesis the left parenthesis |
| 5036 * @param parameters the parameters associated with the method | 5839 * @param parameters the parameters associated with the method |
| 5037 * @param leftDelimiter the left delimiter introducing the optional parameters | 5840 * @param leftDelimiter the left delimiter introducing the optional parameters |
| 5038 * @param rightDelimiter the right delimiter introducing the optional paramete
rs | 5841 * @param rightDelimiter the right delimiter introducing the optional paramete
rs |
| 5039 * @param rightParenthesis the right parenthesis | 5842 * @param rightParenthesis the right parenthesis |
| 5040 */ | 5843 */ |
| 5041 FormalParameterList.full(Token leftParenthesis, List<FormalParameter> paramete
rs, Token leftDelimiter, Token rightDelimiter, Token rightParenthesis) { | 5844 FormalParameterList.full(Token leftParenthesis, List<FormalParameter> paramete
rs, Token leftDelimiter, Token rightDelimiter, Token rightParenthesis) { |
| 5042 this._parameters = new NodeList<FormalParameter>(this); | 5845 this._parameters = new NodeList<FormalParameter>(this); |
| 5043 this._leftParenthesis = leftParenthesis; | 5846 this._leftParenthesis = leftParenthesis; |
| 5044 this._parameters.addAll(parameters); | 5847 this._parameters.addAll(parameters); |
| 5045 this._leftDelimiter = leftDelimiter; | 5848 this._leftDelimiter = leftDelimiter; |
| 5046 this._rightDelimiter = rightDelimiter; | 5849 this._rightDelimiter = rightDelimiter; |
| 5047 this._rightParenthesis = rightParenthesis; | 5850 this._rightParenthesis = rightParenthesis; |
| 5048 } | 5851 } |
| 5852 |
| 5049 /** | 5853 /** |
| 5050 * Initialize a newly created parameter list. | 5854 * Initialize a newly created parameter list. |
| 5051 * @param leftParenthesis the left parenthesis | 5855 * @param leftParenthesis the left parenthesis |
| 5052 * @param parameters the parameters associated with the method | 5856 * @param parameters the parameters associated with the method |
| 5053 * @param leftDelimiter the left delimiter introducing the optional parameters | 5857 * @param leftDelimiter the left delimiter introducing the optional parameters |
| 5054 * @param rightDelimiter the right delimiter introducing the optional paramete
rs | 5858 * @param rightDelimiter the right delimiter introducing the optional paramete
rs |
| 5055 * @param rightParenthesis the right parenthesis | 5859 * @param rightParenthesis the right parenthesis |
| 5056 */ | 5860 */ |
| 5057 FormalParameterList({Token leftParenthesis, List<FormalParameter> parameters,
Token leftDelimiter, Token rightDelimiter, Token rightParenthesis}) : this.full(
leftParenthesis, parameters, leftDelimiter, rightDelimiter, rightParenthesis); | 5861 FormalParameterList({Token leftParenthesis, List<FormalParameter> parameters,
Token leftDelimiter, Token rightDelimiter, Token rightParenthesis}) : this.full(
leftParenthesis, parameters, leftDelimiter, rightDelimiter, rightParenthesis); |
| 5058 accept(ASTVisitor visitor) => visitor.visitFormalParameterList(this); | 5862 accept(ASTVisitor visitor) => visitor.visitFormalParameterList(this); |
| 5059 Token get beginToken => _leftParenthesis; | 5863 Token get beginToken => _leftParenthesis; |
| 5864 |
| 5060 /** | 5865 /** |
| 5061 * Return an array containing the elements representing the parameters in this
list. The array | 5866 * Return an array containing the elements representing the parameters in this
list. The array |
| 5062 * will contain {@code null}s if the parameters in this list have not been res
olved. | 5867 * will contain {@code null}s if the parameters in this list have not been res
olved. |
| 5063 * @return the elements representing the parameters in this list | 5868 * @return the elements representing the parameters in this list |
| 5064 */ | 5869 */ |
| 5065 List<ParameterElement> get elements { | 5870 List<ParameterElement> get elements { |
| 5066 int count = _parameters.length; | 5871 int count = _parameters.length; |
| 5067 List<ParameterElement> types = new List<ParameterElement>(count); | 5872 List<ParameterElement> types = new List<ParameterElement>(count); |
| 5068 for (int i = 0; i < count; i++) { | 5873 for (int i = 0; i < count; i++) { |
| 5069 types[i] = _parameters[i].element; | 5874 types[i] = _parameters[i].element; |
| 5070 } | 5875 } |
| 5071 return types; | 5876 return types; |
| 5072 } | 5877 } |
| 5073 Token get endToken => _rightParenthesis; | 5878 Token get endToken => _rightParenthesis; |
| 5879 |
| 5074 /** | 5880 /** |
| 5075 * Return the left square bracket ('\[') or left curly brace ('{') introducing
the optional | 5881 * Return the left square bracket ('\[') or left curly brace ('{') introducing
the optional |
| 5076 * parameters. | 5882 * parameters. |
| 5077 * @return the left square bracket ('\[') or left curly brace ('{') introducin
g the optional | 5883 * @return the left square bracket ('\[') or left curly brace ('{') introducin
g the optional |
| 5078 * parameters | 5884 * parameters |
| 5079 */ | 5885 */ |
| 5080 Token get leftDelimiter => _leftDelimiter; | 5886 Token get leftDelimiter => _leftDelimiter; |
| 5887 |
| 5081 /** | 5888 /** |
| 5082 * Return the left parenthesis. | 5889 * Return the left parenthesis. |
| 5083 * @return the left parenthesis | 5890 * @return the left parenthesis |
| 5084 */ | 5891 */ |
| 5085 Token get leftParenthesis => _leftParenthesis; | 5892 Token get leftParenthesis => _leftParenthesis; |
| 5893 |
| 5086 /** | 5894 /** |
| 5087 * Return the parameters associated with the method. | 5895 * Return the parameters associated with the method. |
| 5088 * @return the parameters associated with the method | 5896 * @return the parameters associated with the method |
| 5089 */ | 5897 */ |
| 5090 NodeList<FormalParameter> get parameters => _parameters; | 5898 NodeList<FormalParameter> get parameters => _parameters; |
| 5899 |
| 5091 /** | 5900 /** |
| 5092 * Return the right square bracket ('\]') or right curly brace ('}') introduci
ng the optional | 5901 * Return the right square bracket ('\]') or right curly brace ('}') introduci
ng the optional |
| 5093 * parameters. | 5902 * parameters. |
| 5094 * @return the right square bracket ('\]') or right curly brace ('}') introduc
ing the optional | 5903 * @return the right square bracket ('\]') or right curly brace ('}') introduc
ing the optional |
| 5095 * parameters | 5904 * parameters |
| 5096 */ | 5905 */ |
| 5097 Token get rightDelimiter => _rightDelimiter; | 5906 Token get rightDelimiter => _rightDelimiter; |
| 5907 |
| 5098 /** | 5908 /** |
| 5099 * Return the right parenthesis. | 5909 * Return the right parenthesis. |
| 5100 * @return the right parenthesis | 5910 * @return the right parenthesis |
| 5101 */ | 5911 */ |
| 5102 Token get rightParenthesis => _rightParenthesis; | 5912 Token get rightParenthesis => _rightParenthesis; |
| 5913 |
| 5103 /** | 5914 /** |
| 5104 * Set the left square bracket ('\[') or left curly brace ('{') introducing th
e optional parameters | 5915 * Set the left square bracket ('\[') or left curly brace ('{') introducing th
e optional parameters |
| 5105 * to the given token. | 5916 * to the given token. |
| 5106 * @param bracket the left delimiter introducing the optional parameters | 5917 * @param bracket the left delimiter introducing the optional parameters |
| 5107 */ | 5918 */ |
| 5108 void set leftDelimiter(Token bracket) { | 5919 void set leftDelimiter(Token bracket) { |
| 5109 _leftDelimiter = bracket; | 5920 _leftDelimiter = bracket; |
| 5110 } | 5921 } |
| 5922 |
| 5111 /** | 5923 /** |
| 5112 * Set the left parenthesis to the given token. | 5924 * Set the left parenthesis to the given token. |
| 5113 * @param parenthesis the left parenthesis | 5925 * @param parenthesis the left parenthesis |
| 5114 */ | 5926 */ |
| 5115 void set leftParenthesis(Token parenthesis) { | 5927 void set leftParenthesis(Token parenthesis) { |
| 5116 _leftParenthesis = parenthesis; | 5928 _leftParenthesis = parenthesis; |
| 5117 } | 5929 } |
| 5930 |
| 5118 /** | 5931 /** |
| 5119 * Set the right square bracket ('\]') or right curly brace ('}') introducing
the optional | 5932 * Set the right square bracket ('\]') or right curly brace ('}') introducing
the optional |
| 5120 * parameters to the given token. | 5933 * parameters to the given token. |
| 5121 * @param bracket the right delimiter introducing the optional parameters | 5934 * @param bracket the right delimiter introducing the optional parameters |
| 5122 */ | 5935 */ |
| 5123 void set rightDelimiter(Token bracket) { | 5936 void set rightDelimiter(Token bracket) { |
| 5124 _rightDelimiter = bracket; | 5937 _rightDelimiter = bracket; |
| 5125 } | 5938 } |
| 5939 |
| 5126 /** | 5940 /** |
| 5127 * Set the right parenthesis to the given token. | 5941 * Set the right parenthesis to the given token. |
| 5128 * @param parenthesis the right parenthesis | 5942 * @param parenthesis the right parenthesis |
| 5129 */ | 5943 */ |
| 5130 void set rightParenthesis(Token parenthesis) { | 5944 void set rightParenthesis(Token parenthesis) { |
| 5131 _rightParenthesis = parenthesis; | 5945 _rightParenthesis = parenthesis; |
| 5132 } | 5946 } |
| 5133 void visitChildren(ASTVisitor<Object> visitor) { | 5947 void visitChildren(ASTVisitor<Object> visitor) { |
| 5134 _parameters.accept(visitor); | 5948 _parameters.accept(visitor); |
| 5135 } | 5949 } |
| 5136 } | 5950 } |
| 5951 |
| 5137 /** | 5952 /** |
| 5138 * The abstract class {@code FunctionBody} defines the behavior common to object
s representing the | 5953 * The abstract class {@code FunctionBody} defines the behavior common to object
s representing the |
| 5139 * body of a function or method. | 5954 * body of a function or method. |
| 5140 * <pre> | 5955 * <pre> |
| 5141 * functionBody ::={@link BlockFunctionBody blockFunctionBody}| {@link EmptyFunc
tionBody emptyFunctionBody}| {@link ExpressionFunctionBody expressionFunctionBod
y}</pre> | 5956 * functionBody ::={@link BlockFunctionBody blockFunctionBody}| {@link EmptyFunc
tionBody emptyFunctionBody}| {@link ExpressionFunctionBody expressionFunctionBod
y}</pre> |
| 5142 * @coverage dart.engine.ast | 5957 * @coverage dart.engine.ast |
| 5143 */ | 5958 */ |
| 5144 abstract class FunctionBody extends ASTNode { | 5959 abstract class FunctionBody extends ASTNode { |
| 5145 } | 5960 } |
| 5961 |
| 5146 /** | 5962 /** |
| 5147 * Instances of the class {@code FunctionDeclaration} wrap a {@link FunctionExpr
ession function | 5963 * Instances of the class {@code FunctionDeclaration} wrap a {@link FunctionExpr
ession function |
| 5148 * expression} as a top-level declaration. | 5964 * expression} as a top-level declaration. |
| 5149 * <pre> | 5965 * <pre> |
| 5150 * functionDeclaration ::= | 5966 * functionDeclaration ::= |
| 5151 * 'external' functionSignature | 5967 * 'external' functionSignature |
| 5152 * | functionSignature {@link FunctionBody functionBody}functionSignature ::={@l
ink Type returnType}? ('get' | 'set')? {@link SimpleIdentifier functionName} {@l
ink FormalParameterList formalParameterList}</pre> | 5968 * | functionSignature {@link FunctionBody functionBody}functionSignature ::={@l
ink Type returnType}? ('get' | 'set')? {@link SimpleIdentifier functionName} {@l
ink FormalParameterList formalParameterList}</pre> |
| 5153 * @coverage dart.engine.ast | 5969 * @coverage dart.engine.ast |
| 5154 */ | 5970 */ |
| 5155 class FunctionDeclaration extends CompilationUnitMember { | 5971 class FunctionDeclaration extends CompilationUnitMember { |
| 5972 |
| 5156 /** | 5973 /** |
| 5157 * The token representing the 'external' keyword, or {@code null} if this is n
ot an external | 5974 * The token representing the 'external' keyword, or {@code null} if this is n
ot an external |
| 5158 * function. | 5975 * function. |
| 5159 */ | 5976 */ |
| 5160 Token _externalKeyword; | 5977 Token _externalKeyword; |
| 5978 |
| 5161 /** | 5979 /** |
| 5162 * The return type of the function, or {@code null} if no return type was decl
ared. | 5980 * The return type of the function, or {@code null} if no return type was decl
ared. |
| 5163 */ | 5981 */ |
| 5164 TypeName _returnType; | 5982 TypeName _returnType; |
| 5983 |
| 5165 /** | 5984 /** |
| 5166 * The token representing the 'get' or 'set' keyword, or {@code null} if this
is a function | 5985 * The token representing the 'get' or 'set' keyword, or {@code null} if this
is a function |
| 5167 * declaration rather than a property declaration. | 5986 * declaration rather than a property declaration. |
| 5168 */ | 5987 */ |
| 5169 Token _propertyKeyword; | 5988 Token _propertyKeyword; |
| 5989 |
| 5170 /** | 5990 /** |
| 5171 * The name of the function, or {@code null} if the function is not named. | 5991 * The name of the function, or {@code null} if the function is not named. |
| 5172 */ | 5992 */ |
| 5173 SimpleIdentifier _name; | 5993 SimpleIdentifier _name; |
| 5994 |
| 5174 /** | 5995 /** |
| 5175 * The function expression being wrapped. | 5996 * The function expression being wrapped. |
| 5176 */ | 5997 */ |
| 5177 FunctionExpression _functionExpression; | 5998 FunctionExpression _functionExpression; |
| 5999 |
| 5178 /** | 6000 /** |
| 5179 * Initialize a newly created function declaration. | 6001 * Initialize a newly created function declaration. |
| 5180 * @param comment the documentation comment associated with this function | 6002 * @param comment the documentation comment associated with this function |
| 5181 * @param metadata the annotations associated with this function | 6003 * @param metadata the annotations associated with this function |
| 5182 * @param externalKeyword the token representing the 'external' keyword | 6004 * @param externalKeyword the token representing the 'external' keyword |
| 5183 * @param returnType the return type of the function | 6005 * @param returnType the return type of the function |
| 5184 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 6006 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 5185 * @param name the name of the function | 6007 * @param name the name of the function |
| 5186 * @param functionExpression the function expression being wrapped | 6008 * @param functionExpression the function expression being wrapped |
| 5187 */ | 6009 */ |
| 5188 FunctionDeclaration.full(Comment comment, List<Annotation> metadata, Token ext
ernalKeyword, TypeName returnType, Token propertyKeyword, SimpleIdentifier name,
FunctionExpression functionExpression) : super.full(comment, metadata) { | 6010 FunctionDeclaration.full(Comment comment, List<Annotation> metadata, Token ext
ernalKeyword, TypeName returnType, Token propertyKeyword, SimpleIdentifier name,
FunctionExpression functionExpression) : super.full(comment, metadata) { |
| 5189 this._externalKeyword = externalKeyword; | 6011 this._externalKeyword = externalKeyword; |
| 5190 this._returnType = becomeParentOf(returnType); | 6012 this._returnType = becomeParentOf(returnType); |
| 5191 this._propertyKeyword = propertyKeyword; | 6013 this._propertyKeyword = propertyKeyword; |
| 5192 this._name = becomeParentOf(name); | 6014 this._name = becomeParentOf(name); |
| 5193 this._functionExpression = becomeParentOf(functionExpression); | 6015 this._functionExpression = becomeParentOf(functionExpression); |
| 5194 } | 6016 } |
| 6017 |
| 5195 /** | 6018 /** |
| 5196 * Initialize a newly created function declaration. | 6019 * Initialize a newly created function declaration. |
| 5197 * @param comment the documentation comment associated with this function | 6020 * @param comment the documentation comment associated with this function |
| 5198 * @param metadata the annotations associated with this function | 6021 * @param metadata the annotations associated with this function |
| 5199 * @param externalKeyword the token representing the 'external' keyword | 6022 * @param externalKeyword the token representing the 'external' keyword |
| 5200 * @param returnType the return type of the function | 6023 * @param returnType the return type of the function |
| 5201 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 6024 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 5202 * @param name the name of the function | 6025 * @param name the name of the function |
| 5203 * @param functionExpression the function expression being wrapped | 6026 * @param functionExpression the function expression being wrapped |
| 5204 */ | 6027 */ |
| 5205 FunctionDeclaration({Comment comment, List<Annotation> metadata, Token externa
lKeyword, TypeName returnType, Token propertyKeyword, SimpleIdentifier name, Fun
ctionExpression functionExpression}) : this.full(comment, metadata, externalKeyw
ord, returnType, propertyKeyword, name, functionExpression); | 6028 FunctionDeclaration({Comment comment, List<Annotation> metadata, Token externa
lKeyword, TypeName returnType, Token propertyKeyword, SimpleIdentifier name, Fun
ctionExpression functionExpression}) : this.full(comment, metadata, externalKeyw
ord, returnType, propertyKeyword, name, functionExpression); |
| 5206 accept(ASTVisitor visitor) => visitor.visitFunctionDeclaration(this); | 6029 accept(ASTVisitor visitor) => visitor.visitFunctionDeclaration(this); |
| 5207 ExecutableElement get element => _name != null ? (_name.element as ExecutableE
lement) : null; | 6030 ExecutableElement get element => _name != null ? (_name.element as ExecutableE
lement) : null; |
| 5208 Token get endToken => _functionExpression.endToken; | 6031 Token get endToken => _functionExpression.endToken; |
| 6032 |
| 5209 /** | 6033 /** |
| 5210 * Return the token representing the 'external' keyword, or {@code null} if th
is is not an | 6034 * Return the token representing the 'external' keyword, or {@code null} if th
is is not an |
| 5211 * external function. | 6035 * external function. |
| 5212 * @return the token representing the 'external' keyword | 6036 * @return the token representing the 'external' keyword |
| 5213 */ | 6037 */ |
| 5214 Token get externalKeyword => _externalKeyword; | 6038 Token get externalKeyword => _externalKeyword; |
| 6039 |
| 5215 /** | 6040 /** |
| 5216 * Return the function expression being wrapped. | 6041 * Return the function expression being wrapped. |
| 5217 * @return the function expression being wrapped | 6042 * @return the function expression being wrapped |
| 5218 */ | 6043 */ |
| 5219 FunctionExpression get functionExpression => _functionExpression; | 6044 FunctionExpression get functionExpression => _functionExpression; |
| 6045 |
| 5220 /** | 6046 /** |
| 5221 * Return the name of the function, or {@code null} if the function is not nam
ed. | 6047 * Return the name of the function, or {@code null} if the function is not nam
ed. |
| 5222 * @return the name of the function | 6048 * @return the name of the function |
| 5223 */ | 6049 */ |
| 5224 SimpleIdentifier get name => _name; | 6050 SimpleIdentifier get name => _name; |
| 6051 |
| 5225 /** | 6052 /** |
| 5226 * Return the token representing the 'get' or 'set' keyword, or {@code null} i
f this is a function | 6053 * Return the token representing the 'get' or 'set' keyword, or {@code null} i
f this is a function |
| 5227 * declaration rather than a property declaration. | 6054 * declaration rather than a property declaration. |
| 5228 * @return the token representing the 'get' or 'set' keyword | 6055 * @return the token representing the 'get' or 'set' keyword |
| 5229 */ | 6056 */ |
| 5230 Token get propertyKeyword => _propertyKeyword; | 6057 Token get propertyKeyword => _propertyKeyword; |
| 6058 |
| 5231 /** | 6059 /** |
| 5232 * Return the return type of the function, or {@code null} if no return type w
as declared. | 6060 * Return the return type of the function, or {@code null} if no return type w
as declared. |
| 5233 * @return the return type of the function | 6061 * @return the return type of the function |
| 5234 */ | 6062 */ |
| 5235 TypeName get returnType => _returnType; | 6063 TypeName get returnType => _returnType; |
| 6064 |
| 5236 /** | 6065 /** |
| 5237 * Return {@code true} if this function declares a getter. | 6066 * Return {@code true} if this function declares a getter. |
| 5238 * @return {@code true} if this function declares a getter | 6067 * @return {@code true} if this function declares a getter |
| 5239 */ | 6068 */ |
| 5240 bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.GET); | 6069 bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.GET); |
| 6070 |
| 5241 /** | 6071 /** |
| 5242 * Return {@code true} if this function declares a setter. | 6072 * Return {@code true} if this function declares a setter. |
| 5243 * @return {@code true} if this function declares a setter | 6073 * @return {@code true} if this function declares a setter |
| 5244 */ | 6074 */ |
| 5245 bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.SET); | 6075 bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.SET); |
| 6076 |
| 5246 /** | 6077 /** |
| 5247 * Set the token representing the 'external' keyword to the given token. | 6078 * Set the token representing the 'external' keyword to the given token. |
| 5248 * @param externalKeyword the token representing the 'external' keyword | 6079 * @param externalKeyword the token representing the 'external' keyword |
| 5249 */ | 6080 */ |
| 5250 void set externalKeyword(Token externalKeyword2) { | 6081 void set externalKeyword(Token externalKeyword2) { |
| 5251 this._externalKeyword = externalKeyword2; | 6082 this._externalKeyword = externalKeyword2; |
| 5252 } | 6083 } |
| 6084 |
| 5253 /** | 6085 /** |
| 5254 * Set the function expression being wrapped to the given function expression. | 6086 * Set the function expression being wrapped to the given function expression. |
| 5255 * @param functionExpression the function expression being wrapped | 6087 * @param functionExpression the function expression being wrapped |
| 5256 */ | 6088 */ |
| 5257 void set functionExpression(FunctionExpression functionExpression2) { | 6089 void set functionExpression(FunctionExpression functionExpression2) { |
| 5258 functionExpression2 = becomeParentOf(functionExpression2); | 6090 functionExpression2 = becomeParentOf(functionExpression2); |
| 5259 } | 6091 } |
| 6092 |
| 5260 /** | 6093 /** |
| 5261 * Set the name of the function to the given identifier. | 6094 * Set the name of the function to the given identifier. |
| 5262 * @param identifier the name of the function | 6095 * @param identifier the name of the function |
| 5263 */ | 6096 */ |
| 5264 void set name(SimpleIdentifier identifier) { | 6097 void set name(SimpleIdentifier identifier) { |
| 5265 _name = becomeParentOf(identifier); | 6098 _name = becomeParentOf(identifier); |
| 5266 } | 6099 } |
| 6100 |
| 5267 /** | 6101 /** |
| 5268 * Set the token representing the 'get' or 'set' keyword to the given token. | 6102 * Set the token representing the 'get' or 'set' keyword to the given token. |
| 5269 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 6103 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 5270 */ | 6104 */ |
| 5271 void set propertyKeyword(Token propertyKeyword2) { | 6105 void set propertyKeyword(Token propertyKeyword2) { |
| 5272 this._propertyKeyword = propertyKeyword2; | 6106 this._propertyKeyword = propertyKeyword2; |
| 5273 } | 6107 } |
| 6108 |
| 5274 /** | 6109 /** |
| 5275 * Set the return type of the function to the given name. | 6110 * Set the return type of the function to the given name. |
| 5276 * @param name the return type of the function | 6111 * @param name the return type of the function |
| 5277 */ | 6112 */ |
| 5278 void set returnType(TypeName name) { | 6113 void set returnType(TypeName name) { |
| 5279 _returnType = becomeParentOf(name); | 6114 _returnType = becomeParentOf(name); |
| 5280 } | 6115 } |
| 5281 void visitChildren(ASTVisitor<Object> visitor) { | 6116 void visitChildren(ASTVisitor<Object> visitor) { |
| 5282 super.visitChildren(visitor); | 6117 super.visitChildren(visitor); |
| 5283 safelyVisitChild(_returnType, visitor); | 6118 safelyVisitChild(_returnType, visitor); |
| 5284 safelyVisitChild(_name, visitor); | 6119 safelyVisitChild(_name, visitor); |
| 5285 safelyVisitChild(_functionExpression, visitor); | 6120 safelyVisitChild(_functionExpression, visitor); |
| 5286 } | 6121 } |
| 5287 Token get firstTokenAfterCommentAndMetadata { | 6122 Token get firstTokenAfterCommentAndMetadata { |
| 5288 if (_externalKeyword != null) { | 6123 if (_externalKeyword != null) { |
| 5289 return _externalKeyword; | 6124 return _externalKeyword; |
| 5290 } | 6125 } |
| 5291 if (_returnType != null) { | 6126 if (_returnType != null) { |
| 5292 return _returnType.beginToken; | 6127 return _returnType.beginToken; |
| 5293 } else if (_propertyKeyword != null) { | 6128 } else if (_propertyKeyword != null) { |
| 5294 return _propertyKeyword; | 6129 return _propertyKeyword; |
| 5295 } else if (_name != null) { | 6130 } else if (_name != null) { |
| 5296 return _name.beginToken; | 6131 return _name.beginToken; |
| 5297 } | 6132 } |
| 5298 return _functionExpression.beginToken; | 6133 return _functionExpression.beginToken; |
| 5299 } | 6134 } |
| 5300 } | 6135 } |
| 6136 |
| 5301 /** | 6137 /** |
| 5302 * Instances of the class {@code FunctionDeclarationStatement} wrap a {@link Fun
ctionDeclarationfunction declaration} as a statement. | 6138 * Instances of the class {@code FunctionDeclarationStatement} wrap a {@link Fun
ctionDeclarationfunction declaration} as a statement. |
| 5303 * @coverage dart.engine.ast | 6139 * @coverage dart.engine.ast |
| 5304 */ | 6140 */ |
| 5305 class FunctionDeclarationStatement extends Statement { | 6141 class FunctionDeclarationStatement extends Statement { |
| 6142 |
| 5306 /** | 6143 /** |
| 5307 * The function declaration being wrapped. | 6144 * The function declaration being wrapped. |
| 5308 */ | 6145 */ |
| 5309 FunctionDeclaration _functionDeclaration; | 6146 FunctionDeclaration _functionDeclaration; |
| 6147 |
| 5310 /** | 6148 /** |
| 5311 * Initialize a newly created function declaration statement. | 6149 * Initialize a newly created function declaration statement. |
| 5312 * @param functionDeclaration the the function declaration being wrapped | 6150 * @param functionDeclaration the the function declaration being wrapped |
| 5313 */ | 6151 */ |
| 5314 FunctionDeclarationStatement.full(FunctionDeclaration functionDeclaration) { | 6152 FunctionDeclarationStatement.full(FunctionDeclaration functionDeclaration) { |
| 5315 this._functionDeclaration = becomeParentOf(functionDeclaration); | 6153 this._functionDeclaration = becomeParentOf(functionDeclaration); |
| 5316 } | 6154 } |
| 6155 |
| 5317 /** | 6156 /** |
| 5318 * Initialize a newly created function declaration statement. | 6157 * Initialize a newly created function declaration statement. |
| 5319 * @param functionDeclaration the the function declaration being wrapped | 6158 * @param functionDeclaration the the function declaration being wrapped |
| 5320 */ | 6159 */ |
| 5321 FunctionDeclarationStatement({FunctionDeclaration functionDeclaration}) : this
.full(functionDeclaration); | 6160 FunctionDeclarationStatement({FunctionDeclaration functionDeclaration}) : this
.full(functionDeclaration); |
| 5322 accept(ASTVisitor visitor) => visitor.visitFunctionDeclarationStatement(this); | 6161 accept(ASTVisitor visitor) => visitor.visitFunctionDeclarationStatement(this); |
| 5323 Token get beginToken => _functionDeclaration.beginToken; | 6162 Token get beginToken => _functionDeclaration.beginToken; |
| 5324 Token get endToken => _functionDeclaration.endToken; | 6163 Token get endToken => _functionDeclaration.endToken; |
| 6164 |
| 5325 /** | 6165 /** |
| 5326 * Return the function declaration being wrapped. | 6166 * Return the function declaration being wrapped. |
| 5327 * @return the function declaration being wrapped | 6167 * @return the function declaration being wrapped |
| 5328 */ | 6168 */ |
| 5329 FunctionDeclaration get functionDeclaration => _functionDeclaration; | 6169 FunctionDeclaration get functionDeclaration => _functionDeclaration; |
| 6170 |
| 5330 /** | 6171 /** |
| 5331 * Set the function declaration being wrapped to the given function declaratio
n. | 6172 * Set the function declaration being wrapped to the given function declaratio
n. |
| 5332 * @param functionDeclaration the function declaration being wrapped | 6173 * @param functionDeclaration the function declaration being wrapped |
| 5333 */ | 6174 */ |
| 5334 void set functionExpression(FunctionDeclaration functionDeclaration2) { | 6175 void set functionExpression(FunctionDeclaration functionDeclaration2) { |
| 5335 this._functionDeclaration = becomeParentOf(functionDeclaration2); | 6176 this._functionDeclaration = becomeParentOf(functionDeclaration2); |
| 5336 } | 6177 } |
| 5337 void visitChildren(ASTVisitor<Object> visitor) { | 6178 void visitChildren(ASTVisitor<Object> visitor) { |
| 5338 safelyVisitChild(_functionDeclaration, visitor); | 6179 safelyVisitChild(_functionDeclaration, visitor); |
| 5339 } | 6180 } |
| 5340 } | 6181 } |
| 6182 |
| 5341 /** | 6183 /** |
| 5342 * Instances of the class {@code FunctionExpression} represent a function expres
sion. | 6184 * Instances of the class {@code FunctionExpression} represent a function expres
sion. |
| 5343 * <pre> | 6185 * <pre> |
| 5344 * functionExpression ::={@link FormalParameterList formalParameterList} {@link
FunctionBody functionBody}</pre> | 6186 * functionExpression ::={@link FormalParameterList formalParameterList} {@link
FunctionBody functionBody}</pre> |
| 5345 * @coverage dart.engine.ast | 6187 * @coverage dart.engine.ast |
| 5346 */ | 6188 */ |
| 5347 class FunctionExpression extends Expression { | 6189 class FunctionExpression extends Expression { |
| 6190 |
| 5348 /** | 6191 /** |
| 5349 * The parameters associated with the function. | 6192 * The parameters associated with the function. |
| 5350 */ | 6193 */ |
| 5351 FormalParameterList _parameters; | 6194 FormalParameterList _parameters; |
| 6195 |
| 5352 /** | 6196 /** |
| 5353 * The body of the function, or {@code null} if this is an external function. | 6197 * The body of the function, or {@code null} if this is an external function. |
| 5354 */ | 6198 */ |
| 5355 FunctionBody _body; | 6199 FunctionBody _body; |
| 6200 |
| 5356 /** | 6201 /** |
| 5357 * The element associated with the function, or {@code null} if the AST struct
ure has not been | 6202 * The element associated with the function, or {@code null} if the AST struct
ure has not been |
| 5358 * resolved. | 6203 * resolved. |
| 5359 */ | 6204 */ |
| 5360 ExecutableElement _element; | 6205 ExecutableElement _element; |
| 6206 |
| 5361 /** | 6207 /** |
| 5362 * Initialize a newly created function declaration. | 6208 * Initialize a newly created function declaration. |
| 5363 * @param parameters the parameters associated with the function | 6209 * @param parameters the parameters associated with the function |
| 5364 * @param body the body of the function | 6210 * @param body the body of the function |
| 5365 */ | 6211 */ |
| 5366 FunctionExpression.full(FormalParameterList parameters, FunctionBody body) { | 6212 FunctionExpression.full(FormalParameterList parameters, FunctionBody body) { |
| 5367 this._parameters = becomeParentOf(parameters); | 6213 this._parameters = becomeParentOf(parameters); |
| 5368 this._body = becomeParentOf(body); | 6214 this._body = becomeParentOf(body); |
| 5369 } | 6215 } |
| 6216 |
| 5370 /** | 6217 /** |
| 5371 * Initialize a newly created function declaration. | 6218 * Initialize a newly created function declaration. |
| 5372 * @param parameters the parameters associated with the function | 6219 * @param parameters the parameters associated with the function |
| 5373 * @param body the body of the function | 6220 * @param body the body of the function |
| 5374 */ | 6221 */ |
| 5375 FunctionExpression({FormalParameterList parameters, FunctionBody body}) : this
.full(parameters, body); | 6222 FunctionExpression({FormalParameterList parameters, FunctionBody body}) : this
.full(parameters, body); |
| 5376 accept(ASTVisitor visitor) => visitor.visitFunctionExpression(this); | 6223 accept(ASTVisitor visitor) => visitor.visitFunctionExpression(this); |
| 5377 Token get beginToken { | 6224 Token get beginToken { |
| 5378 if (_parameters != null) { | 6225 if (_parameters != null) { |
| 5379 return _parameters.beginToken; | 6226 return _parameters.beginToken; |
| 5380 } else if (_body != null) { | 6227 } else if (_body != null) { |
| 5381 return _body.beginToken; | 6228 return _body.beginToken; |
| 5382 } | 6229 } |
| 5383 throw new IllegalStateException("Non-external functions must have a body"); | 6230 throw new IllegalStateException("Non-external functions must have a body"); |
| 5384 } | 6231 } |
| 6232 |
| 5385 /** | 6233 /** |
| 5386 * Return the body of the function, or {@code null} if this is an external fun
ction. | 6234 * Return the body of the function, or {@code null} if this is an external fun
ction. |
| 5387 * @return the body of the function | 6235 * @return the body of the function |
| 5388 */ | 6236 */ |
| 5389 FunctionBody get body => _body; | 6237 FunctionBody get body => _body; |
| 6238 |
| 5390 /** | 6239 /** |
| 5391 * Return the element associated with this function, or {@code null} if the AS
T structure has not | 6240 * Return the element associated with this function, or {@code null} if the AS
T structure has not |
| 5392 * been resolved. | 6241 * been resolved. |
| 5393 * @return the element associated with this function | 6242 * @return the element associated with this function |
| 5394 */ | 6243 */ |
| 5395 ExecutableElement get element => _element; | 6244 ExecutableElement get element => _element; |
| 5396 Token get endToken { | 6245 Token get endToken { |
| 5397 if (_body != null) { | 6246 if (_body != null) { |
| 5398 return _body.endToken; | 6247 return _body.endToken; |
| 5399 } else if (_parameters != null) { | 6248 } else if (_parameters != null) { |
| 5400 return _parameters.endToken; | 6249 return _parameters.endToken; |
| 5401 } | 6250 } |
| 5402 throw new IllegalStateException("Non-external functions must have a body"); | 6251 throw new IllegalStateException("Non-external functions must have a body"); |
| 5403 } | 6252 } |
| 6253 |
| 5404 /** | 6254 /** |
| 5405 * Return the parameters associated with the function. | 6255 * Return the parameters associated with the function. |
| 5406 * @return the parameters associated with the function | 6256 * @return the parameters associated with the function |
| 5407 */ | 6257 */ |
| 5408 FormalParameterList get parameters => _parameters; | 6258 FormalParameterList get parameters => _parameters; |
| 6259 |
| 5409 /** | 6260 /** |
| 5410 * Set the body of the function to the given function body. | 6261 * Set the body of the function to the given function body. |
| 5411 * @param functionBody the body of the function | 6262 * @param functionBody the body of the function |
| 5412 */ | 6263 */ |
| 5413 void set body(FunctionBody functionBody) { | 6264 void set body(FunctionBody functionBody) { |
| 5414 _body = becomeParentOf(functionBody); | 6265 _body = becomeParentOf(functionBody); |
| 5415 } | 6266 } |
| 6267 |
| 5416 /** | 6268 /** |
| 5417 * Set the element associated with this function to the given element. | 6269 * Set the element associated with this function to the given element. |
| 5418 * @param element the element associated with this function | 6270 * @param element the element associated with this function |
| 5419 */ | 6271 */ |
| 5420 void set element(ExecutableElement element2) { | 6272 void set element(ExecutableElement element2) { |
| 5421 this._element = element2; | 6273 this._element = element2; |
| 5422 } | 6274 } |
| 6275 |
| 5423 /** | 6276 /** |
| 5424 * Set the parameters associated with the function to the given list of parame
ters. | 6277 * Set the parameters associated with the function to the given list of parame
ters. |
| 5425 * @param parameters the parameters associated with the function | 6278 * @param parameters the parameters associated with the function |
| 5426 */ | 6279 */ |
| 5427 void set parameters(FormalParameterList parameters2) { | 6280 void set parameters(FormalParameterList parameters2) { |
| 5428 this._parameters = becomeParentOf(parameters2); | 6281 this._parameters = becomeParentOf(parameters2); |
| 5429 } | 6282 } |
| 5430 void visitChildren(ASTVisitor<Object> visitor) { | 6283 void visitChildren(ASTVisitor<Object> visitor) { |
| 5431 safelyVisitChild(_parameters, visitor); | 6284 safelyVisitChild(_parameters, visitor); |
| 5432 safelyVisitChild(_body, visitor); | 6285 safelyVisitChild(_body, visitor); |
| 5433 } | 6286 } |
| 5434 } | 6287 } |
| 6288 |
| 5435 /** | 6289 /** |
| 5436 * Instances of the class {@code FunctionExpressionInvocation} represent the inv
ocation of a | 6290 * Instances of the class {@code FunctionExpressionInvocation} represent the inv
ocation of a |
| 5437 * function resulting from evaluating an expression. Invocations of methods and
other forms of | 6291 * function resulting from evaluating an expression. Invocations of methods and
other forms of |
| 5438 * functions are represented by {@link MethodInvocation method invocation} nodes
. Invocations of | 6292 * functions are represented by {@link MethodInvocation method invocation} nodes
. Invocations of |
| 5439 * getters and setters are represented by either {@link PrefixedIdentifier prefi
xed identifier} or{@link PropertyAccess property access} nodes. | 6293 * getters and setters are represented by either {@link PrefixedIdentifier prefi
xed identifier} or{@link PropertyAccess property access} nodes. |
| 5440 * <pre> | 6294 * <pre> |
| 5441 * functionExpressionInvoction ::={@link Expression function} {@link ArgumentLis
t argumentList}</pre> | 6295 * functionExpressionInvoction ::={@link Expression function} {@link ArgumentLis
t argumentList}</pre> |
| 5442 * @coverage dart.engine.ast | 6296 * @coverage dart.engine.ast |
| 5443 */ | 6297 */ |
| 5444 class FunctionExpressionInvocation extends Expression { | 6298 class FunctionExpressionInvocation extends Expression { |
| 6299 |
| 5445 /** | 6300 /** |
| 5446 * The expression producing the function being invoked. | 6301 * The expression producing the function being invoked. |
| 5447 */ | 6302 */ |
| 5448 Expression _function; | 6303 Expression _function; |
| 6304 |
| 5449 /** | 6305 /** |
| 5450 * The list of arguments to the function. | 6306 * The list of arguments to the function. |
| 5451 */ | 6307 */ |
| 5452 ArgumentList _argumentList; | 6308 ArgumentList _argumentList; |
| 6309 |
| 5453 /** | 6310 /** |
| 5454 * The element associated with the function being invoked, or {@code null} if
the AST structure | 6311 * 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 f
unction could not be resolved. |
| 5455 * has not been resolved or the function could not be resolved. | |
| 5456 */ | 6312 */ |
| 5457 ExecutableElement _element; | 6313 ExecutableElement _staticElement; |
| 6314 |
| 6315 /** |
| 6316 * 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 t
he function could not be resolved. |
| 6317 */ |
| 6318 ExecutableElement _propagatedElement; |
| 6319 |
| 5458 /** | 6320 /** |
| 5459 * Initialize a newly created function expression invocation. | 6321 * Initialize a newly created function expression invocation. |
| 5460 * @param function the expression producing the function being invoked | 6322 * @param function the expression producing the function being invoked |
| 5461 * @param argumentList the list of arguments to the method | 6323 * @param argumentList the list of arguments to the method |
| 5462 */ | 6324 */ |
| 5463 FunctionExpressionInvocation.full(Expression function, ArgumentList argumentLi
st) { | 6325 FunctionExpressionInvocation.full(Expression function, ArgumentList argumentLi
st) { |
| 5464 this._function = becomeParentOf(function); | 6326 this._function = becomeParentOf(function); |
| 5465 this._argumentList = becomeParentOf(argumentList); | 6327 this._argumentList = becomeParentOf(argumentList); |
| 5466 } | 6328 } |
| 6329 |
| 5467 /** | 6330 /** |
| 5468 * Initialize a newly created function expression invocation. | 6331 * Initialize a newly created function expression invocation. |
| 5469 * @param function the expression producing the function being invoked | 6332 * @param function the expression producing the function being invoked |
| 5470 * @param argumentList the list of arguments to the method | 6333 * @param argumentList the list of arguments to the method |
| 5471 */ | 6334 */ |
| 5472 FunctionExpressionInvocation({Expression function, ArgumentList argumentList})
: this.full(function, argumentList); | 6335 FunctionExpressionInvocation({Expression function, ArgumentList argumentList})
: this.full(function, argumentList); |
| 5473 accept(ASTVisitor visitor) => visitor.visitFunctionExpressionInvocation(this); | 6336 accept(ASTVisitor visitor) => visitor.visitFunctionExpressionInvocation(this); |
| 6337 |
| 5474 /** | 6338 /** |
| 5475 * Return the list of arguments to the method. | 6339 * Return the list of arguments to the method. |
| 5476 * @return the list of arguments to the method | 6340 * @return the list of arguments to the method |
| 5477 */ | 6341 */ |
| 5478 ArgumentList get argumentList => _argumentList; | 6342 ArgumentList get argumentList => _argumentList; |
| 5479 Token get beginToken => _function.beginToken; | 6343 Token get beginToken => _function.beginToken; |
| 6344 |
| 5480 /** | 6345 /** |
| 5481 * Return the element associated with the function being invoked, or {@code nu
ll} if the AST | 6346 * Return the element associated with the function being invoked based on prop
agated type |
| 5482 * structure has not been resolved or the function could not be resolved. One
common example of | 6347 * information, or {@code null} if the AST structure has not been resolved or
the function could |
| 5483 * the latter case is an expression whose value can change over time. | 6348 * not be resolved. One common example of the latter case is an expression who
se value can change |
| 6349 * over time. |
| 5484 * @return the element associated with the function being invoked | 6350 * @return the element associated with the function being invoked |
| 5485 */ | 6351 */ |
| 5486 ExecutableElement get element => _element; | 6352 ExecutableElement get element => _propagatedElement; |
| 5487 Token get endToken => _argumentList.endToken; | 6353 Token get endToken => _argumentList.endToken; |
| 6354 |
| 5488 /** | 6355 /** |
| 5489 * Return the expression producing the function being invoked. | 6356 * Return the expression producing the function being invoked. |
| 5490 * @return the expression producing the function being invoked | 6357 * @return the expression producing the function being invoked |
| 5491 */ | 6358 */ |
| 5492 Expression get function => _function; | 6359 Expression get function => _function; |
| 6360 |
| 6361 /** |
| 6362 * Return the element associated with the function being invoked based on stat
ic type information, |
| 6363 * or {@code null} if the AST structure has not been resolved or the function
could not be |
| 6364 * resolved. One common example of the latter case is an expression whose valu
e can change over |
| 6365 * time. |
| 6366 * @return the element associated with the function |
| 6367 */ |
| 6368 ExecutableElement get staticElement => _staticElement; |
| 6369 |
| 5493 /** | 6370 /** |
| 5494 * Set the list of arguments to the method to the given list. | 6371 * Set the list of arguments to the method to the given list. |
| 5495 * @param argumentList the list of arguments to the method | 6372 * @param argumentList the list of arguments to the method |
| 5496 */ | 6373 */ |
| 5497 void set argumentList(ArgumentList argumentList2) { | 6374 void set argumentList(ArgumentList argumentList2) { |
| 5498 this._argumentList = becomeParentOf(argumentList2); | 6375 this._argumentList = becomeParentOf(argumentList2); |
| 5499 } | 6376 } |
| 6377 |
| 5500 /** | 6378 /** |
| 5501 * Set the element associated with the function being invoked to the given ele
ment. | 6379 * Set the element associated with the function being invoked based on propaga
ted type information |
| 5502 * @param element the element associated with the function being invoked | 6380 * to the given element. |
| 6381 * @param element the element to be associated with the function being invoked |
| 5503 */ | 6382 */ |
| 5504 void set element(ExecutableElement element2) { | 6383 void set element(ExecutableElement element2) { |
| 5505 this._element = element2; | 6384 _propagatedElement = element2; |
| 5506 } | 6385 } |
| 6386 |
| 5507 /** | 6387 /** |
| 5508 * Set the expression producing the function being invoked to the given expres
sion. | 6388 * Set the expression producing the function being invoked to the given expres
sion. |
| 5509 * @param function the expression producing the function being invoked | 6389 * @param function the expression producing the function being invoked |
| 5510 */ | 6390 */ |
| 5511 void set function(Expression function2) { | 6391 void set function(Expression function2) { |
| 5512 function2 = becomeParentOf(function2); | 6392 function2 = becomeParentOf(function2); |
| 5513 } | 6393 } |
| 6394 |
| 6395 /** |
| 6396 * Set the element associated with the function being invoked based on static
type information to |
| 6397 * the given element. |
| 6398 * @param element the element to be associated with the function |
| 6399 */ |
| 6400 void set staticElement(ExecutableElement element) { |
| 6401 this._staticElement = element; |
| 6402 } |
| 5514 void visitChildren(ASTVisitor<Object> visitor) { | 6403 void visitChildren(ASTVisitor<Object> visitor) { |
| 5515 safelyVisitChild(_function, visitor); | 6404 safelyVisitChild(_function, visitor); |
| 5516 safelyVisitChild(_argumentList, visitor); | 6405 safelyVisitChild(_argumentList, visitor); |
| 5517 } | 6406 } |
| 5518 } | 6407 } |
| 6408 |
| 5519 /** | 6409 /** |
| 5520 * Instances of the class {@code FunctionTypeAlias} represent a function type al
ias. | 6410 * Instances of the class {@code FunctionTypeAlias} represent a function type al
ias. |
| 5521 * <pre> | 6411 * <pre> |
| 5522 * functionTypeAlias ::= | 6412 * functionTypeAlias ::= |
| 5523 * functionPrefix {@link TypeParameterList typeParameterList}? {@link FormalPara
meterList formalParameterList} ';' | 6413 * functionPrefix {@link TypeParameterList typeParameterList}? {@link FormalPara
meterList formalParameterList} ';' |
| 5524 * functionPrefix ::={@link TypeName returnType}? {@link SimpleIdentifier name}<
/pre> | 6414 * functionPrefix ::={@link TypeName returnType}? {@link SimpleIdentifier name}<
/pre> |
| 5525 * @coverage dart.engine.ast | 6415 * @coverage dart.engine.ast |
| 5526 */ | 6416 */ |
| 5527 class FunctionTypeAlias extends TypeAlias { | 6417 class FunctionTypeAlias extends TypeAlias { |
| 6418 |
| 5528 /** | 6419 /** |
| 5529 * The name of the return type of the function type being defined, or {@code n
ull} if no return | 6420 * The name of the return type of the function type being defined, or {@code n
ull} if no return |
| 5530 * type was given. | 6421 * type was given. |
| 5531 */ | 6422 */ |
| 5532 TypeName _returnType; | 6423 TypeName _returnType; |
| 6424 |
| 5533 /** | 6425 /** |
| 5534 * The name of the function type being declared. | 6426 * The name of the function type being declared. |
| 5535 */ | 6427 */ |
| 5536 SimpleIdentifier _name; | 6428 SimpleIdentifier _name; |
| 6429 |
| 5537 /** | 6430 /** |
| 5538 * The type parameters for the function type, or {@code null} if the function
type does not have | 6431 * The type parameters for the function type, or {@code null} if the function
type does not have |
| 5539 * any type parameters. | 6432 * any type parameters. |
| 5540 */ | 6433 */ |
| 5541 TypeParameterList _typeParameters; | 6434 TypeParameterList _typeParameters; |
| 6435 |
| 5542 /** | 6436 /** |
| 5543 * The parameters associated with the function type. | 6437 * The parameters associated with the function type. |
| 5544 */ | 6438 */ |
| 5545 FormalParameterList _parameters; | 6439 FormalParameterList _parameters; |
| 6440 |
| 5546 /** | 6441 /** |
| 5547 * Initialize a newly created function type alias. | 6442 * Initialize a newly created function type alias. |
| 5548 * @param comment the documentation comment associated with this type alias | 6443 * @param comment the documentation comment associated with this type alias |
| 5549 * @param metadata the annotations associated with this type alias | 6444 * @param metadata the annotations associated with this type alias |
| 5550 * @param keyword the token representing the 'typedef' keyword | 6445 * @param keyword the token representing the 'typedef' keyword |
| 5551 * @param returnType the name of the return type of the function type being de
fined | 6446 * @param returnType the name of the return type of the function type being de
fined |
| 5552 * @param name the name of the type being declared | 6447 * @param name the name of the type being declared |
| 5553 * @param typeParameters the type parameters for the type | 6448 * @param typeParameters the type parameters for the type |
| 5554 * @param parameters the parameters associated with the function | 6449 * @param parameters the parameters associated with the function |
| 5555 * @param semicolon the semicolon terminating the declaration | 6450 * @param semicolon the semicolon terminating the declaration |
| 5556 */ | 6451 */ |
| 5557 FunctionTypeAlias.full(Comment comment, List<Annotation> metadata, Token keywo
rd, TypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters
, FormalParameterList parameters, Token semicolon) : super.full(comment, metadat
a, keyword, semicolon) { | 6452 FunctionTypeAlias.full(Comment comment, List<Annotation> metadata, Token keywo
rd, TypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters
, FormalParameterList parameters, Token semicolon) : super.full(comment, metadat
a, keyword, semicolon) { |
| 5558 this._returnType = becomeParentOf(returnType); | 6453 this._returnType = becomeParentOf(returnType); |
| 5559 this._name = becomeParentOf(name); | 6454 this._name = becomeParentOf(name); |
| 5560 this._typeParameters = becomeParentOf(typeParameters); | 6455 this._typeParameters = becomeParentOf(typeParameters); |
| 5561 this._parameters = becomeParentOf(parameters); | 6456 this._parameters = becomeParentOf(parameters); |
| 5562 } | 6457 } |
| 6458 |
| 5563 /** | 6459 /** |
| 5564 * Initialize a newly created function type alias. | 6460 * Initialize a newly created function type alias. |
| 5565 * @param comment the documentation comment associated with this type alias | 6461 * @param comment the documentation comment associated with this type alias |
| 5566 * @param metadata the annotations associated with this type alias | 6462 * @param metadata the annotations associated with this type alias |
| 5567 * @param keyword the token representing the 'typedef' keyword | 6463 * @param keyword the token representing the 'typedef' keyword |
| 5568 * @param returnType the name of the return type of the function type being de
fined | 6464 * @param returnType the name of the return type of the function type being de
fined |
| 5569 * @param name the name of the type being declared | 6465 * @param name the name of the type being declared |
| 5570 * @param typeParameters the type parameters for the type | 6466 * @param typeParameters the type parameters for the type |
| 5571 * @param parameters the parameters associated with the function | 6467 * @param parameters the parameters associated with the function |
| 5572 * @param semicolon the semicolon terminating the declaration | 6468 * @param semicolon the semicolon terminating the declaration |
| 5573 */ | 6469 */ |
| 5574 FunctionTypeAlias({Comment comment, List<Annotation> metadata, Token keyword,
TypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters, Fo
rmalParameterList parameters, Token semicolon}) : this.full(comment, metadata, k
eyword, returnType, name, typeParameters, parameters, semicolon); | 6470 FunctionTypeAlias({Comment comment, List<Annotation> metadata, Token keyword,
TypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters, Fo
rmalParameterList parameters, Token semicolon}) : this.full(comment, metadata, k
eyword, returnType, name, typeParameters, parameters, semicolon); |
| 5575 accept(ASTVisitor visitor) => visitor.visitFunctionTypeAlias(this); | 6471 accept(ASTVisitor visitor) => visitor.visitFunctionTypeAlias(this); |
| 5576 FunctionTypeAliasElement get element => _name != null ? (_name.element as Func
tionTypeAliasElement) : null; | 6472 FunctionTypeAliasElement get element => _name != null ? (_name.element as Func
tionTypeAliasElement) : null; |
| 6473 |
| 5577 /** | 6474 /** |
| 5578 * Return the name of the function type being declared. | 6475 * Return the name of the function type being declared. |
| 5579 * @return the name of the function type being declared | 6476 * @return the name of the function type being declared |
| 5580 */ | 6477 */ |
| 5581 SimpleIdentifier get name => _name; | 6478 SimpleIdentifier get name => _name; |
| 6479 |
| 5582 /** | 6480 /** |
| 5583 * Return the parameters associated with the function type. | 6481 * Return the parameters associated with the function type. |
| 5584 * @return the parameters associated with the function type | 6482 * @return the parameters associated with the function type |
| 5585 */ | 6483 */ |
| 5586 FormalParameterList get parameters => _parameters; | 6484 FormalParameterList get parameters => _parameters; |
| 6485 |
| 5587 /** | 6486 /** |
| 5588 * Return the name of the return type of the function type being defined, or {
@code null} if no | 6487 * Return the name of the return type of the function type being defined, or {
@code null} if no |
| 5589 * return type was given. | 6488 * return type was given. |
| 5590 * @return the name of the return type of the function type being defined | 6489 * @return the name of the return type of the function type being defined |
| 5591 */ | 6490 */ |
| 5592 TypeName get returnType => _returnType; | 6491 TypeName get returnType => _returnType; |
| 6492 |
| 5593 /** | 6493 /** |
| 5594 * Return the type parameters for the function type, or {@code null} if the fu
nction type does not | 6494 * Return the type parameters for the function type, or {@code null} if the fu
nction type does not |
| 5595 * have any type parameters. | 6495 * have any type parameters. |
| 5596 * @return the type parameters for the function type | 6496 * @return the type parameters for the function type |
| 5597 */ | 6497 */ |
| 5598 TypeParameterList get typeParameters => _typeParameters; | 6498 TypeParameterList get typeParameters => _typeParameters; |
| 6499 |
| 5599 /** | 6500 /** |
| 5600 * Set the name of the function type being declared to the given identifier. | 6501 * Set the name of the function type being declared to the given identifier. |
| 5601 * @param name the name of the function type being declared | 6502 * @param name the name of the function type being declared |
| 5602 */ | 6503 */ |
| 5603 void set name(SimpleIdentifier name2) { | 6504 void set name(SimpleIdentifier name2) { |
| 5604 this._name = becomeParentOf(name2); | 6505 this._name = becomeParentOf(name2); |
| 5605 } | 6506 } |
| 6507 |
| 5606 /** | 6508 /** |
| 5607 * Set the parameters associated with the function type to the given list of p
arameters. | 6509 * Set the parameters associated with the function type to the given list of p
arameters. |
| 5608 * @param parameters the parameters associated with the function type | 6510 * @param parameters the parameters associated with the function type |
| 5609 */ | 6511 */ |
| 5610 void set parameters(FormalParameterList parameters2) { | 6512 void set parameters(FormalParameterList parameters2) { |
| 5611 this._parameters = becomeParentOf(parameters2); | 6513 this._parameters = becomeParentOf(parameters2); |
| 5612 } | 6514 } |
| 6515 |
| 5613 /** | 6516 /** |
| 5614 * Set the name of the return type of the function type being defined to the g
iven type name. | 6517 * Set the name of the return type of the function type being defined to the g
iven type name. |
| 5615 * @param typeName the name of the return type of the function type being defi
ned | 6518 * @param typeName the name of the return type of the function type being defi
ned |
| 5616 */ | 6519 */ |
| 5617 void set returnType(TypeName typeName) { | 6520 void set returnType(TypeName typeName) { |
| 5618 _returnType = becomeParentOf(typeName); | 6521 _returnType = becomeParentOf(typeName); |
| 5619 } | 6522 } |
| 6523 |
| 5620 /** | 6524 /** |
| 5621 * Set the type parameters for the function type to the given list of paramete
rs. | 6525 * Set the type parameters for the function type to the given list of paramete
rs. |
| 5622 * @param typeParameters the type parameters for the function type | 6526 * @param typeParameters the type parameters for the function type |
| 5623 */ | 6527 */ |
| 5624 void set typeParameters(TypeParameterList typeParameters2) { | 6528 void set typeParameters(TypeParameterList typeParameters2) { |
| 5625 this._typeParameters = becomeParentOf(typeParameters2); | 6529 this._typeParameters = becomeParentOf(typeParameters2); |
| 5626 } | 6530 } |
| 5627 void visitChildren(ASTVisitor<Object> visitor) { | 6531 void visitChildren(ASTVisitor<Object> visitor) { |
| 5628 super.visitChildren(visitor); | 6532 super.visitChildren(visitor); |
| 5629 safelyVisitChild(_returnType, visitor); | 6533 safelyVisitChild(_returnType, visitor); |
| 5630 safelyVisitChild(_name, visitor); | 6534 safelyVisitChild(_name, visitor); |
| 5631 safelyVisitChild(_typeParameters, visitor); | 6535 safelyVisitChild(_typeParameters, visitor); |
| 5632 safelyVisitChild(_parameters, visitor); | 6536 safelyVisitChild(_parameters, visitor); |
| 5633 } | 6537 } |
| 5634 } | 6538 } |
| 6539 |
| 5635 /** | 6540 /** |
| 5636 * Instances of the class {@code FunctionTypedFormalParameter} represent a funct
ion-typed formal | 6541 * Instances of the class {@code FunctionTypedFormalParameter} represent a funct
ion-typed formal |
| 5637 * parameter. | 6542 * parameter. |
| 5638 * <pre> | 6543 * <pre> |
| 5639 * functionSignature ::={@link TypeName returnType}? {@link SimpleIdentifier ide
ntifier} {@link FormalParameterList formalParameterList}</pre> | 6544 * functionSignature ::={@link TypeName returnType}? {@link SimpleIdentifier ide
ntifier} {@link FormalParameterList formalParameterList}</pre> |
| 5640 * @coverage dart.engine.ast | 6545 * @coverage dart.engine.ast |
| 5641 */ | 6546 */ |
| 5642 class FunctionTypedFormalParameter extends NormalFormalParameter { | 6547 class FunctionTypedFormalParameter extends NormalFormalParameter { |
| 6548 |
| 5643 /** | 6549 /** |
| 5644 * The return type of the function, or {@code null} if the function does not h
ave a return type. | 6550 * The return type of the function, or {@code null} if the function does not h
ave a return type. |
| 5645 */ | 6551 */ |
| 5646 TypeName _returnType; | 6552 TypeName _returnType; |
| 6553 |
| 5647 /** | 6554 /** |
| 5648 * The parameters of the function-typed parameter. | 6555 * The parameters of the function-typed parameter. |
| 5649 */ | 6556 */ |
| 5650 FormalParameterList _parameters; | 6557 FormalParameterList _parameters; |
| 6558 |
| 5651 /** | 6559 /** |
| 5652 * Initialize a newly created formal parameter. | 6560 * Initialize a newly created formal parameter. |
| 5653 * @param comment the documentation comment associated with this parameter | 6561 * @param comment the documentation comment associated with this parameter |
| 5654 * @param metadata the annotations associated with this parameter | 6562 * @param metadata the annotations associated with this parameter |
| 5655 * @param returnType the return type of the function, or {@code null} if the f
unction does not | 6563 * @param returnType the return type of the function, or {@code null} if the f
unction does not |
| 5656 * have a return type | 6564 * have a return type |
| 5657 * @param identifier the name of the function-typed parameter | 6565 * @param identifier the name of the function-typed parameter |
| 5658 * @param parameters the parameters of the function-typed parameter | 6566 * @param parameters the parameters of the function-typed parameter |
| 5659 */ | 6567 */ |
| 5660 FunctionTypedFormalParameter.full(Comment comment, List<Annotation> metadata,
TypeName returnType, SimpleIdentifier identifier, FormalParameterList parameters
) : super.full(comment, metadata, identifier) { | 6568 FunctionTypedFormalParameter.full(Comment comment, List<Annotation> metadata,
TypeName returnType, SimpleIdentifier identifier, FormalParameterList parameters
) : super.full(comment, metadata, identifier) { |
| 5661 this._returnType = becomeParentOf(returnType); | 6569 this._returnType = becomeParentOf(returnType); |
| 5662 this._parameters = becomeParentOf(parameters); | 6570 this._parameters = becomeParentOf(parameters); |
| 5663 } | 6571 } |
| 6572 |
| 5664 /** | 6573 /** |
| 5665 * Initialize a newly created formal parameter. | 6574 * Initialize a newly created formal parameter. |
| 5666 * @param comment the documentation comment associated with this parameter | 6575 * @param comment the documentation comment associated with this parameter |
| 5667 * @param metadata the annotations associated with this parameter | 6576 * @param metadata the annotations associated with this parameter |
| 5668 * @param returnType the return type of the function, or {@code null} if the f
unction does not | 6577 * @param returnType the return type of the function, or {@code null} if the f
unction does not |
| 5669 * have a return type | 6578 * have a return type |
| 5670 * @param identifier the name of the function-typed parameter | 6579 * @param identifier the name of the function-typed parameter |
| 5671 * @param parameters the parameters of the function-typed parameter | 6580 * @param parameters the parameters of the function-typed parameter |
| 5672 */ | 6581 */ |
| 5673 FunctionTypedFormalParameter({Comment comment, List<Annotation> metadata, Type
Name returnType, SimpleIdentifier identifier, FormalParameterList parameters}) :
this.full(comment, metadata, returnType, identifier, parameters); | 6582 FunctionTypedFormalParameter({Comment comment, List<Annotation> metadata, Type
Name returnType, SimpleIdentifier identifier, FormalParameterList parameters}) :
this.full(comment, metadata, returnType, identifier, parameters); |
| 5674 accept(ASTVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this); | 6583 accept(ASTVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this); |
| 5675 Token get beginToken { | 6584 Token get beginToken { |
| 5676 if (_returnType != null) { | 6585 if (_returnType != null) { |
| 5677 return _returnType.beginToken; | 6586 return _returnType.beginToken; |
| 5678 } | 6587 } |
| 5679 return identifier.beginToken; | 6588 return identifier.beginToken; |
| 5680 } | 6589 } |
| 5681 Token get endToken => _parameters.endToken; | 6590 Token get endToken => _parameters.endToken; |
| 6591 |
| 5682 /** | 6592 /** |
| 5683 * Return the parameters of the function-typed parameter. | 6593 * Return the parameters of the function-typed parameter. |
| 5684 * @return the parameters of the function-typed parameter | 6594 * @return the parameters of the function-typed parameter |
| 5685 */ | 6595 */ |
| 5686 FormalParameterList get parameters => _parameters; | 6596 FormalParameterList get parameters => _parameters; |
| 6597 |
| 5687 /** | 6598 /** |
| 5688 * Return the return type of the function, or {@code null} if the function doe
s not have a return | 6599 * Return the return type of the function, or {@code null} if the function doe
s not have a return |
| 5689 * type. | 6600 * type. |
| 5690 * @return the return type of the function | 6601 * @return the return type of the function |
| 5691 */ | 6602 */ |
| 5692 TypeName get returnType => _returnType; | 6603 TypeName get returnType => _returnType; |
| 5693 bool isConst() => false; | 6604 bool isConst() => false; |
| 5694 bool isFinal() => false; | 6605 bool isFinal() => false; |
| 6606 |
| 5695 /** | 6607 /** |
| 5696 * Set the parameters of the function-typed parameter to the given parameters. | 6608 * Set the parameters of the function-typed parameter to the given parameters. |
| 5697 * @param parameters the parameters of the function-typed parameter | 6609 * @param parameters the parameters of the function-typed parameter |
| 5698 */ | 6610 */ |
| 5699 void set parameters(FormalParameterList parameters2) { | 6611 void set parameters(FormalParameterList parameters2) { |
| 5700 this._parameters = becomeParentOf(parameters2); | 6612 this._parameters = becomeParentOf(parameters2); |
| 5701 } | 6613 } |
| 6614 |
| 5702 /** | 6615 /** |
| 5703 * Set the return type of the function to the given type. | 6616 * Set the return type of the function to the given type. |
| 5704 * @param returnType the return type of the function | 6617 * @param returnType the return type of the function |
| 5705 */ | 6618 */ |
| 5706 void set returnType(TypeName returnType2) { | 6619 void set returnType(TypeName returnType2) { |
| 5707 this._returnType = becomeParentOf(returnType2); | 6620 this._returnType = becomeParentOf(returnType2); |
| 5708 } | 6621 } |
| 5709 void visitChildren(ASTVisitor<Object> visitor) { | 6622 void visitChildren(ASTVisitor<Object> visitor) { |
| 5710 super.visitChildren(visitor); | 6623 super.visitChildren(visitor); |
| 5711 safelyVisitChild(_returnType, visitor); | 6624 safelyVisitChild(_returnType, visitor); |
| 5712 safelyVisitChild(identifier, visitor); | 6625 safelyVisitChild(identifier, visitor); |
| 5713 safelyVisitChild(_parameters, visitor); | 6626 safelyVisitChild(_parameters, visitor); |
| 5714 } | 6627 } |
| 5715 } | 6628 } |
| 6629 |
| 5716 /** | 6630 /** |
| 5717 * Instances of the class {@code HideCombinator} represent a combinator that res
tricts the names | 6631 * Instances of the class {@code HideCombinator} represent a combinator that res
tricts the names |
| 5718 * being imported to those that are not in a given list. | 6632 * being imported to those that are not in a given list. |
| 5719 * <pre> | 6633 * <pre> |
| 5720 * hideCombinator ::= | 6634 * hideCombinator ::= |
| 5721 * 'hide' {@link SimpleIdentifier identifier} (',' {@link SimpleIdentifier ident
ifier}) | 6635 * 'hide' {@link SimpleIdentifier identifier} (',' {@link SimpleIdentifier ident
ifier}) |
| 5722 * </pre> | 6636 * </pre> |
| 5723 * @coverage dart.engine.ast | 6637 * @coverage dart.engine.ast |
| 5724 */ | 6638 */ |
| 5725 class HideCombinator extends Combinator { | 6639 class HideCombinator extends Combinator { |
| 6640 |
| 5726 /** | 6641 /** |
| 5727 * The list of names from the library that are hidden by this combinator. | 6642 * The list of names from the library that are hidden by this combinator. |
| 5728 */ | 6643 */ |
| 5729 NodeList<SimpleIdentifier> _hiddenNames; | 6644 NodeList<SimpleIdentifier> _hiddenNames; |
| 6645 |
| 5730 /** | 6646 /** |
| 5731 * Initialize a newly created import show combinator. | 6647 * Initialize a newly created import show combinator. |
| 5732 * @param keyword the comma introducing the combinator | 6648 * @param keyword the comma introducing the combinator |
| 5733 * @param hiddenNames the list of names from the library that are hidden by th
is combinator | 6649 * @param hiddenNames the list of names from the library that are hidden by th
is combinator |
| 5734 */ | 6650 */ |
| 5735 HideCombinator.full(Token keyword, List<SimpleIdentifier> hiddenNames) : super
.full(keyword) { | 6651 HideCombinator.full(Token keyword, List<SimpleIdentifier> hiddenNames) : super
.full(keyword) { |
| 5736 this._hiddenNames = new NodeList<SimpleIdentifier>(this); | 6652 this._hiddenNames = new NodeList<SimpleIdentifier>(this); |
| 5737 this._hiddenNames.addAll(hiddenNames); | 6653 this._hiddenNames.addAll(hiddenNames); |
| 5738 } | 6654 } |
| 6655 |
| 5739 /** | 6656 /** |
| 5740 * Initialize a newly created import show combinator. | 6657 * Initialize a newly created import show combinator. |
| 5741 * @param keyword the comma introducing the combinator | 6658 * @param keyword the comma introducing the combinator |
| 5742 * @param hiddenNames the list of names from the library that are hidden by th
is combinator | 6659 * @param hiddenNames the list of names from the library that are hidden by th
is combinator |
| 5743 */ | 6660 */ |
| 5744 HideCombinator({Token keyword, List<SimpleIdentifier> hiddenNames}) : this.ful
l(keyword, hiddenNames); | 6661 HideCombinator({Token keyword, List<SimpleIdentifier> hiddenNames}) : this.ful
l(keyword, hiddenNames); |
| 5745 accept(ASTVisitor visitor) => visitor.visitHideCombinator(this); | 6662 accept(ASTVisitor visitor) => visitor.visitHideCombinator(this); |
| 5746 Token get endToken => _hiddenNames.endToken; | 6663 Token get endToken => _hiddenNames.endToken; |
| 6664 |
| 5747 /** | 6665 /** |
| 5748 * Return the list of names from the library that are hidden by this combinato
r. | 6666 * Return the list of names from the library that are hidden by this combinato
r. |
| 5749 * @return the list of names from the library that are hidden by this combinat
or | 6667 * @return the list of names from the library that are hidden by this combinat
or |
| 5750 */ | 6668 */ |
| 5751 NodeList<SimpleIdentifier> get hiddenNames => _hiddenNames; | 6669 NodeList<SimpleIdentifier> get hiddenNames => _hiddenNames; |
| 5752 void visitChildren(ASTVisitor<Object> visitor) { | 6670 void visitChildren(ASTVisitor<Object> visitor) { |
| 5753 _hiddenNames.accept(visitor); | 6671 _hiddenNames.accept(visitor); |
| 5754 } | 6672 } |
| 5755 } | 6673 } |
| 6674 |
| 5756 /** | 6675 /** |
| 5757 * The abstract class {@code Identifier} defines the behavior common to nodes th
at represent an | 6676 * The abstract class {@code Identifier} defines the behavior common to nodes th
at represent an |
| 5758 * identifier. | 6677 * identifier. |
| 5759 * <pre> | 6678 * <pre> |
| 5760 * identifier ::={@link SimpleIdentifier simpleIdentifier}| {@link PrefixedIdent
ifier prefixedIdentifier}</pre> | 6679 * identifier ::={@link SimpleIdentifier simpleIdentifier}| {@link PrefixedIdent
ifier prefixedIdentifier}</pre> |
| 5761 * @coverage dart.engine.ast | 6680 * @coverage dart.engine.ast |
| 5762 */ | 6681 */ |
| 5763 abstract class Identifier extends Expression { | 6682 abstract class Identifier extends Expression { |
| 6683 |
| 5764 /** | 6684 /** |
| 5765 * Return {@code true} if the given name is visible only within the library in
which it is | 6685 * Return {@code true} if the given name is visible only within the library in
which it is |
| 5766 * declared. | 6686 * declared. |
| 5767 * @param name the name being tested | 6687 * @param name the name being tested |
| 5768 * @return {@code true} if the given name is private | 6688 * @return {@code true} if the given name is private |
| 5769 */ | 6689 */ |
| 5770 static bool isPrivateName(String name) => name.startsWith("_"); | 6690 static bool isPrivateName(String name) => name.startsWith("_"); |
| 6691 |
| 5771 /** | 6692 /** |
| 5772 * Return the element associated with this identifier, or {@code null} if the
AST structure has | 6693 * 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 th
is identifier could not be |
| 5773 * not been resolved or if this identifier could not be resolved. One example
of the latter case | 6694 * resolved. One example of the latter case is an identifier that is not defin
ed within the scope |
| 5774 * is an identifier that is not defined within the scope in which it appears. | 6695 * in which it appears. |
| 5775 * @return the element associated with this identifier | 6696 * @return the element associated with this identifier |
| 5776 */ | 6697 */ |
| 5777 Element get element; | 6698 Element get element; |
| 6699 |
| 5778 /** | 6700 /** |
| 5779 * Return the lexical representation of the identifier. | 6701 * Return the lexical representation of the identifier. |
| 5780 * @return the lexical representation of the identifier | 6702 * @return the lexical representation of the identifier |
| 5781 */ | 6703 */ |
| 5782 String get name; | 6704 String get name; |
| 6705 |
| 6706 /** |
| 6707 * Return the element associated with this identifier based on static type inf
ormation, or{@code null} if the AST structure has not been resolved or if this i
dentifier could not be |
| 6708 * resolved. One example of the latter case is an identifier that is not defin
ed within the scope |
| 6709 * in which it appears |
| 6710 * @return the element associated with the operator |
| 6711 */ |
| 6712 Element get staticElement; |
| 5783 bool isAssignable() => true; | 6713 bool isAssignable() => true; |
| 5784 } | 6714 } |
| 6715 |
| 5785 /** | 6716 /** |
| 5786 * Instances of the class {@code IfStatement} represent an if statement. | 6717 * Instances of the class {@code IfStatement} represent an if statement. |
| 5787 * <pre> | 6718 * <pre> |
| 5788 * ifStatement ::= | 6719 * ifStatement ::= |
| 5789 * 'if' '(' {@link Expression expression} ')' {@link Statement thenStatement} ('
else' {@link Statement elseStatement})? | 6720 * 'if' '(' {@link Expression expression} ')' {@link Statement thenStatement} ('
else' {@link Statement elseStatement})? |
| 5790 * </pre> | 6721 * </pre> |
| 5791 * @coverage dart.engine.ast | 6722 * @coverage dart.engine.ast |
| 5792 */ | 6723 */ |
| 5793 class IfStatement extends Statement { | 6724 class IfStatement extends Statement { |
| 6725 |
| 5794 /** | 6726 /** |
| 5795 * The token representing the 'if' keyword. | 6727 * The token representing the 'if' keyword. |
| 5796 */ | 6728 */ |
| 5797 Token _ifKeyword; | 6729 Token _ifKeyword; |
| 6730 |
| 5798 /** | 6731 /** |
| 5799 * The left parenthesis. | 6732 * The left parenthesis. |
| 5800 */ | 6733 */ |
| 5801 Token _leftParenthesis; | 6734 Token _leftParenthesis; |
| 6735 |
| 5802 /** | 6736 /** |
| 5803 * The condition used to determine which of the statements is executed next. | 6737 * The condition used to determine which of the statements is executed next. |
| 5804 */ | 6738 */ |
| 5805 Expression _condition; | 6739 Expression _condition; |
| 6740 |
| 5806 /** | 6741 /** |
| 5807 * The right parenthesis. | 6742 * The right parenthesis. |
| 5808 */ | 6743 */ |
| 5809 Token _rightParenthesis; | 6744 Token _rightParenthesis; |
| 6745 |
| 5810 /** | 6746 /** |
| 5811 * The statement that is executed if the condition evaluates to {@code true}. | 6747 * The statement that is executed if the condition evaluates to {@code true}. |
| 5812 */ | 6748 */ |
| 5813 Statement _thenStatement; | 6749 Statement _thenStatement; |
| 6750 |
| 5814 /** | 6751 /** |
| 5815 * The token representing the 'else' keyword. | 6752 * The token representing the 'else' keyword. |
| 5816 */ | 6753 */ |
| 5817 Token _elseKeyword; | 6754 Token _elseKeyword; |
| 6755 |
| 5818 /** | 6756 /** |
| 5819 * The statement that is executed if the condition evaluates to {@code false},
or {@code null} if | 6757 * The statement that is executed if the condition evaluates to {@code false},
or {@code null} if |
| 5820 * there is no else statement. | 6758 * there is no else statement. |
| 5821 */ | 6759 */ |
| 5822 Statement _elseStatement; | 6760 Statement _elseStatement; |
| 6761 |
| 5823 /** | 6762 /** |
| 5824 * Initialize a newly created if statement. | 6763 * Initialize a newly created if statement. |
| 5825 * @param ifKeyword the token representing the 'if' keyword | 6764 * @param ifKeyword the token representing the 'if' keyword |
| 5826 * @param leftParenthesis the left parenthesis | 6765 * @param leftParenthesis the left parenthesis |
| 5827 * @param condition the condition used to determine which of the statements is
executed next | 6766 * @param condition the condition used to determine which of the statements is
executed next |
| 5828 * @param rightParenthesis the right parenthesis | 6767 * @param rightParenthesis the right parenthesis |
| 5829 * @param thenStatement the statement that is executed if the condition evalua
tes to {@code true} | 6768 * @param thenStatement the statement that is executed if the condition evalua
tes to {@code true} |
| 5830 * @param elseKeyword the token representing the 'else' keyword | 6769 * @param elseKeyword the token representing the 'else' keyword |
| 5831 * @param elseStatement the statement that is executed if the condition evalua
tes to {@code false} | 6770 * @param elseStatement the statement that is executed if the condition evalua
tes to {@code false} |
| 5832 */ | 6771 */ |
| 5833 IfStatement.full(Token ifKeyword, Token leftParenthesis, Expression condition,
Token rightParenthesis, Statement thenStatement, Token elseKeyword, Statement e
lseStatement) { | 6772 IfStatement.full(Token ifKeyword, Token leftParenthesis, Expression condition,
Token rightParenthesis, Statement thenStatement, Token elseKeyword, Statement e
lseStatement) { |
| 5834 this._ifKeyword = ifKeyword; | 6773 this._ifKeyword = ifKeyword; |
| 5835 this._leftParenthesis = leftParenthesis; | 6774 this._leftParenthesis = leftParenthesis; |
| 5836 this._condition = becomeParentOf(condition); | 6775 this._condition = becomeParentOf(condition); |
| 5837 this._rightParenthesis = rightParenthesis; | 6776 this._rightParenthesis = rightParenthesis; |
| 5838 this._thenStatement = becomeParentOf(thenStatement); | 6777 this._thenStatement = becomeParentOf(thenStatement); |
| 5839 this._elseKeyword = elseKeyword; | 6778 this._elseKeyword = elseKeyword; |
| 5840 this._elseStatement = becomeParentOf(elseStatement); | 6779 this._elseStatement = becomeParentOf(elseStatement); |
| 5841 } | 6780 } |
| 6781 |
| 5842 /** | 6782 /** |
| 5843 * Initialize a newly created if statement. | 6783 * Initialize a newly created if statement. |
| 5844 * @param ifKeyword the token representing the 'if' keyword | 6784 * @param ifKeyword the token representing the 'if' keyword |
| 5845 * @param leftParenthesis the left parenthesis | 6785 * @param leftParenthesis the left parenthesis |
| 5846 * @param condition the condition used to determine which of the statements is
executed next | 6786 * @param condition the condition used to determine which of the statements is
executed next |
| 5847 * @param rightParenthesis the right parenthesis | 6787 * @param rightParenthesis the right parenthesis |
| 5848 * @param thenStatement the statement that is executed if the condition evalua
tes to {@code true} | 6788 * @param thenStatement the statement that is executed if the condition evalua
tes to {@code true} |
| 5849 * @param elseKeyword the token representing the 'else' keyword | 6789 * @param elseKeyword the token representing the 'else' keyword |
| 5850 * @param elseStatement the statement that is executed if the condition evalua
tes to {@code false} | 6790 * @param elseStatement the statement that is executed if the condition evalua
tes to {@code false} |
| 5851 */ | 6791 */ |
| 5852 IfStatement({Token ifKeyword, Token leftParenthesis, Expression condition, Tok
en rightParenthesis, Statement thenStatement, Token elseKeyword, Statement elseS
tatement}) : this.full(ifKeyword, leftParenthesis, condition, rightParenthesis,
thenStatement, elseKeyword, elseStatement); | 6792 IfStatement({Token ifKeyword, Token leftParenthesis, Expression condition, Tok
en rightParenthesis, Statement thenStatement, Token elseKeyword, Statement elseS
tatement}) : this.full(ifKeyword, leftParenthesis, condition, rightParenthesis,
thenStatement, elseKeyword, elseStatement); |
| 5853 accept(ASTVisitor visitor) => visitor.visitIfStatement(this); | 6793 accept(ASTVisitor visitor) => visitor.visitIfStatement(this); |
| 5854 Token get beginToken => _ifKeyword; | 6794 Token get beginToken => _ifKeyword; |
| 6795 |
| 5855 /** | 6796 /** |
| 5856 * Return the condition used to determine which of the statements is executed
next. | 6797 * Return the condition used to determine which of the statements is executed
next. |
| 5857 * @return the condition used to determine which statement is executed next | 6798 * @return the condition used to determine which statement is executed next |
| 5858 */ | 6799 */ |
| 5859 Expression get condition => _condition; | 6800 Expression get condition => _condition; |
| 6801 |
| 5860 /** | 6802 /** |
| 5861 * Return the token representing the 'else' keyword. | 6803 * Return the token representing the 'else' keyword. |
| 5862 * @return the token representing the 'else' keyword | 6804 * @return the token representing the 'else' keyword |
| 5863 */ | 6805 */ |
| 5864 Token get elseKeyword => _elseKeyword; | 6806 Token get elseKeyword => _elseKeyword; |
| 6807 |
| 5865 /** | 6808 /** |
| 5866 * Return the statement that is executed if the condition evaluates to {@code
false}, or{@code null} if there is no else statement. | 6809 * Return the statement that is executed if the condition evaluates to {@code
false}, or{@code null} if there is no else statement. |
| 5867 * @return the statement that is executed if the condition evaluates to {@code
false} | 6810 * @return the statement that is executed if the condition evaluates to {@code
false} |
| 5868 */ | 6811 */ |
| 5869 Statement get elseStatement => _elseStatement; | 6812 Statement get elseStatement => _elseStatement; |
| 5870 Token get endToken { | 6813 Token get endToken { |
| 5871 if (_elseStatement != null) { | 6814 if (_elseStatement != null) { |
| 5872 return _elseStatement.endToken; | 6815 return _elseStatement.endToken; |
| 5873 } | 6816 } |
| 5874 return _thenStatement.endToken; | 6817 return _thenStatement.endToken; |
| 5875 } | 6818 } |
| 6819 |
| 5876 /** | 6820 /** |
| 5877 * Return the token representing the 'if' keyword. | 6821 * Return the token representing the 'if' keyword. |
| 5878 * @return the token representing the 'if' keyword | 6822 * @return the token representing the 'if' keyword |
| 5879 */ | 6823 */ |
| 5880 Token get ifKeyword => _ifKeyword; | 6824 Token get ifKeyword => _ifKeyword; |
| 6825 |
| 5881 /** | 6826 /** |
| 5882 * Return the left parenthesis. | 6827 * Return the left parenthesis. |
| 5883 * @return the left parenthesis | 6828 * @return the left parenthesis |
| 5884 */ | 6829 */ |
| 5885 Token get leftParenthesis => _leftParenthesis; | 6830 Token get leftParenthesis => _leftParenthesis; |
| 6831 |
| 5886 /** | 6832 /** |
| 5887 * Return the right parenthesis. | 6833 * Return the right parenthesis. |
| 5888 * @return the right parenthesis | 6834 * @return the right parenthesis |
| 5889 */ | 6835 */ |
| 5890 Token get rightParenthesis => _rightParenthesis; | 6836 Token get rightParenthesis => _rightParenthesis; |
| 6837 |
| 5891 /** | 6838 /** |
| 5892 * Return the statement that is executed if the condition evaluates to {@code
true}. | 6839 * Return the statement that is executed if the condition evaluates to {@code
true}. |
| 5893 * @return the statement that is executed if the condition evaluates to {@code
true} | 6840 * @return the statement that is executed if the condition evaluates to {@code
true} |
| 5894 */ | 6841 */ |
| 5895 Statement get thenStatement => _thenStatement; | 6842 Statement get thenStatement => _thenStatement; |
| 6843 |
| 5896 /** | 6844 /** |
| 5897 * Set the condition used to determine which of the statements is executed nex
t to the given | 6845 * Set the condition used to determine which of the statements is executed nex
t to the given |
| 5898 * expression. | 6846 * expression. |
| 5899 * @param expression the condition used to determine which statement is execut
ed next | 6847 * @param expression the condition used to determine which statement is execut
ed next |
| 5900 */ | 6848 */ |
| 5901 void set condition(Expression expression) { | 6849 void set condition(Expression expression) { |
| 5902 _condition = becomeParentOf(expression); | 6850 _condition = becomeParentOf(expression); |
| 5903 } | 6851 } |
| 6852 |
| 5904 /** | 6853 /** |
| 5905 * Set the token representing the 'else' keyword to the given token. | 6854 * Set the token representing the 'else' keyword to the given token. |
| 5906 * @param elseKeyword the token representing the 'else' keyword | 6855 * @param elseKeyword the token representing the 'else' keyword |
| 5907 */ | 6856 */ |
| 5908 void set elseKeyword(Token elseKeyword2) { | 6857 void set elseKeyword(Token elseKeyword2) { |
| 5909 this._elseKeyword = elseKeyword2; | 6858 this._elseKeyword = elseKeyword2; |
| 5910 } | 6859 } |
| 6860 |
| 5911 /** | 6861 /** |
| 5912 * Set the statement that is executed if the condition evaluates to {@code fal
se} to the given | 6862 * Set the statement that is executed if the condition evaluates to {@code fal
se} to the given |
| 5913 * statement. | 6863 * statement. |
| 5914 * @param statement the statement that is executed if the condition evaluates
to {@code false} | 6864 * @param statement the statement that is executed if the condition evaluates
to {@code false} |
| 5915 */ | 6865 */ |
| 5916 void set elseStatement(Statement statement) { | 6866 void set elseStatement(Statement statement) { |
| 5917 _elseStatement = becomeParentOf(statement); | 6867 _elseStatement = becomeParentOf(statement); |
| 5918 } | 6868 } |
| 6869 |
| 5919 /** | 6870 /** |
| 5920 * Set the token representing the 'if' keyword to the given token. | 6871 * Set the token representing the 'if' keyword to the given token. |
| 5921 * @param ifKeyword the token representing the 'if' keyword | 6872 * @param ifKeyword the token representing the 'if' keyword |
| 5922 */ | 6873 */ |
| 5923 void set ifKeyword(Token ifKeyword2) { | 6874 void set ifKeyword(Token ifKeyword2) { |
| 5924 this._ifKeyword = ifKeyword2; | 6875 this._ifKeyword = ifKeyword2; |
| 5925 } | 6876 } |
| 6877 |
| 5926 /** | 6878 /** |
| 5927 * Set the left parenthesis to the given token. | 6879 * Set the left parenthesis to the given token. |
| 5928 * @param leftParenthesis the left parenthesis | 6880 * @param leftParenthesis the left parenthesis |
| 5929 */ | 6881 */ |
| 5930 void set leftParenthesis(Token leftParenthesis2) { | 6882 void set leftParenthesis(Token leftParenthesis2) { |
| 5931 this._leftParenthesis = leftParenthesis2; | 6883 this._leftParenthesis = leftParenthesis2; |
| 5932 } | 6884 } |
| 6885 |
| 5933 /** | 6886 /** |
| 5934 * Set the right parenthesis to the given token. | 6887 * Set the right parenthesis to the given token. |
| 5935 * @param rightParenthesis the right parenthesis | 6888 * @param rightParenthesis the right parenthesis |
| 5936 */ | 6889 */ |
| 5937 void set rightParenthesis(Token rightParenthesis2) { | 6890 void set rightParenthesis(Token rightParenthesis2) { |
| 5938 this._rightParenthesis = rightParenthesis2; | 6891 this._rightParenthesis = rightParenthesis2; |
| 5939 } | 6892 } |
| 6893 |
| 5940 /** | 6894 /** |
| 5941 * Set the statement that is executed if the condition evaluates to {@code tru
e} to the given | 6895 * Set the statement that is executed if the condition evaluates to {@code tru
e} to the given |
| 5942 * statement. | 6896 * statement. |
| 5943 * @param statement the statement that is executed if the condition evaluates
to {@code true} | 6897 * @param statement the statement that is executed if the condition evaluates
to {@code true} |
| 5944 */ | 6898 */ |
| 5945 void set thenStatement(Statement statement) { | 6899 void set thenStatement(Statement statement) { |
| 5946 _thenStatement = becomeParentOf(statement); | 6900 _thenStatement = becomeParentOf(statement); |
| 5947 } | 6901 } |
| 5948 void visitChildren(ASTVisitor<Object> visitor) { | 6902 void visitChildren(ASTVisitor<Object> visitor) { |
| 5949 safelyVisitChild(_condition, visitor); | 6903 safelyVisitChild(_condition, visitor); |
| 5950 safelyVisitChild(_thenStatement, visitor); | 6904 safelyVisitChild(_thenStatement, visitor); |
| 5951 safelyVisitChild(_elseStatement, visitor); | 6905 safelyVisitChild(_elseStatement, visitor); |
| 5952 } | 6906 } |
| 5953 } | 6907 } |
| 6908 |
| 5954 /** | 6909 /** |
| 5955 * Instances of the class {@code ImplementsClause} represent the "implements" cl
ause in an class | 6910 * Instances of the class {@code ImplementsClause} represent the "implements" cl
ause in an class |
| 5956 * declaration. | 6911 * declaration. |
| 5957 * <pre> | 6912 * <pre> |
| 5958 * implementsClause ::= | 6913 * implementsClause ::= |
| 5959 * 'implements' {@link TypeName superclass} (',' {@link TypeName superclass}) | 6914 * 'implements' {@link TypeName superclass} (',' {@link TypeName superclass}) |
| 5960 * </pre> | 6915 * </pre> |
| 5961 * @coverage dart.engine.ast | 6916 * @coverage dart.engine.ast |
| 5962 */ | 6917 */ |
| 5963 class ImplementsClause extends ASTNode { | 6918 class ImplementsClause extends ASTNode { |
| 6919 |
| 5964 /** | 6920 /** |
| 5965 * The token representing the 'implements' keyword. | 6921 * The token representing the 'implements' keyword. |
| 5966 */ | 6922 */ |
| 5967 Token _keyword; | 6923 Token _keyword; |
| 6924 |
| 5968 /** | 6925 /** |
| 5969 * The interfaces that are being implemented. | 6926 * The interfaces that are being implemented. |
| 5970 */ | 6927 */ |
| 5971 NodeList<TypeName> _interfaces; | 6928 NodeList<TypeName> _interfaces; |
| 6929 |
| 5972 /** | 6930 /** |
| 5973 * Initialize a newly created extends clause. | 6931 * Initialize a newly created extends clause. |
| 5974 * @param keyword the token representing the 'implements' keyword | 6932 * @param keyword the token representing the 'implements' keyword |
| 5975 * @param interfaces the interfaces that are being implemented | 6933 * @param interfaces the interfaces that are being implemented |
| 5976 */ | 6934 */ |
| 5977 ImplementsClause.full(Token keyword, List<TypeName> interfaces) { | 6935 ImplementsClause.full(Token keyword, List<TypeName> interfaces) { |
| 5978 this._interfaces = new NodeList<TypeName>(this); | 6936 this._interfaces = new NodeList<TypeName>(this); |
| 5979 this._keyword = keyword; | 6937 this._keyword = keyword; |
| 5980 this._interfaces.addAll(interfaces); | 6938 this._interfaces.addAll(interfaces); |
| 5981 } | 6939 } |
| 6940 |
| 5982 /** | 6941 /** |
| 5983 * Initialize a newly created extends clause. | 6942 * Initialize a newly created extends clause. |
| 5984 * @param keyword the token representing the 'implements' keyword | 6943 * @param keyword the token representing the 'implements' keyword |
| 5985 * @param interfaces the interfaces that are being implemented | 6944 * @param interfaces the interfaces that are being implemented |
| 5986 */ | 6945 */ |
| 5987 ImplementsClause({Token keyword, List<TypeName> interfaces}) : this.full(keywo
rd, interfaces); | 6946 ImplementsClause({Token keyword, List<TypeName> interfaces}) : this.full(keywo
rd, interfaces); |
| 5988 accept(ASTVisitor visitor) => visitor.visitImplementsClause(this); | 6947 accept(ASTVisitor visitor) => visitor.visitImplementsClause(this); |
| 5989 Token get beginToken => _keyword; | 6948 Token get beginToken => _keyword; |
| 5990 Token get endToken => _interfaces.endToken; | 6949 Token get endToken => _interfaces.endToken; |
| 6950 |
| 5991 /** | 6951 /** |
| 5992 * Return the list of the interfaces that are being implemented. | 6952 * Return the list of the interfaces that are being implemented. |
| 5993 * @return the list of the interfaces that are being implemented | 6953 * @return the list of the interfaces that are being implemented |
| 5994 */ | 6954 */ |
| 5995 NodeList<TypeName> get interfaces => _interfaces; | 6955 NodeList<TypeName> get interfaces => _interfaces; |
| 6956 |
| 5996 /** | 6957 /** |
| 5997 * Return the token representing the 'implements' keyword. | 6958 * Return the token representing the 'implements' keyword. |
| 5998 * @return the token representing the 'implements' keyword | 6959 * @return the token representing the 'implements' keyword |
| 5999 */ | 6960 */ |
| 6000 Token get keyword => _keyword; | 6961 Token get keyword => _keyword; |
| 6962 |
| 6001 /** | 6963 /** |
| 6002 * Set the token representing the 'implements' keyword to the given token. | 6964 * Set the token representing the 'implements' keyword to the given token. |
| 6003 * @param keyword the token representing the 'implements' keyword | 6965 * @param keyword the token representing the 'implements' keyword |
| 6004 */ | 6966 */ |
| 6005 void set keyword(Token keyword2) { | 6967 void set keyword(Token keyword2) { |
| 6006 this._keyword = keyword2; | 6968 this._keyword = keyword2; |
| 6007 } | 6969 } |
| 6008 void visitChildren(ASTVisitor<Object> visitor) { | 6970 void visitChildren(ASTVisitor<Object> visitor) { |
| 6009 _interfaces.accept(visitor); | 6971 _interfaces.accept(visitor); |
| 6010 } | 6972 } |
| 6011 } | 6973 } |
| 6974 |
| 6012 /** | 6975 /** |
| 6013 * Instances of the class {@code ImportDirective} represent an import directive. | 6976 * Instances of the class {@code ImportDirective} represent an import directive. |
| 6014 * <pre> | 6977 * <pre> |
| 6015 * importDirective ::={@link Annotation metadata} 'import' {@link StringLiteral
libraryUri} ('as' identifier)? {@link Combinator combinator}* ';' | 6978 * importDirective ::={@link Annotation metadata} 'import' {@link StringLiteral
libraryUri} ('as' identifier)? {@link Combinator combinator}* ';' |
| 6016 * </pre> | 6979 * </pre> |
| 6017 * @coverage dart.engine.ast | 6980 * @coverage dart.engine.ast |
| 6018 */ | 6981 */ |
| 6019 class ImportDirective extends NamespaceDirective { | 6982 class ImportDirective extends NamespaceDirective { |
| 6983 |
| 6020 /** | 6984 /** |
| 6021 * The token representing the 'as' token, or {@code null} if the imported name
s are not prefixed. | 6985 * The token representing the 'as' token, or {@code null} if the imported name
s are not prefixed. |
| 6022 */ | 6986 */ |
| 6023 Token _asToken; | 6987 Token _asToken; |
| 6988 |
| 6024 /** | 6989 /** |
| 6025 * The prefix to be used with the imported names, or {@code null} if the impor
ted names are not | 6990 * The prefix to be used with the imported names, or {@code null} if the impor
ted names are not |
| 6026 * prefixed. | 6991 * prefixed. |
| 6027 */ | 6992 */ |
| 6028 SimpleIdentifier _prefix; | 6993 SimpleIdentifier _prefix; |
| 6994 |
| 6029 /** | 6995 /** |
| 6030 * Initialize a newly created import directive. | 6996 * Initialize a newly created import directive. |
| 6031 * @param comment the documentation comment associated with this directive | 6997 * @param comment the documentation comment associated with this directive |
| 6032 * @param metadata the annotations associated with the directive | 6998 * @param metadata the annotations associated with the directive |
| 6033 * @param keyword the token representing the 'import' keyword | 6999 * @param keyword the token representing the 'import' keyword |
| 6034 * @param libraryUri the URI of the library being imported | 7000 * @param libraryUri the URI of the library being imported |
| 6035 * @param asToken the token representing the 'as' token | 7001 * @param asToken the token representing the 'as' token |
| 6036 * @param prefix the prefix to be used with the imported names | 7002 * @param prefix the prefix to be used with the imported names |
| 6037 * @param combinators the combinators used to control how names are imported | 7003 * @param combinators the combinators used to control how names are imported |
| 6038 * @param semicolon the semicolon terminating the directive | 7004 * @param semicolon the semicolon terminating the directive |
| 6039 */ | 7005 */ |
| 6040 ImportDirective.full(Comment comment, List<Annotation> metadata, Token keyword
, StringLiteral libraryUri, Token asToken, SimpleIdentifier prefix, List<Combina
tor> combinators, Token semicolon) : super.full(comment, metadata, keyword, libr
aryUri, combinators, semicolon) { | 7006 ImportDirective.full(Comment comment, List<Annotation> metadata, Token keyword
, StringLiteral libraryUri, Token asToken, SimpleIdentifier prefix, List<Combina
tor> combinators, Token semicolon) : super.full(comment, metadata, keyword, libr
aryUri, combinators, semicolon) { |
| 6041 this._asToken = asToken; | 7007 this._asToken = asToken; |
| 6042 this._prefix = becomeParentOf(prefix); | 7008 this._prefix = becomeParentOf(prefix); |
| 6043 } | 7009 } |
| 7010 |
| 6044 /** | 7011 /** |
| 6045 * Initialize a newly created import directive. | 7012 * Initialize a newly created import directive. |
| 6046 * @param comment the documentation comment associated with this directive | 7013 * @param comment the documentation comment associated with this directive |
| 6047 * @param metadata the annotations associated with the directive | 7014 * @param metadata the annotations associated with the directive |
| 6048 * @param keyword the token representing the 'import' keyword | 7015 * @param keyword the token representing the 'import' keyword |
| 6049 * @param libraryUri the URI of the library being imported | 7016 * @param libraryUri the URI of the library being imported |
| 6050 * @param asToken the token representing the 'as' token | 7017 * @param asToken the token representing the 'as' token |
| 6051 * @param prefix the prefix to be used with the imported names | 7018 * @param prefix the prefix to be used with the imported names |
| 6052 * @param combinators the combinators used to control how names are imported | 7019 * @param combinators the combinators used to control how names are imported |
| 6053 * @param semicolon the semicolon terminating the directive | 7020 * @param semicolon the semicolon terminating the directive |
| 6054 */ | 7021 */ |
| 6055 ImportDirective({Comment comment, List<Annotation> metadata, Token keyword, St
ringLiteral libraryUri, Token asToken, SimpleIdentifier prefix, List<Combinator>
combinators, Token semicolon}) : this.full(comment, metadata, keyword, libraryU
ri, asToken, prefix, combinators, semicolon); | 7022 ImportDirective({Comment comment, List<Annotation> metadata, Token keyword, St
ringLiteral libraryUri, Token asToken, SimpleIdentifier prefix, List<Combinator>
combinators, Token semicolon}) : this.full(comment, metadata, keyword, libraryU
ri, asToken, prefix, combinators, semicolon); |
| 6056 accept(ASTVisitor visitor) => visitor.visitImportDirective(this); | 7023 accept(ASTVisitor visitor) => visitor.visitImportDirective(this); |
| 7024 |
| 6057 /** | 7025 /** |
| 6058 * Return the token representing the 'as' token, or {@code null} if the import
ed names are not | 7026 * Return the token representing the 'as' token, or {@code null} if the import
ed names are not |
| 6059 * prefixed. | 7027 * prefixed. |
| 6060 * @return the token representing the 'as' token | 7028 * @return the token representing the 'as' token |
| 6061 */ | 7029 */ |
| 6062 Token get asToken => _asToken; | 7030 Token get asToken => _asToken; |
| 7031 |
| 6063 /** | 7032 /** |
| 6064 * Return the prefix to be used with the imported names, or {@code null} if th
e imported names are | 7033 * Return the prefix to be used with the imported names, or {@code null} if th
e imported names are |
| 6065 * not prefixed. | 7034 * not prefixed. |
| 6066 * @return the prefix to be used with the imported names | 7035 * @return the prefix to be used with the imported names |
| 6067 */ | 7036 */ |
| 6068 SimpleIdentifier get prefix => _prefix; | 7037 SimpleIdentifier get prefix => _prefix; |
| 7038 LibraryElement get uriElement { |
| 7039 Element element2 = element; |
| 7040 if (element2 is ImportElement) { |
| 7041 return ((element2 as ImportElement)).importedLibrary; |
| 7042 } |
| 7043 return null; |
| 7044 } |
| 7045 |
| 6069 /** | 7046 /** |
| 6070 * Set the token representing the 'as' token to the given token. | 7047 * Set the token representing the 'as' token to the given token. |
| 6071 * @param asToken the token representing the 'as' token | 7048 * @param asToken the token representing the 'as' token |
| 6072 */ | 7049 */ |
| 6073 void set asToken(Token asToken2) { | 7050 void set asToken(Token asToken2) { |
| 6074 this._asToken = asToken2; | 7051 this._asToken = asToken2; |
| 6075 } | 7052 } |
| 7053 |
| 6076 /** | 7054 /** |
| 6077 * Set the prefix to be used with the imported names to the given identifier. | 7055 * Set the prefix to be used with the imported names to the given identifier. |
| 6078 * @param prefix the prefix to be used with the imported names | 7056 * @param prefix the prefix to be used with the imported names |
| 6079 */ | 7057 */ |
| 6080 void set prefix(SimpleIdentifier prefix2) { | 7058 void set prefix(SimpleIdentifier prefix2) { |
| 6081 this._prefix = becomeParentOf(prefix2); | 7059 this._prefix = becomeParentOf(prefix2); |
| 6082 } | 7060 } |
| 6083 void visitChildren(ASTVisitor<Object> visitor) { | 7061 void visitChildren(ASTVisitor<Object> visitor) { |
| 6084 super.visitChildren(visitor); | 7062 super.visitChildren(visitor); |
| 6085 safelyVisitChild(_prefix, visitor); | 7063 safelyVisitChild(_prefix, visitor); |
| 6086 combinators.accept(visitor); | 7064 combinators.accept(visitor); |
| 6087 } | 7065 } |
| 6088 } | 7066 } |
| 7067 |
| 6089 /** | 7068 /** |
| 6090 * Instances of the class {@code IndexExpression} represent an index expression. | 7069 * Instances of the class {@code IndexExpression} represent an index expression. |
| 6091 * <pre> | 7070 * <pre> |
| 6092 * indexExpression ::={@link Expression target} '\[' {@link Expression index} '\
]' | 7071 * indexExpression ::={@link Expression target} '\[' {@link Expression index} '\
]' |
| 6093 * </pre> | 7072 * </pre> |
| 6094 * @coverage dart.engine.ast | 7073 * @coverage dart.engine.ast |
| 6095 */ | 7074 */ |
| 6096 class IndexExpression extends Expression { | 7075 class IndexExpression extends Expression { |
| 7076 |
| 6097 /** | 7077 /** |
| 6098 * The expression used to compute the object being indexed, or {@code null} if
this index | 7078 * The expression used to compute the object being indexed, or {@code null} if
this index |
| 6099 * expression is part of a cascade expression. | 7079 * expression is part of a cascade expression. |
| 6100 */ | 7080 */ |
| 6101 Expression _target; | 7081 Expression _target; |
| 7082 |
| 6102 /** | 7083 /** |
| 6103 * The period ("..") before a cascaded index expression, or {@code null} if th
is index expression | 7084 * The period ("..") before a cascaded index expression, or {@code null} if th
is index expression |
| 6104 * is not part of a cascade expression. | 7085 * is not part of a cascade expression. |
| 6105 */ | 7086 */ |
| 6106 Token _period; | 7087 Token _period; |
| 7088 |
| 6107 /** | 7089 /** |
| 6108 * The left square bracket. | 7090 * The left square bracket. |
| 6109 */ | 7091 */ |
| 6110 Token _leftBracket; | 7092 Token _leftBracket; |
| 7093 |
| 6111 /** | 7094 /** |
| 6112 * The expression used to compute the index. | 7095 * The expression used to compute the index. |
| 6113 */ | 7096 */ |
| 6114 Expression _index; | 7097 Expression _index; |
| 7098 |
| 6115 /** | 7099 /** |
| 6116 * The right square bracket. | 7100 * The right square bracket. |
| 6117 */ | 7101 */ |
| 6118 Token _rightBracket; | 7102 Token _rightBracket; |
| 7103 |
| 6119 /** | 7104 /** |
| 6120 * The element associated with the operator, or {@code null} if the AST struct
ure has not been | 7105 * The element associated with the operator based on the static type of the ta
rget, or{@code null} if the AST structure has not been resolved or if the operat
or could not be |
| 6121 * resolved or if the operator could not be resolved. | 7106 * resolved. |
| 6122 */ | 7107 */ |
| 6123 MethodElement _element; | 7108 MethodElement _staticElement; |
| 7109 |
| 7110 /** |
| 7111 * The element associated with the operator based on the propagated type of th
e target, or{@code null} if the AST structure has not been resolved or if the op
erator could not be |
| 7112 * resolved. |
| 7113 */ |
| 7114 MethodElement _propagatedElement; |
| 7115 |
| 6124 /** | 7116 /** |
| 6125 * Initialize a newly created index expression. | 7117 * Initialize a newly created index expression. |
| 6126 * @param target the expression used to compute the object being indexed | 7118 * @param target the expression used to compute the object being indexed |
| 6127 * @param leftBracket the left square bracket | 7119 * @param leftBracket the left square bracket |
| 6128 * @param index the expression used to compute the index | 7120 * @param index the expression used to compute the index |
| 6129 * @param rightBracket the right square bracket | 7121 * @param rightBracket the right square bracket |
| 6130 */ | 7122 */ |
| 6131 IndexExpression.forTarget_full(Expression target2, Token leftBracket2, Express
ion index2, Token rightBracket2) { | 7123 IndexExpression.forTarget_full(Expression target2, Token leftBracket2, Express
ion index2, Token rightBracket2) { |
| 6132 _jtd_constructor_58_impl(target2, leftBracket2, index2, rightBracket2); | 7124 _jtd_constructor_58_impl(target2, leftBracket2, index2, rightBracket2); |
| 6133 } | 7125 } |
| 7126 |
| 6134 /** | 7127 /** |
| 6135 * Initialize a newly created index expression. | 7128 * Initialize a newly created index expression. |
| 6136 * @param target the expression used to compute the object being indexed | 7129 * @param target the expression used to compute the object being indexed |
| 6137 * @param leftBracket the left square bracket | 7130 * @param leftBracket the left square bracket |
| 6138 * @param index the expression used to compute the index | 7131 * @param index the expression used to compute the index |
| 6139 * @param rightBracket the right square bracket | 7132 * @param rightBracket the right square bracket |
| 6140 */ | 7133 */ |
| 6141 IndexExpression.forTarget({Expression target2, Token leftBracket2, Expression
index2, Token rightBracket2}) : this.forTarget_full(target2, leftBracket2, index
2, rightBracket2); | 7134 IndexExpression.forTarget({Expression target2, Token leftBracket2, Expression
index2, Token rightBracket2}) : this.forTarget_full(target2, leftBracket2, index
2, rightBracket2); |
| 6142 _jtd_constructor_58_impl(Expression target2, Token leftBracket2, Expression in
dex2, Token rightBracket2) { | 7135 _jtd_constructor_58_impl(Expression target2, Token leftBracket2, Expression in
dex2, Token rightBracket2) { |
| 6143 this._target = becomeParentOf(target2); | 7136 this._target = becomeParentOf(target2); |
| 6144 this._leftBracket = leftBracket2; | 7137 this._leftBracket = leftBracket2; |
| 6145 this._index = becomeParentOf(index2); | 7138 this._index = becomeParentOf(index2); |
| 6146 this._rightBracket = rightBracket2; | 7139 this._rightBracket = rightBracket2; |
| 6147 } | 7140 } |
| 7141 |
| 6148 /** | 7142 /** |
| 6149 * Initialize a newly created index expression. | 7143 * Initialize a newly created index expression. |
| 6150 * @param period the period ("..") before a cascaded index expression | 7144 * @param period the period ("..") before a cascaded index expression |
| 6151 * @param leftBracket the left square bracket | 7145 * @param leftBracket the left square bracket |
| 6152 * @param index the expression used to compute the index | 7146 * @param index the expression used to compute the index |
| 6153 * @param rightBracket the right square bracket | 7147 * @param rightBracket the right square bracket |
| 6154 */ | 7148 */ |
| 6155 IndexExpression.forCascade_full(Token period2, Token leftBracket2, Expression
index2, Token rightBracket2) { | 7149 IndexExpression.forCascade_full(Token period2, Token leftBracket2, Expression
index2, Token rightBracket2) { |
| 6156 _jtd_constructor_59_impl(period2, leftBracket2, index2, rightBracket2); | 7150 _jtd_constructor_59_impl(period2, leftBracket2, index2, rightBracket2); |
| 6157 } | 7151 } |
| 7152 |
| 6158 /** | 7153 /** |
| 6159 * Initialize a newly created index expression. | 7154 * Initialize a newly created index expression. |
| 6160 * @param period the period ("..") before a cascaded index expression | 7155 * @param period the period ("..") before a cascaded index expression |
| 6161 * @param leftBracket the left square bracket | 7156 * @param leftBracket the left square bracket |
| 6162 * @param index the expression used to compute the index | 7157 * @param index the expression used to compute the index |
| 6163 * @param rightBracket the right square bracket | 7158 * @param rightBracket the right square bracket |
| 6164 */ | 7159 */ |
| 6165 IndexExpression.forCascade({Token period2, Token leftBracket2, Expression inde
x2, Token rightBracket2}) : this.forCascade_full(period2, leftBracket2, index2,
rightBracket2); | 7160 IndexExpression.forCascade({Token period2, Token leftBracket2, Expression inde
x2, Token rightBracket2}) : this.forCascade_full(period2, leftBracket2, index2,
rightBracket2); |
| 6166 _jtd_constructor_59_impl(Token period2, Token leftBracket2, Expression index2,
Token rightBracket2) { | 7161 _jtd_constructor_59_impl(Token period2, Token leftBracket2, Expression index2,
Token rightBracket2) { |
| 6167 this._period = period2; | 7162 this._period = period2; |
| 6168 this._leftBracket = leftBracket2; | 7163 this._leftBracket = leftBracket2; |
| 6169 this._index = becomeParentOf(index2); | 7164 this._index = becomeParentOf(index2); |
| 6170 this._rightBracket = rightBracket2; | 7165 this._rightBracket = rightBracket2; |
| 6171 } | 7166 } |
| 6172 accept(ASTVisitor visitor) => visitor.visitIndexExpression(this); | 7167 accept(ASTVisitor visitor) => visitor.visitIndexExpression(this); |
| 7168 |
| 6173 /** | 7169 /** |
| 6174 * Return the expression used to compute the object being indexed, or {@code n
ull} if this index | 7170 * Return the expression used to compute the object being indexed, or {@code n
ull} if this index |
| 6175 * expression is part of a cascade expression. | 7171 * expression is part of a cascade expression. |
| 6176 * @return the expression used to compute the object being indexed | 7172 * @return the expression used to compute the object being indexed |
| 6177 * @see #getRealTarget() | 7173 * @see #getRealTarget() |
| 6178 */ | 7174 */ |
| 6179 Expression get array => _target; | 7175 Expression get array => _target; |
| 6180 Token get beginToken { | 7176 Token get beginToken { |
| 6181 if (_target != null) { | 7177 if (_target != null) { |
| 6182 return _target.beginToken; | 7178 return _target.beginToken; |
| 6183 } | 7179 } |
| 6184 return _period; | 7180 return _period; |
| 6185 } | 7181 } |
| 7182 |
| 6186 /** | 7183 /** |
| 6187 * Return the element associated with the operator, or {@code null} if the AST
structure has not | 7184 * Return the element associated with the operator based on the propagated typ
e of the target, or{@code null} if the AST structure has not been resolved or if
the operator could not be |
| 6188 * been resolved or if the operator could not be resolved. One example of the
latter case is an | 7185 * resolved. One example of the latter case is an operator that is not defined
for the type of the |
| 6189 * operator that is not defined for the type of the left-hand operand. | 7186 * target. |
| 6190 * @return the element associated with this operator | 7187 * @return the element associated with this operator |
| 6191 */ | 7188 */ |
| 6192 MethodElement get element => _element; | 7189 MethodElement get element => _propagatedElement; |
| 6193 Token get endToken => _rightBracket; | 7190 Token get endToken => _rightBracket; |
| 7191 |
| 6194 /** | 7192 /** |
| 6195 * Return the expression used to compute the index. | 7193 * Return the expression used to compute the index. |
| 6196 * @return the expression used to compute the index | 7194 * @return the expression used to compute the index |
| 6197 */ | 7195 */ |
| 6198 Expression get index => _index; | 7196 Expression get index => _index; |
| 7197 |
| 6199 /** | 7198 /** |
| 6200 * Return the left square bracket. | 7199 * Return the left square bracket. |
| 6201 * @return the left square bracket | 7200 * @return the left square bracket |
| 6202 */ | 7201 */ |
| 6203 Token get leftBracket => _leftBracket; | 7202 Token get leftBracket => _leftBracket; |
| 7203 |
| 6204 /** | 7204 /** |
| 6205 * Return the period ("..") before a cascaded index expression, or {@code null
} if this index | 7205 * Return the period ("..") before a cascaded index expression, or {@code null
} if this index |
| 6206 * expression is not part of a cascade expression. | 7206 * expression is not part of a cascade expression. |
| 6207 * @return the period ("..") before a cascaded index expression | 7207 * @return the period ("..") before a cascaded index expression |
| 6208 */ | 7208 */ |
| 6209 Token get period => _period; | 7209 Token get period => _period; |
| 7210 |
| 6210 /** | 7211 /** |
| 6211 * Return the expression used to compute the object being indexed. If this ind
ex expression is not | 7212 * Return the expression used to compute the object being indexed. If this ind
ex expression is not |
| 6212 * part of a cascade expression, then this is the same as {@link #getArray()}.
If this index | 7213 * part of a cascade expression, then this is the same as {@link #getArray()}.
If this index |
| 6213 * expression is part of a cascade expression, then the target expression stor
ed with the cascade | 7214 * expression is part of a cascade expression, then the target expression stor
ed with the cascade |
| 6214 * expression is returned. | 7215 * expression is returned. |
| 6215 * @return the expression used to compute the object being indexed | 7216 * @return the expression used to compute the object being indexed |
| 6216 * @see #getArray() | 7217 * @see #getArray() |
| 6217 */ | 7218 */ |
| 6218 Expression get realTarget { | 7219 Expression get realTarget { |
| 6219 if (isCascaded()) { | 7220 if (isCascaded()) { |
| 6220 ASTNode ancestor = parent; | 7221 ASTNode ancestor = parent; |
| 6221 while (ancestor is! CascadeExpression) { | 7222 while (ancestor is! CascadeExpression) { |
| 6222 if (ancestor == null) { | 7223 if (ancestor == null) { |
| 6223 return _target; | 7224 return _target; |
| 6224 } | 7225 } |
| 6225 ancestor = ancestor.parent; | 7226 ancestor = ancestor.parent; |
| 6226 } | 7227 } |
| 6227 return ((ancestor as CascadeExpression)).target; | 7228 return ((ancestor as CascadeExpression)).target; |
| 6228 } | 7229 } |
| 6229 return _target; | 7230 return _target; |
| 6230 } | 7231 } |
| 7232 |
| 6231 /** | 7233 /** |
| 6232 * Return the right square bracket. | 7234 * Return the right square bracket. |
| 6233 * @return the right square bracket | 7235 * @return the right square bracket |
| 6234 */ | 7236 */ |
| 6235 Token get rightBracket => _rightBracket; | 7237 Token get rightBracket => _rightBracket; |
| 7238 |
| 7239 /** |
| 7240 * 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 |
| 7241 * resolved. One example of the latter case is an operator that is not defined
for the type of the |
| 7242 * target. |
| 7243 * @return the element associated with the operator |
| 7244 */ |
| 7245 MethodElement get staticElement => _staticElement; |
| 7246 |
| 6236 /** | 7247 /** |
| 6237 * Return {@code true} if this expression is computing a right-hand value. | 7248 * Return {@code true} if this expression is computing a right-hand value. |
| 6238 * <p> | 7249 * <p> |
| 6239 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are | 7250 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are |
| 6240 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. | 7251 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. |
| 6241 * @return {@code true} if this expression is in a context where the operator
'\[\]' will be invoked | 7252 * @return {@code true} if this expression is in a context where the operator
'\[\]' will be invoked |
| 6242 */ | 7253 */ |
| 6243 bool inGetterContext() { | 7254 bool inGetterContext() { |
| 6244 ASTNode parent2 = parent; | 7255 ASTNode parent2 = parent; |
| 6245 if (parent2 is AssignmentExpression) { | 7256 if (parent2 is AssignmentExpression) { |
| 6246 AssignmentExpression assignment = parent2 as AssignmentExpression; | 7257 AssignmentExpression assignment = parent2 as AssignmentExpression; |
| 6247 if (identical(assignment.leftHandSide, this) && identical(assignment.opera
tor.type, TokenType.EQ)) { | 7258 if (identical(assignment.leftHandSide, this) && identical(assignment.opera
tor.type, TokenType.EQ)) { |
| 6248 return false; | 7259 return false; |
| 6249 } | 7260 } |
| 6250 } | 7261 } |
| 6251 return true; | 7262 return true; |
| 6252 } | 7263 } |
| 7264 |
| 6253 /** | 7265 /** |
| 6254 * Return {@code true} if this expression is computing a left-hand value. | 7266 * Return {@code true} if this expression is computing a left-hand value. |
| 6255 * <p> | 7267 * <p> |
| 6256 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are | 7268 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are |
| 6257 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. | 7269 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. |
| 6258 * @return {@code true} if this expression is in a context where the operator
'\[\]=' will be | 7270 * @return {@code true} if this expression is in a context where the operator
'\[\]=' will be |
| 6259 * invoked | 7271 * invoked |
| 6260 */ | 7272 */ |
| 6261 bool inSetterContext() { | 7273 bool inSetterContext() { |
| 6262 ASTNode parent2 = parent; | 7274 ASTNode parent2 = parent; |
| 6263 if (parent2 is PrefixExpression) { | 7275 if (parent2 is PrefixExpression) { |
| 6264 return ((parent2 as PrefixExpression)).operator.type.isIncrementOperator()
; | 7276 return ((parent2 as PrefixExpression)).operator.type.isIncrementOperator()
; |
| 6265 } else if (parent2 is PostfixExpression) { | 7277 } else if (parent2 is PostfixExpression) { |
| 6266 return true; | 7278 return true; |
| 6267 } else if (parent2 is AssignmentExpression) { | 7279 } else if (parent2 is AssignmentExpression) { |
| 6268 return identical(((parent2 as AssignmentExpression)).leftHandSide, this); | 7280 return identical(((parent2 as AssignmentExpression)).leftHandSide, this); |
| 6269 } | 7281 } |
| 6270 return false; | 7282 return false; |
| 6271 } | 7283 } |
| 6272 bool isAssignable() => true; | 7284 bool isAssignable() => true; |
| 7285 |
| 6273 /** | 7286 /** |
| 6274 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this | 7287 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this |
| 6275 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. | 7288 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. |
| 6276 * @return {@code true} if this expression is cascaded | 7289 * @return {@code true} if this expression is cascaded |
| 6277 */ | 7290 */ |
| 6278 bool isCascaded() => _period != null; | 7291 bool isCascaded() => _period != null; |
| 7292 |
| 6279 /** | 7293 /** |
| 6280 * Set the expression used to compute the object being indexed to the given ex
pression. | 7294 * Set the expression used to compute the object being indexed to the given ex
pression. |
| 6281 * @param expression the expression used to compute the object being indexed | 7295 * @param expression the expression used to compute the object being indexed |
| 6282 */ | 7296 */ |
| 6283 void set array(Expression expression) { | 7297 void set array(Expression expression) { |
| 6284 _target = becomeParentOf(expression); | 7298 _target = becomeParentOf(expression); |
| 6285 } | 7299 } |
| 7300 |
| 6286 /** | 7301 /** |
| 6287 * Set the element associated with the operator to the given element. | 7302 * Set the element associated with the operator based on the propagated type o
f the target to the |
| 6288 * @param element the element associated with this operator | 7303 * given element. |
| 7304 * @param element the element to be associated with this operator |
| 6289 */ | 7305 */ |
| 6290 void set element(MethodElement element2) { | 7306 void set element(MethodElement element2) { |
| 6291 this._element = element2; | 7307 _propagatedElement = element2; |
| 6292 } | 7308 } |
| 7309 |
| 6293 /** | 7310 /** |
| 6294 * Set the expression used to compute the index to the given expression. | 7311 * Set the expression used to compute the index to the given expression. |
| 6295 * @param expression the expression used to compute the index | 7312 * @param expression the expression used to compute the index |
| 6296 */ | 7313 */ |
| 6297 void set index(Expression expression) { | 7314 void set index(Expression expression) { |
| 6298 _index = becomeParentOf(expression); | 7315 _index = becomeParentOf(expression); |
| 6299 } | 7316 } |
| 7317 |
| 6300 /** | 7318 /** |
| 6301 * Set the left square bracket to the given token. | 7319 * Set the left square bracket to the given token. |
| 6302 * @param bracket the left square bracket | 7320 * @param bracket the left square bracket |
| 6303 */ | 7321 */ |
| 6304 void set leftBracket(Token bracket) { | 7322 void set leftBracket(Token bracket) { |
| 6305 _leftBracket = bracket; | 7323 _leftBracket = bracket; |
| 6306 } | 7324 } |
| 7325 |
| 6307 /** | 7326 /** |
| 6308 * Set the period ("..") before a cascaded index expression to the given token
. | 7327 * Set the period ("..") before a cascaded index expression to the given token
. |
| 6309 * @param period the period ("..") before a cascaded index expression | 7328 * @param period the period ("..") before a cascaded index expression |
| 6310 */ | 7329 */ |
| 6311 void set period(Token period2) { | 7330 void set period(Token period2) { |
| 6312 this._period = period2; | 7331 this._period = period2; |
| 6313 } | 7332 } |
| 7333 |
| 6314 /** | 7334 /** |
| 6315 * Set the right square bracket to the given token. | 7335 * Set the right square bracket to the given token. |
| 6316 * @param bracket the right square bracket | 7336 * @param bracket the right square bracket |
| 6317 */ | 7337 */ |
| 6318 void set rightBracket(Token bracket) { | 7338 void set rightBracket(Token bracket) { |
| 6319 _rightBracket = bracket; | 7339 _rightBracket = bracket; |
| 6320 } | 7340 } |
| 7341 |
| 7342 /** |
| 7343 * Set the element associated with the operator based on the static type of th
e target to the |
| 7344 * given element. |
| 7345 * @param element the static element to be associated with the operator |
| 7346 */ |
| 7347 void set staticElement(MethodElement element) { |
| 7348 _staticElement = element; |
| 7349 } |
| 6321 void visitChildren(ASTVisitor<Object> visitor) { | 7350 void visitChildren(ASTVisitor<Object> visitor) { |
| 6322 safelyVisitChild(_target, visitor); | 7351 safelyVisitChild(_target, visitor); |
| 6323 safelyVisitChild(_index, visitor); | 7352 safelyVisitChild(_index, visitor); |
| 6324 } | 7353 } |
| 7354 |
| 7355 /** |
| 7356 * Return the parameter element representing the parameter to which the value
of the index |
| 7357 * expression will be bound. May be {@code null}. |
| 7358 * <p> |
| 7359 * This method is only intended to be used by {@link Expression#getParameterEl
ement()}. |
| 7360 * @return the parameter element representing the parameter to which the value
of the index |
| 7361 * expression will be bound |
| 7362 */ |
| 7363 ParameterElement get parameterElementForIndex { |
| 7364 if (_propagatedElement == null) { |
| 7365 return null; |
| 7366 } |
| 7367 List<ParameterElement> parameters2 = _propagatedElement.parameters; |
| 7368 if (parameters2.length < 1) { |
| 7369 return null; |
| 7370 } |
| 7371 return parameters2[0]; |
| 7372 } |
| 6325 } | 7373 } |
| 7374 |
| 6326 /** | 7375 /** |
| 6327 * Instances of the class {@code InstanceCreationExpression} represent an instan
ce creation | 7376 * Instances of the class {@code InstanceCreationExpression} represent an instan
ce creation |
| 6328 * expression. | 7377 * expression. |
| 6329 * <pre> | 7378 * <pre> |
| 6330 * newExpression ::= | 7379 * newExpression ::= |
| 6331 * ('new' | 'const') {@link TypeName type} ('.' {@link SimpleIdentifier identifi
er})? {@link ArgumentList argumentList}</pre> | 7380 * ('new' | 'const') {@link TypeName type} ('.' {@link SimpleIdentifier identifi
er})? {@link ArgumentList argumentList}</pre> |
| 6332 * @coverage dart.engine.ast | 7381 * @coverage dart.engine.ast |
| 6333 */ | 7382 */ |
| 6334 class InstanceCreationExpression extends Expression { | 7383 class InstanceCreationExpression extends Expression { |
| 7384 |
| 6335 /** | 7385 /** |
| 6336 * The keyword used to indicate how an object should be created. | 7386 * The keyword used to indicate how an object should be created. |
| 6337 */ | 7387 */ |
| 6338 Token _keyword; | 7388 Token _keyword; |
| 7389 |
| 6339 /** | 7390 /** |
| 6340 * The name of the constructor to be invoked. | 7391 * The name of the constructor to be invoked. |
| 6341 */ | 7392 */ |
| 6342 ConstructorName _constructorName; | 7393 ConstructorName _constructorName; |
| 7394 |
| 6343 /** | 7395 /** |
| 6344 * The list of arguments to the constructor. | 7396 * The list of arguments to the constructor. |
| 6345 */ | 7397 */ |
| 6346 ArgumentList _argumentList; | 7398 ArgumentList _argumentList; |
| 7399 |
| 6347 /** | 7400 /** |
| 6348 * The element associated with the constructor, or {@code null} if the AST str
ucture has not been | 7401 * The element associated with the constructor based on static type informatio
n, or {@code null}if the AST structure has not been resolved or if the construct
or could not be resolved. |
| 6349 * resolved or if the constructor could not be resolved. | |
| 6350 */ | 7402 */ |
| 6351 ConstructorElement _element; | 7403 ConstructorElement _staticElement; |
| 7404 |
| 7405 /** |
| 7406 * The element associated with the constructor based on propagated type inform
ation, or{@code null} if the AST structure has not been resolved or if the const
ructor could not be |
| 7407 * resolved. |
| 7408 */ |
| 7409 ConstructorElement _propagatedElement; |
| 7410 |
| 6352 /** | 7411 /** |
| 6353 * Initialize a newly created instance creation expression. | 7412 * Initialize a newly created instance creation expression. |
| 6354 * @param keyword the keyword used to indicate how an object should be created | 7413 * @param keyword the keyword used to indicate how an object should be created |
| 6355 * @param constructorName the name of the constructor to be invoked | 7414 * @param constructorName the name of the constructor to be invoked |
| 6356 * @param argumentList the list of arguments to the constructor | 7415 * @param argumentList the list of arguments to the constructor |
| 6357 */ | 7416 */ |
| 6358 InstanceCreationExpression.full(Token keyword, ConstructorName constructorName
, ArgumentList argumentList) { | 7417 InstanceCreationExpression.full(Token keyword, ConstructorName constructorName
, ArgumentList argumentList) { |
| 6359 this._keyword = keyword; | 7418 this._keyword = keyword; |
| 6360 this._constructorName = becomeParentOf(constructorName); | 7419 this._constructorName = becomeParentOf(constructorName); |
| 6361 this._argumentList = becomeParentOf(argumentList); | 7420 this._argumentList = becomeParentOf(argumentList); |
| 6362 } | 7421 } |
| 7422 |
| 6363 /** | 7423 /** |
| 6364 * Initialize a newly created instance creation expression. | 7424 * Initialize a newly created instance creation expression. |
| 6365 * @param keyword the keyword used to indicate how an object should be created | 7425 * @param keyword the keyword used to indicate how an object should be created |
| 6366 * @param constructorName the name of the constructor to be invoked | 7426 * @param constructorName the name of the constructor to be invoked |
| 6367 * @param argumentList the list of arguments to the constructor | 7427 * @param argumentList the list of arguments to the constructor |
| 6368 */ | 7428 */ |
| 6369 InstanceCreationExpression({Token keyword, ConstructorName constructorName, Ar
gumentList argumentList}) : this.full(keyword, constructorName, argumentList); | 7429 InstanceCreationExpression({Token keyword, ConstructorName constructorName, Ar
gumentList argumentList}) : this.full(keyword, constructorName, argumentList); |
| 6370 accept(ASTVisitor visitor) => visitor.visitInstanceCreationExpression(this); | 7430 accept(ASTVisitor visitor) => visitor.visitInstanceCreationExpression(this); |
| 7431 |
| 6371 /** | 7432 /** |
| 6372 * Return the list of arguments to the constructor. | 7433 * Return the list of arguments to the constructor. |
| 6373 * @return the list of arguments to the constructor | 7434 * @return the list of arguments to the constructor |
| 6374 */ | 7435 */ |
| 6375 ArgumentList get argumentList => _argumentList; | 7436 ArgumentList get argumentList => _argumentList; |
| 6376 Token get beginToken => _keyword; | 7437 Token get beginToken => _keyword; |
| 7438 |
| 6377 /** | 7439 /** |
| 6378 * Return the name of the constructor to be invoked. | 7440 * Return the name of the constructor to be invoked. |
| 6379 * @return the name of the constructor to be invoked | 7441 * @return the name of the constructor to be invoked |
| 6380 */ | 7442 */ |
| 6381 ConstructorName get constructorName => _constructorName; | 7443 ConstructorName get constructorName => _constructorName; |
| 7444 |
| 6382 /** | 7445 /** |
| 6383 * Return the element associated with the constructor, or {@code null} if the
AST structure has | 7446 * 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 th
e constructor could not be |
| 6384 * not been resolved or if the constructor could not be resolved. | 7447 * resolved. |
| 6385 * @return the element associated with the constructor | 7448 * @return the element associated with the constructor |
| 6386 */ | 7449 */ |
| 6387 ConstructorElement get element => _element; | 7450 ConstructorElement get element => _propagatedElement; |
| 6388 Token get endToken => _argumentList.endToken; | 7451 Token get endToken => _argumentList.endToken; |
| 7452 |
| 6389 /** | 7453 /** |
| 6390 * Return the keyword used to indicate how an object should be created. | 7454 * Return the keyword used to indicate how an object should be created. |
| 6391 * @return the keyword used to indicate how an object should be created | 7455 * @return the keyword used to indicate how an object should be created |
| 6392 */ | 7456 */ |
| 6393 Token get keyword => _keyword; | 7457 Token get keyword => _keyword; |
| 7458 |
| 7459 /** |
| 7460 * Return the element associated with the constructor based on static type inf
ormation, or{@code null} if the AST structure has not been resolved or if the co
nstructor could not be |
| 7461 * resolved. |
| 7462 * @return the element associated with the constructor |
| 7463 */ |
| 7464 ConstructorElement get staticElement => _staticElement; |
| 7465 |
| 6394 /** | 7466 /** |
| 6395 * Return {@code true} if this creation expression is used to invoke a constan
t constructor. | 7467 * Return {@code true} if this creation expression is used to invoke a constan
t constructor. |
| 6396 * @return {@code true} if this creation expression is used to invoke a consta
nt constructor | 7468 * @return {@code true} if this creation expression is used to invoke a consta
nt constructor |
| 6397 */ | 7469 */ |
| 6398 bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.CONST); | 7470 bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.CONST); |
| 7471 |
| 6399 /** | 7472 /** |
| 6400 * Set the list of arguments to the constructor to the given list. | 7473 * Set the list of arguments to the constructor to the given list. |
| 6401 * @param argumentList the list of arguments to the constructor | 7474 * @param argumentList the list of arguments to the constructor |
| 6402 */ | 7475 */ |
| 6403 void set argumentList(ArgumentList argumentList2) { | 7476 void set argumentList(ArgumentList argumentList2) { |
| 6404 this._argumentList = becomeParentOf(argumentList2); | 7477 this._argumentList = becomeParentOf(argumentList2); |
| 6405 } | 7478 } |
| 7479 |
| 6406 /** | 7480 /** |
| 6407 * Set the name of the constructor to be invoked to the given name. | 7481 * Set the name of the constructor to be invoked to the given name. |
| 6408 * @param constructorName the name of the constructor to be invoked | 7482 * @param constructorName the name of the constructor to be invoked |
| 6409 */ | 7483 */ |
| 6410 void set constructorName(ConstructorName constructorName2) { | 7484 void set constructorName(ConstructorName constructorName2) { |
| 6411 this._constructorName = constructorName2; | 7485 this._constructorName = constructorName2; |
| 6412 } | 7486 } |
| 7487 |
| 6413 /** | 7488 /** |
| 6414 * Set the element associated with the constructor to the given element. | 7489 * Set the element associated with the constructor based on propagated type in
formation to the |
| 6415 * @param element the element associated with the constructor | 7490 * given element. |
| 7491 * @param element the element to be associated with the constructor |
| 6416 */ | 7492 */ |
| 6417 void set element(ConstructorElement element2) { | 7493 void set element(ConstructorElement element2) { |
| 6418 this._element = element2; | 7494 this._propagatedElement = element2; |
| 6419 } | 7495 } |
| 7496 |
| 6420 /** | 7497 /** |
| 6421 * Set the keyword used to indicate how an object should be created to the giv
en keyword. | 7498 * Set the keyword used to indicate how an object should be created to the giv
en keyword. |
| 6422 * @param keyword the keyword used to indicate how an object should be created | 7499 * @param keyword the keyword used to indicate how an object should be created |
| 6423 */ | 7500 */ |
| 6424 void set keyword(Token keyword2) { | 7501 void set keyword(Token keyword2) { |
| 6425 this._keyword = keyword2; | 7502 this._keyword = keyword2; |
| 6426 } | 7503 } |
| 7504 |
| 7505 /** |
| 7506 * Set the element associated with the constructor based on static type inform
ation to the given |
| 7507 * element. |
| 7508 * @param element the element to be associated with the constructor |
| 7509 */ |
| 7510 void set staticElement(ConstructorElement element) { |
| 7511 this._staticElement = element; |
| 7512 } |
| 6427 void visitChildren(ASTVisitor<Object> visitor) { | 7513 void visitChildren(ASTVisitor<Object> visitor) { |
| 6428 safelyVisitChild(_constructorName, visitor); | 7514 safelyVisitChild(_constructorName, visitor); |
| 6429 safelyVisitChild(_argumentList, visitor); | 7515 safelyVisitChild(_argumentList, visitor); |
| 6430 } | 7516 } |
| 6431 } | 7517 } |
| 7518 |
| 6432 /** | 7519 /** |
| 6433 * Instances of the class {@code IntegerLiteral} represent an integer literal ex
pression. | 7520 * Instances of the class {@code IntegerLiteral} represent an integer literal ex
pression. |
| 6434 * <pre> | 7521 * <pre> |
| 6435 * integerLiteral ::= | 7522 * integerLiteral ::= |
| 6436 * decimalIntegerLiteral | 7523 * decimalIntegerLiteral |
| 6437 * | hexidecimalIntegerLiteral | 7524 * | hexidecimalIntegerLiteral |
| 6438 * decimalIntegerLiteral ::= | 7525 * decimalIntegerLiteral ::= |
| 6439 * decimalDigit+ | 7526 * decimalDigit+ |
| 6440 * hexidecimalIntegerLiteral ::= | 7527 * hexidecimalIntegerLiteral ::= |
| 6441 * '0x' hexidecimalDigit+ | 7528 * '0x' hexidecimalDigit+ |
| 6442 * | '0X' hexidecimalDigit+ | 7529 * | '0X' hexidecimalDigit+ |
| 6443 * </pre> | 7530 * </pre> |
| 6444 * @coverage dart.engine.ast | 7531 * @coverage dart.engine.ast |
| 6445 */ | 7532 */ |
| 6446 class IntegerLiteral extends Literal { | 7533 class IntegerLiteral extends Literal { |
| 7534 |
| 6447 /** | 7535 /** |
| 6448 * The token representing the literal. | 7536 * The token representing the literal. |
| 6449 */ | 7537 */ |
| 6450 Token _literal; | 7538 Token _literal; |
| 7539 |
| 6451 /** | 7540 /** |
| 6452 * The value of the literal. | 7541 * The value of the literal. |
| 6453 */ | 7542 */ |
| 6454 int _value = 0; | 7543 int _value = 0; |
| 7544 |
| 6455 /** | 7545 /** |
| 6456 * Initialize a newly created integer literal. | 7546 * Initialize a newly created integer literal. |
| 6457 * @param literal the token representing the literal | 7547 * @param literal the token representing the literal |
| 6458 * @param value the value of the literal | 7548 * @param value the value of the literal |
| 6459 */ | 7549 */ |
| 6460 IntegerLiteral.full(Token literal, int value) { | 7550 IntegerLiteral.full(Token literal, int value) { |
| 6461 this._literal = literal; | 7551 this._literal = literal; |
| 6462 this._value = value; | 7552 this._value = value; |
| 6463 } | 7553 } |
| 7554 |
| 6464 /** | 7555 /** |
| 6465 * Initialize a newly created integer literal. | 7556 * Initialize a newly created integer literal. |
| 6466 * @param literal the token representing the literal | 7557 * @param literal the token representing the literal |
| 6467 * @param value the value of the literal | 7558 * @param value the value of the literal |
| 6468 */ | 7559 */ |
| 6469 IntegerLiteral({Token literal, int value}) : this.full(literal, value); | 7560 IntegerLiteral({Token literal, int value}) : this.full(literal, value); |
| 6470 accept(ASTVisitor visitor) => visitor.visitIntegerLiteral(this); | 7561 accept(ASTVisitor visitor) => visitor.visitIntegerLiteral(this); |
| 6471 Token get beginToken => _literal; | 7562 Token get beginToken => _literal; |
| 6472 Token get endToken => _literal; | 7563 Token get endToken => _literal; |
| 7564 |
| 6473 /** | 7565 /** |
| 6474 * Return the token representing the literal. | 7566 * Return the token representing the literal. |
| 6475 * @return the token representing the literal | 7567 * @return the token representing the literal |
| 6476 */ | 7568 */ |
| 6477 Token get literal => _literal; | 7569 Token get literal => _literal; |
| 7570 |
| 6478 /** | 7571 /** |
| 6479 * Return the value of the literal. | 7572 * Return the value of the literal. |
| 6480 * @return the value of the literal | 7573 * @return the value of the literal |
| 6481 */ | 7574 */ |
| 6482 int get value => _value; | 7575 int get value => _value; |
| 7576 |
| 6483 /** | 7577 /** |
| 6484 * Set the token representing the literal to the given token. | 7578 * Set the token representing the literal to the given token. |
| 6485 * @param literal the token representing the literal | 7579 * @param literal the token representing the literal |
| 6486 */ | 7580 */ |
| 6487 void set literal(Token literal2) { | 7581 void set literal(Token literal2) { |
| 6488 this._literal = literal2; | 7582 this._literal = literal2; |
| 6489 } | 7583 } |
| 7584 |
| 6490 /** | 7585 /** |
| 6491 * Set the value of the literal to the given value. | 7586 * Set the value of the literal to the given value. |
| 6492 * @param value the value of the literal | 7587 * @param value the value of the literal |
| 6493 */ | 7588 */ |
| 6494 void set value(int value2) { | 7589 void set value(int value2) { |
| 6495 this._value = value2; | 7590 this._value = value2; |
| 6496 } | 7591 } |
| 6497 void visitChildren(ASTVisitor<Object> visitor) { | 7592 void visitChildren(ASTVisitor<Object> visitor) { |
| 6498 } | 7593 } |
| 6499 } | 7594 } |
| 7595 |
| 6500 /** | 7596 /** |
| 6501 * The abstract class {@code InterpolationElement} defines the behavior common t
o elements within a{@link StringInterpolation string interpolation}. | 7597 * The abstract class {@code InterpolationElement} defines the behavior common t
o elements within a{@link StringInterpolation string interpolation}. |
| 6502 * <pre> | 7598 * <pre> |
| 6503 * interpolationElement ::={@link InterpolationExpression interpolationExpressio
n}| {@link InterpolationString interpolationString}</pre> | 7599 * interpolationElement ::={@link InterpolationExpression interpolationExpressio
n}| {@link InterpolationString interpolationString}</pre> |
| 6504 * @coverage dart.engine.ast | 7600 * @coverage dart.engine.ast |
| 6505 */ | 7601 */ |
| 6506 abstract class InterpolationElement extends ASTNode { | 7602 abstract class InterpolationElement extends ASTNode { |
| 6507 } | 7603 } |
| 7604 |
| 6508 /** | 7605 /** |
| 6509 * Instances of the class {@code InterpolationExpression} represent an expressio
n embedded in a | 7606 * Instances of the class {@code InterpolationExpression} represent an expressio
n embedded in a |
| 6510 * string interpolation. | 7607 * string interpolation. |
| 6511 * <pre> | 7608 * <pre> |
| 6512 * interpolationExpression ::= | 7609 * interpolationExpression ::= |
| 6513 * '$' {@link SimpleIdentifier identifier}| '$' '{' {@link Expression expression
} '}' | 7610 * '$' {@link SimpleIdentifier identifier}| '$' '{' {@link Expression expression
} '}' |
| 6514 * </pre> | 7611 * </pre> |
| 6515 * @coverage dart.engine.ast | 7612 * @coverage dart.engine.ast |
| 6516 */ | 7613 */ |
| 6517 class InterpolationExpression extends InterpolationElement { | 7614 class InterpolationExpression extends InterpolationElement { |
| 7615 |
| 6518 /** | 7616 /** |
| 6519 * The token used to introduce the interpolation expression; either '$' if the
expression is a | 7617 * The token used to introduce the interpolation expression; either '$' if the
expression is a |
| 6520 * simple identifier or '${' if the expression is a full expression. | 7618 * simple identifier or '${' if the expression is a full expression. |
| 6521 */ | 7619 */ |
| 6522 Token _leftBracket; | 7620 Token _leftBracket; |
| 7621 |
| 6523 /** | 7622 /** |
| 6524 * The expression to be evaluated for the value to be converted into a string. | 7623 * The expression to be evaluated for the value to be converted into a string. |
| 6525 */ | 7624 */ |
| 6526 Expression _expression; | 7625 Expression _expression; |
| 7626 |
| 6527 /** | 7627 /** |
| 6528 * The right curly bracket, or {@code null} if the expression is an identifier
without brackets. | 7628 * The right curly bracket, or {@code null} if the expression is an identifier
without brackets. |
| 6529 */ | 7629 */ |
| 6530 Token _rightBracket; | 7630 Token _rightBracket; |
| 7631 |
| 6531 /** | 7632 /** |
| 6532 * Initialize a newly created interpolation expression. | 7633 * Initialize a newly created interpolation expression. |
| 6533 * @param leftBracket the left curly bracket | 7634 * @param leftBracket the left curly bracket |
| 6534 * @param expression the expression to be evaluated for the value to be conver
ted into a string | 7635 * @param expression the expression to be evaluated for the value to be conver
ted into a string |
| 6535 * @param rightBracket the right curly bracket | 7636 * @param rightBracket the right curly bracket |
| 6536 */ | 7637 */ |
| 6537 InterpolationExpression.full(Token leftBracket, Expression expression, Token r
ightBracket) { | 7638 InterpolationExpression.full(Token leftBracket, Expression expression, Token r
ightBracket) { |
| 6538 this._leftBracket = leftBracket; | 7639 this._leftBracket = leftBracket; |
| 6539 this._expression = becomeParentOf(expression); | 7640 this._expression = becomeParentOf(expression); |
| 6540 this._rightBracket = rightBracket; | 7641 this._rightBracket = rightBracket; |
| 6541 } | 7642 } |
| 7643 |
| 6542 /** | 7644 /** |
| 6543 * Initialize a newly created interpolation expression. | 7645 * Initialize a newly created interpolation expression. |
| 6544 * @param leftBracket the left curly bracket | 7646 * @param leftBracket the left curly bracket |
| 6545 * @param expression the expression to be evaluated for the value to be conver
ted into a string | 7647 * @param expression the expression to be evaluated for the value to be conver
ted into a string |
| 6546 * @param rightBracket the right curly bracket | 7648 * @param rightBracket the right curly bracket |
| 6547 */ | 7649 */ |
| 6548 InterpolationExpression({Token leftBracket, Expression expression, Token right
Bracket}) : this.full(leftBracket, expression, rightBracket); | 7650 InterpolationExpression({Token leftBracket, Expression expression, Token right
Bracket}) : this.full(leftBracket, expression, rightBracket); |
| 6549 accept(ASTVisitor visitor) => visitor.visitInterpolationExpression(this); | 7651 accept(ASTVisitor visitor) => visitor.visitInterpolationExpression(this); |
| 6550 Token get beginToken => _leftBracket; | 7652 Token get beginToken => _leftBracket; |
| 6551 Token get endToken { | 7653 Token get endToken { |
| 6552 if (_rightBracket != null) { | 7654 if (_rightBracket != null) { |
| 6553 return _rightBracket; | 7655 return _rightBracket; |
| 6554 } | 7656 } |
| 6555 return _expression.endToken; | 7657 return _expression.endToken; |
| 6556 } | 7658 } |
| 7659 |
| 6557 /** | 7660 /** |
| 6558 * Return the expression to be evaluated for the value to be converted into a
string. | 7661 * Return the expression to be evaluated for the value to be converted into a
string. |
| 6559 * @return the expression to be evaluated for the value to be converted into a
string | 7662 * @return the expression to be evaluated for the value to be converted into a
string |
| 6560 */ | 7663 */ |
| 6561 Expression get expression => _expression; | 7664 Expression get expression => _expression; |
| 7665 |
| 6562 /** | 7666 /** |
| 6563 * Return the left curly bracket. | 7667 * Return the left curly bracket. |
| 6564 * @return the left curly bracket | 7668 * @return the left curly bracket |
| 6565 */ | 7669 */ |
| 6566 Token get leftBracket => _leftBracket; | 7670 Token get leftBracket => _leftBracket; |
| 7671 |
| 6567 /** | 7672 /** |
| 6568 * Return the right curly bracket. | 7673 * Return the right curly bracket. |
| 6569 * @return the right curly bracket | 7674 * @return the right curly bracket |
| 6570 */ | 7675 */ |
| 6571 Token get rightBracket => _rightBracket; | 7676 Token get rightBracket => _rightBracket; |
| 7677 |
| 6572 /** | 7678 /** |
| 6573 * Set the expression to be evaluated for the value to be converted into a str
ing to the given | 7679 * Set the expression to be evaluated for the value to be converted into a str
ing to the given |
| 6574 * expression. | 7680 * expression. |
| 6575 * @param expression the expression to be evaluated for the value to be conver
ted into a string | 7681 * @param expression the expression to be evaluated for the value to be conver
ted into a string |
| 6576 */ | 7682 */ |
| 6577 void set expression(Expression expression2) { | 7683 void set expression(Expression expression2) { |
| 6578 this._expression = becomeParentOf(expression2); | 7684 this._expression = becomeParentOf(expression2); |
| 6579 } | 7685 } |
| 7686 |
| 6580 /** | 7687 /** |
| 6581 * Set the left curly bracket to the given token. | 7688 * Set the left curly bracket to the given token. |
| 6582 * @param leftBracket the left curly bracket | 7689 * @param leftBracket the left curly bracket |
| 6583 */ | 7690 */ |
| 6584 void set leftBracket(Token leftBracket2) { | 7691 void set leftBracket(Token leftBracket2) { |
| 6585 this._leftBracket = leftBracket2; | 7692 this._leftBracket = leftBracket2; |
| 6586 } | 7693 } |
| 7694 |
| 6587 /** | 7695 /** |
| 6588 * Set the right curly bracket to the given token. | 7696 * Set the right curly bracket to the given token. |
| 6589 * @param rightBracket the right curly bracket | 7697 * @param rightBracket the right curly bracket |
| 6590 */ | 7698 */ |
| 6591 void set rightBracket(Token rightBracket2) { | 7699 void set rightBracket(Token rightBracket2) { |
| 6592 this._rightBracket = rightBracket2; | 7700 this._rightBracket = rightBracket2; |
| 6593 } | 7701 } |
| 6594 void visitChildren(ASTVisitor<Object> visitor) { | 7702 void visitChildren(ASTVisitor<Object> visitor) { |
| 6595 safelyVisitChild(_expression, visitor); | 7703 safelyVisitChild(_expression, visitor); |
| 6596 } | 7704 } |
| 6597 } | 7705 } |
| 7706 |
| 6598 /** | 7707 /** |
| 6599 * Instances of the class {@code InterpolationString} represent a non-empty subs
tring of an | 7708 * Instances of the class {@code InterpolationString} represent a non-empty subs
tring of an |
| 6600 * interpolated string. | 7709 * interpolated string. |
| 6601 * <pre> | 7710 * <pre> |
| 6602 * interpolationString ::= | 7711 * interpolationString ::= |
| 6603 * characters | 7712 * characters |
| 6604 * </pre> | 7713 * </pre> |
| 6605 * @coverage dart.engine.ast | 7714 * @coverage dart.engine.ast |
| 6606 */ | 7715 */ |
| 6607 class InterpolationString extends InterpolationElement { | 7716 class InterpolationString extends InterpolationElement { |
| 7717 |
| 6608 /** | 7718 /** |
| 6609 * The characters that will be added to the string. | 7719 * The characters that will be added to the string. |
| 6610 */ | 7720 */ |
| 6611 Token _contents; | 7721 Token _contents; |
| 7722 |
| 6612 /** | 7723 /** |
| 6613 * The value of the literal. | 7724 * The value of the literal. |
| 6614 */ | 7725 */ |
| 6615 String _value; | 7726 String _value; |
| 7727 |
| 6616 /** | 7728 /** |
| 6617 * Initialize a newly created string of characters that are part of a string i
nterpolation. | 7729 * Initialize a newly created string of characters that are part of a string i
nterpolation. |
| 6618 * @param the characters that will be added to the string | 7730 * @param the characters that will be added to the string |
| 6619 * @param value the value of the literal | 7731 * @param value the value of the literal |
| 6620 */ | 7732 */ |
| 6621 InterpolationString.full(Token contents, String value) { | 7733 InterpolationString.full(Token contents, String value) { |
| 6622 this._contents = contents; | 7734 this._contents = contents; |
| 6623 this._value = value; | 7735 this._value = value; |
| 6624 } | 7736 } |
| 7737 |
| 6625 /** | 7738 /** |
| 6626 * Initialize a newly created string of characters that are part of a string i
nterpolation. | 7739 * Initialize a newly created string of characters that are part of a string i
nterpolation. |
| 6627 * @param the characters that will be added to the string | 7740 * @param the characters that will be added to the string |
| 6628 * @param value the value of the literal | 7741 * @param value the value of the literal |
| 6629 */ | 7742 */ |
| 6630 InterpolationString({Token contents, String value}) : this.full(contents, valu
e); | 7743 InterpolationString({Token contents, String value}) : this.full(contents, valu
e); |
| 6631 accept(ASTVisitor visitor) => visitor.visitInterpolationString(this); | 7744 accept(ASTVisitor visitor) => visitor.visitInterpolationString(this); |
| 6632 Token get beginToken => _contents; | 7745 Token get beginToken => _contents; |
| 7746 |
| 6633 /** | 7747 /** |
| 6634 * Return the characters that will be added to the string. | 7748 * Return the characters that will be added to the string. |
| 6635 * @return the characters that will be added to the string | 7749 * @return the characters that will be added to the string |
| 6636 */ | 7750 */ |
| 6637 Token get contents => _contents; | 7751 Token get contents => _contents; |
| 6638 Token get endToken => _contents; | 7752 Token get endToken => _contents; |
| 7753 |
| 6639 /** | 7754 /** |
| 6640 * Return the value of the literal. | 7755 * Return the value of the literal. |
| 6641 * @return the value of the literal | 7756 * @return the value of the literal |
| 6642 */ | 7757 */ |
| 6643 String get value => _value; | 7758 String get value => _value; |
| 7759 |
| 6644 /** | 7760 /** |
| 6645 * Set the characters that will be added to the string to those in the given s
tring. | 7761 * Set the characters that will be added to the string to those in the given s
tring. |
| 6646 * @param string the characters that will be added to the string | 7762 * @param string the characters that will be added to the string |
| 6647 */ | 7763 */ |
| 6648 void set contents(Token string) { | 7764 void set contents(Token string) { |
| 6649 _contents = string; | 7765 _contents = string; |
| 6650 } | 7766 } |
| 7767 |
| 6651 /** | 7768 /** |
| 6652 * Set the value of the literal to the given string. | 7769 * Set the value of the literal to the given string. |
| 6653 * @param string the value of the literal | 7770 * @param string the value of the literal |
| 6654 */ | 7771 */ |
| 6655 void set value(String string) { | 7772 void set value(String string) { |
| 6656 _value = string; | 7773 _value = string; |
| 6657 } | 7774 } |
| 6658 void visitChildren(ASTVisitor<Object> visitor) { | 7775 void visitChildren(ASTVisitor<Object> visitor) { |
| 6659 } | 7776 } |
| 6660 } | 7777 } |
| 7778 |
| 6661 /** | 7779 /** |
| 6662 * Instances of the class {@code IsExpression} represent an is expression. | 7780 * Instances of the class {@code IsExpression} represent an is expression. |
| 6663 * <pre> | 7781 * <pre> |
| 6664 * isExpression ::={@link Expression expression} 'is' '!'? {@link TypeName type}
</pre> | 7782 * isExpression ::={@link Expression expression} 'is' '!'? {@link TypeName type}
</pre> |
| 6665 * @coverage dart.engine.ast | 7783 * @coverage dart.engine.ast |
| 6666 */ | 7784 */ |
| 6667 class IsExpression extends Expression { | 7785 class IsExpression extends Expression { |
| 7786 |
| 6668 /** | 7787 /** |
| 6669 * The expression used to compute the value whose type is being tested. | 7788 * The expression used to compute the value whose type is being tested. |
| 6670 */ | 7789 */ |
| 6671 Expression _expression; | 7790 Expression _expression; |
| 7791 |
| 6672 /** | 7792 /** |
| 6673 * The is operator. | 7793 * The is operator. |
| 6674 */ | 7794 */ |
| 6675 Token _isOperator; | 7795 Token _isOperator; |
| 7796 |
| 6676 /** | 7797 /** |
| 6677 * The not operator, or {@code null} if the sense of the test is not negated. | 7798 * The not operator, or {@code null} if the sense of the test is not negated. |
| 6678 */ | 7799 */ |
| 6679 Token _notOperator; | 7800 Token _notOperator; |
| 7801 |
| 6680 /** | 7802 /** |
| 6681 * The name of the type being tested for. | 7803 * The name of the type being tested for. |
| 6682 */ | 7804 */ |
| 6683 TypeName _type; | 7805 TypeName _type; |
| 7806 |
| 6684 /** | 7807 /** |
| 6685 * Initialize a newly created is expression. | 7808 * Initialize a newly created is expression. |
| 6686 * @param expression the expression used to compute the value whose type is be
ing tested | 7809 * @param expression the expression used to compute the value whose type is be
ing tested |
| 6687 * @param isOperator the is operator | 7810 * @param isOperator the is operator |
| 6688 * @param notOperator the not operator, or {@code null} if the sense of the te
st is not negated | 7811 * @param notOperator the not operator, or {@code null} if the sense of the te
st is not negated |
| 6689 * @param type the name of the type being tested for | 7812 * @param type the name of the type being tested for |
| 6690 */ | 7813 */ |
| 6691 IsExpression.full(Expression expression, Token isOperator, Token notOperator,
TypeName type) { | 7814 IsExpression.full(Expression expression, Token isOperator, Token notOperator,
TypeName type) { |
| 6692 this._expression = becomeParentOf(expression); | 7815 this._expression = becomeParentOf(expression); |
| 6693 this._isOperator = isOperator; | 7816 this._isOperator = isOperator; |
| 6694 this._notOperator = notOperator; | 7817 this._notOperator = notOperator; |
| 6695 this._type = becomeParentOf(type); | 7818 this._type = becomeParentOf(type); |
| 6696 } | 7819 } |
| 7820 |
| 6697 /** | 7821 /** |
| 6698 * Initialize a newly created is expression. | 7822 * Initialize a newly created is expression. |
| 6699 * @param expression the expression used to compute the value whose type is be
ing tested | 7823 * @param expression the expression used to compute the value whose type is be
ing tested |
| 6700 * @param isOperator the is operator | 7824 * @param isOperator the is operator |
| 6701 * @param notOperator the not operator, or {@code null} if the sense of the te
st is not negated | 7825 * @param notOperator the not operator, or {@code null} if the sense of the te
st is not negated |
| 6702 * @param type the name of the type being tested for | 7826 * @param type the name of the type being tested for |
| 6703 */ | 7827 */ |
| 6704 IsExpression({Expression expression, Token isOperator, Token notOperator, Type
Name type}) : this.full(expression, isOperator, notOperator, type); | 7828 IsExpression({Expression expression, Token isOperator, Token notOperator, Type
Name type}) : this.full(expression, isOperator, notOperator, type); |
| 6705 accept(ASTVisitor visitor) => visitor.visitIsExpression(this); | 7829 accept(ASTVisitor visitor) => visitor.visitIsExpression(this); |
| 6706 Token get beginToken => _expression.beginToken; | 7830 Token get beginToken => _expression.beginToken; |
| 6707 Token get endToken => _type.endToken; | 7831 Token get endToken => _type.endToken; |
| 7832 |
| 6708 /** | 7833 /** |
| 6709 * Return the expression used to compute the value whose type is being tested. | 7834 * Return the expression used to compute the value whose type is being tested. |
| 6710 * @return the expression used to compute the value whose type is being tested | 7835 * @return the expression used to compute the value whose type is being tested |
| 6711 */ | 7836 */ |
| 6712 Expression get expression => _expression; | 7837 Expression get expression => _expression; |
| 7838 |
| 6713 /** | 7839 /** |
| 6714 * Return the is operator being applied. | 7840 * Return the is operator being applied. |
| 6715 * @return the is operator being applied | 7841 * @return the is operator being applied |
| 6716 */ | 7842 */ |
| 6717 Token get isOperator => _isOperator; | 7843 Token get isOperator => _isOperator; |
| 7844 |
| 6718 /** | 7845 /** |
| 6719 * Return the not operator being applied. | 7846 * Return the not operator being applied. |
| 6720 * @return the not operator being applied | 7847 * @return the not operator being applied |
| 6721 */ | 7848 */ |
| 6722 Token get notOperator => _notOperator; | 7849 Token get notOperator => _notOperator; |
| 7850 |
| 6723 /** | 7851 /** |
| 6724 * Return the name of the type being tested for. | 7852 * Return the name of the type being tested for. |
| 6725 * @return the name of the type being tested for | 7853 * @return the name of the type being tested for |
| 6726 */ | 7854 */ |
| 6727 TypeName get type => _type; | 7855 TypeName get type => _type; |
| 7856 |
| 6728 /** | 7857 /** |
| 6729 * Set the expression used to compute the value whose type is being tested to
the given | 7858 * Set the expression used to compute the value whose type is being tested to
the given |
| 6730 * expression. | 7859 * expression. |
| 6731 * @param expression the expression used to compute the value whose type is be
ing tested | 7860 * @param expression the expression used to compute the value whose type is be
ing tested |
| 6732 */ | 7861 */ |
| 6733 void set expression(Expression expression2) { | 7862 void set expression(Expression expression2) { |
| 6734 this._expression = becomeParentOf(expression2); | 7863 this._expression = becomeParentOf(expression2); |
| 6735 } | 7864 } |
| 7865 |
| 6736 /** | 7866 /** |
| 6737 * Set the is operator being applied to the given operator. | 7867 * Set the is operator being applied to the given operator. |
| 6738 * @param isOperator the is operator being applied | 7868 * @param isOperator the is operator being applied |
| 6739 */ | 7869 */ |
| 6740 void set isOperator(Token isOperator2) { | 7870 void set isOperator(Token isOperator2) { |
| 6741 this._isOperator = isOperator2; | 7871 this._isOperator = isOperator2; |
| 6742 } | 7872 } |
| 7873 |
| 6743 /** | 7874 /** |
| 6744 * Set the not operator being applied to the given operator. | 7875 * Set the not operator being applied to the given operator. |
| 6745 * @param notOperator the is operator being applied | 7876 * @param notOperator the is operator being applied |
| 6746 */ | 7877 */ |
| 6747 void set notOperator(Token notOperator2) { | 7878 void set notOperator(Token notOperator2) { |
| 6748 this._notOperator = notOperator2; | 7879 this._notOperator = notOperator2; |
| 6749 } | 7880 } |
| 7881 |
| 6750 /** | 7882 /** |
| 6751 * Set the name of the type being tested for to the given name. | 7883 * Set the name of the type being tested for to the given name. |
| 6752 * @param name the name of the type being tested for | 7884 * @param name the name of the type being tested for |
| 6753 */ | 7885 */ |
| 6754 void set type(TypeName name) { | 7886 void set type(TypeName name) { |
| 6755 this._type = becomeParentOf(name); | 7887 this._type = becomeParentOf(name); |
| 6756 } | 7888 } |
| 6757 void visitChildren(ASTVisitor<Object> visitor) { | 7889 void visitChildren(ASTVisitor<Object> visitor) { |
| 6758 safelyVisitChild(_expression, visitor); | 7890 safelyVisitChild(_expression, visitor); |
| 6759 safelyVisitChild(_type, visitor); | 7891 safelyVisitChild(_type, visitor); |
| 6760 } | 7892 } |
| 6761 } | 7893 } |
| 7894 |
| 6762 /** | 7895 /** |
| 6763 * Instances of the class {@code Label} represent a label. | 7896 * Instances of the class {@code Label} represent a label. |
| 6764 * <pre> | 7897 * <pre> |
| 6765 * label ::={@link SimpleIdentifier label} ':' | 7898 * label ::={@link SimpleIdentifier label} ':' |
| 6766 * </pre> | 7899 * </pre> |
| 6767 * @coverage dart.engine.ast | 7900 * @coverage dart.engine.ast |
| 6768 */ | 7901 */ |
| 6769 class Label extends ASTNode { | 7902 class Label extends ASTNode { |
| 7903 |
| 6770 /** | 7904 /** |
| 6771 * The label being associated with the statement. | 7905 * The label being associated with the statement. |
| 6772 */ | 7906 */ |
| 6773 SimpleIdentifier _label; | 7907 SimpleIdentifier _label; |
| 7908 |
| 6774 /** | 7909 /** |
| 6775 * The colon that separates the label from the statement. | 7910 * The colon that separates the label from the statement. |
| 6776 */ | 7911 */ |
| 6777 Token _colon; | 7912 Token _colon; |
| 7913 |
| 6778 /** | 7914 /** |
| 6779 * Initialize a newly created label. | 7915 * Initialize a newly created label. |
| 6780 * @param label the label being applied | 7916 * @param label the label being applied |
| 6781 * @param colon the colon that separates the label from whatever follows | 7917 * @param colon the colon that separates the label from whatever follows |
| 6782 */ | 7918 */ |
| 6783 Label.full(SimpleIdentifier label, Token colon) { | 7919 Label.full(SimpleIdentifier label, Token colon) { |
| 6784 this._label = becomeParentOf(label); | 7920 this._label = becomeParentOf(label); |
| 6785 this._colon = colon; | 7921 this._colon = colon; |
| 6786 } | 7922 } |
| 7923 |
| 6787 /** | 7924 /** |
| 6788 * Initialize a newly created label. | 7925 * Initialize a newly created label. |
| 6789 * @param label the label being applied | 7926 * @param label the label being applied |
| 6790 * @param colon the colon that separates the label from whatever follows | 7927 * @param colon the colon that separates the label from whatever follows |
| 6791 */ | 7928 */ |
| 6792 Label({SimpleIdentifier label, Token colon}) : this.full(label, colon); | 7929 Label({SimpleIdentifier label, Token colon}) : this.full(label, colon); |
| 6793 accept(ASTVisitor visitor) => visitor.visitLabel(this); | 7930 accept(ASTVisitor visitor) => visitor.visitLabel(this); |
| 6794 Token get beginToken => _label.beginToken; | 7931 Token get beginToken => _label.beginToken; |
| 7932 |
| 6795 /** | 7933 /** |
| 6796 * Return the colon that separates the label from the statement. | 7934 * Return the colon that separates the label from the statement. |
| 6797 * @return the colon that separates the label from the statement | 7935 * @return the colon that separates the label from the statement |
| 6798 */ | 7936 */ |
| 6799 Token get colon => _colon; | 7937 Token get colon => _colon; |
| 6800 Token get endToken => _colon; | 7938 Token get endToken => _colon; |
| 7939 |
| 6801 /** | 7940 /** |
| 6802 * Return the label being associated with the statement. | 7941 * Return the label being associated with the statement. |
| 6803 * @return the label being associated with the statement | 7942 * @return the label being associated with the statement |
| 6804 */ | 7943 */ |
| 6805 SimpleIdentifier get label => _label; | 7944 SimpleIdentifier get label => _label; |
| 7945 |
| 6806 /** | 7946 /** |
| 6807 * Set the colon that separates the label from the statement to the given toke
n. | 7947 * Set the colon that separates the label from the statement to the given toke
n. |
| 6808 * @param colon the colon that separates the label from the statement | 7948 * @param colon the colon that separates the label from the statement |
| 6809 */ | 7949 */ |
| 6810 void set colon(Token colon2) { | 7950 void set colon(Token colon2) { |
| 6811 this._colon = colon2; | 7951 this._colon = colon2; |
| 6812 } | 7952 } |
| 7953 |
| 6813 /** | 7954 /** |
| 6814 * Set the label being associated with the statement to the given label. | 7955 * Set the label being associated with the statement to the given label. |
| 6815 * @param label the label being associated with the statement | 7956 * @param label the label being associated with the statement |
| 6816 */ | 7957 */ |
| 6817 void set label(SimpleIdentifier label2) { | 7958 void set label(SimpleIdentifier label2) { |
| 6818 this._label = becomeParentOf(label2); | 7959 this._label = becomeParentOf(label2); |
| 6819 } | 7960 } |
| 6820 void visitChildren(ASTVisitor<Object> visitor) { | 7961 void visitChildren(ASTVisitor<Object> visitor) { |
| 6821 safelyVisitChild(_label, visitor); | 7962 safelyVisitChild(_label, visitor); |
| 6822 } | 7963 } |
| 6823 } | 7964 } |
| 7965 |
| 6824 /** | 7966 /** |
| 6825 * Instances of the class {@code LabeledStatement} represent a statement that ha
s a label associated | 7967 * Instances of the class {@code LabeledStatement} represent a statement that ha
s a label associated |
| 6826 * with them. | 7968 * with them. |
| 6827 * <pre> | 7969 * <pre> |
| 6828 * labeledStatement ::={@link Label label}+ {@link Statement statement}</pre> | 7970 * labeledStatement ::={@link Label label}+ {@link Statement statement}</pre> |
| 6829 * @coverage dart.engine.ast | 7971 * @coverage dart.engine.ast |
| 6830 */ | 7972 */ |
| 6831 class LabeledStatement extends Statement { | 7973 class LabeledStatement extends Statement { |
| 7974 |
| 6832 /** | 7975 /** |
| 6833 * The labels being associated with the statement. | 7976 * The labels being associated with the statement. |
| 6834 */ | 7977 */ |
| 6835 NodeList<Label> _labels; | 7978 NodeList<Label> _labels; |
| 7979 |
| 6836 /** | 7980 /** |
| 6837 * The statement with which the labels are being associated. | 7981 * The statement with which the labels are being associated. |
| 6838 */ | 7982 */ |
| 6839 Statement _statement; | 7983 Statement _statement; |
| 7984 |
| 6840 /** | 7985 /** |
| 6841 * Initialize a newly created labeled statement. | 7986 * Initialize a newly created labeled statement. |
| 6842 * @param labels the labels being associated with the statement | 7987 * @param labels the labels being associated with the statement |
| 6843 * @param statement the statement with which the labels are being associated | 7988 * @param statement the statement with which the labels are being associated |
| 6844 */ | 7989 */ |
| 6845 LabeledStatement.full(List<Label> labels, Statement statement) { | 7990 LabeledStatement.full(List<Label> labels, Statement statement) { |
| 6846 this._labels = new NodeList<Label>(this); | 7991 this._labels = new NodeList<Label>(this); |
| 6847 this._labels.addAll(labels); | 7992 this._labels.addAll(labels); |
| 6848 this._statement = becomeParentOf(statement); | 7993 this._statement = becomeParentOf(statement); |
| 6849 } | 7994 } |
| 7995 |
| 6850 /** | 7996 /** |
| 6851 * Initialize a newly created labeled statement. | 7997 * Initialize a newly created labeled statement. |
| 6852 * @param labels the labels being associated with the statement | 7998 * @param labels the labels being associated with the statement |
| 6853 * @param statement the statement with which the labels are being associated | 7999 * @param statement the statement with which the labels are being associated |
| 6854 */ | 8000 */ |
| 6855 LabeledStatement({List<Label> labels, Statement statement}) : this.full(labels
, statement); | 8001 LabeledStatement({List<Label> labels, Statement statement}) : this.full(labels
, statement); |
| 6856 accept(ASTVisitor visitor) => visitor.visitLabeledStatement(this); | 8002 accept(ASTVisitor visitor) => visitor.visitLabeledStatement(this); |
| 6857 Token get beginToken { | 8003 Token get beginToken { |
| 6858 if (!_labels.isEmpty) { | 8004 if (!_labels.isEmpty) { |
| 6859 return _labels.beginToken; | 8005 return _labels.beginToken; |
| 6860 } | 8006 } |
| 6861 return _statement.beginToken; | 8007 return _statement.beginToken; |
| 6862 } | 8008 } |
| 6863 Token get endToken => _statement.endToken; | 8009 Token get endToken => _statement.endToken; |
| 8010 |
| 6864 /** | 8011 /** |
| 6865 * Return the labels being associated with the statement. | 8012 * Return the labels being associated with the statement. |
| 6866 * @return the labels being associated with the statement | 8013 * @return the labels being associated with the statement |
| 6867 */ | 8014 */ |
| 6868 NodeList<Label> get labels => _labels; | 8015 NodeList<Label> get labels => _labels; |
| 8016 |
| 6869 /** | 8017 /** |
| 6870 * Return the statement with which the labels are being associated. | 8018 * Return the statement with which the labels are being associated. |
| 6871 * @return the statement with which the labels are being associated | 8019 * @return the statement with which the labels are being associated |
| 6872 */ | 8020 */ |
| 6873 Statement get statement => _statement; | 8021 Statement get statement => _statement; |
| 8022 |
| 6874 /** | 8023 /** |
| 6875 * Set the statement with which the labels are being associated to the given s
tatement. | 8024 * Set the statement with which the labels are being associated to the given s
tatement. |
| 6876 * @param statement the statement with which the labels are being associated | 8025 * @param statement the statement with which the labels are being associated |
| 6877 */ | 8026 */ |
| 6878 void set statement(Statement statement2) { | 8027 void set statement(Statement statement2) { |
| 6879 this._statement = becomeParentOf(statement2); | 8028 this._statement = becomeParentOf(statement2); |
| 6880 } | 8029 } |
| 6881 void visitChildren(ASTVisitor<Object> visitor) { | 8030 void visitChildren(ASTVisitor<Object> visitor) { |
| 6882 _labels.accept(visitor); | 8031 _labels.accept(visitor); |
| 6883 safelyVisitChild(_statement, visitor); | 8032 safelyVisitChild(_statement, visitor); |
| 6884 } | 8033 } |
| 6885 } | 8034 } |
| 8035 |
| 6886 /** | 8036 /** |
| 6887 * Instances of the class {@code LibraryDirective} represent a library directive
. | 8037 * Instances of the class {@code LibraryDirective} represent a library directive
. |
| 6888 * <pre> | 8038 * <pre> |
| 6889 * libraryDirective ::={@link Annotation metadata} 'library' {@link Identifier n
ame} ';' | 8039 * libraryDirective ::={@link Annotation metadata} 'library' {@link Identifier n
ame} ';' |
| 6890 * </pre> | 8040 * </pre> |
| 6891 * @coverage dart.engine.ast | 8041 * @coverage dart.engine.ast |
| 6892 */ | 8042 */ |
| 6893 class LibraryDirective extends Directive { | 8043 class LibraryDirective extends Directive { |
| 8044 |
| 6894 /** | 8045 /** |
| 6895 * The token representing the 'library' token. | 8046 * The token representing the 'library' token. |
| 6896 */ | 8047 */ |
| 6897 Token _libraryToken; | 8048 Token _libraryToken; |
| 8049 |
| 6898 /** | 8050 /** |
| 6899 * The name of the library being defined. | 8051 * The name of the library being defined. |
| 6900 */ | 8052 */ |
| 6901 LibraryIdentifier _name; | 8053 LibraryIdentifier _name; |
| 8054 |
| 6902 /** | 8055 /** |
| 6903 * The semicolon terminating the directive. | 8056 * The semicolon terminating the directive. |
| 6904 */ | 8057 */ |
| 6905 Token _semicolon; | 8058 Token _semicolon; |
| 8059 |
| 6906 /** | 8060 /** |
| 6907 * Initialize a newly created library directive. | 8061 * Initialize a newly created library directive. |
| 6908 * @param comment the documentation comment associated with this directive | 8062 * @param comment the documentation comment associated with this directive |
| 6909 * @param metadata the annotations associated with the directive | 8063 * @param metadata the annotations associated with the directive |
| 6910 * @param libraryToken the token representing the 'library' token | 8064 * @param libraryToken the token representing the 'library' token |
| 6911 * @param name the name of the library being defined | 8065 * @param name the name of the library being defined |
| 6912 * @param semicolon the semicolon terminating the directive | 8066 * @param semicolon the semicolon terminating the directive |
| 6913 */ | 8067 */ |
| 6914 LibraryDirective.full(Comment comment, List<Annotation> metadata, Token librar
yToken, LibraryIdentifier name, Token semicolon) : super.full(comment, metadata)
{ | 8068 LibraryDirective.full(Comment comment, List<Annotation> metadata, Token librar
yToken, LibraryIdentifier name, Token semicolon) : super.full(comment, metadata)
{ |
| 6915 this._libraryToken = libraryToken; | 8069 this._libraryToken = libraryToken; |
| 6916 this._name = becomeParentOf(name); | 8070 this._name = becomeParentOf(name); |
| 6917 this._semicolon = semicolon; | 8071 this._semicolon = semicolon; |
| 6918 } | 8072 } |
| 8073 |
| 6919 /** | 8074 /** |
| 6920 * Initialize a newly created library directive. | 8075 * Initialize a newly created library directive. |
| 6921 * @param comment the documentation comment associated with this directive | 8076 * @param comment the documentation comment associated with this directive |
| 6922 * @param metadata the annotations associated with the directive | 8077 * @param metadata the annotations associated with the directive |
| 6923 * @param libraryToken the token representing the 'library' token | 8078 * @param libraryToken the token representing the 'library' token |
| 6924 * @param name the name of the library being defined | 8079 * @param name the name of the library being defined |
| 6925 * @param semicolon the semicolon terminating the directive | 8080 * @param semicolon the semicolon terminating the directive |
| 6926 */ | 8081 */ |
| 6927 LibraryDirective({Comment comment, List<Annotation> metadata, Token libraryTok
en, LibraryIdentifier name, Token semicolon}) : this.full(comment, metadata, lib
raryToken, name, semicolon); | 8082 LibraryDirective({Comment comment, List<Annotation> metadata, Token libraryTok
en, LibraryIdentifier name, Token semicolon}) : this.full(comment, metadata, lib
raryToken, name, semicolon); |
| 6928 accept(ASTVisitor visitor) => visitor.visitLibraryDirective(this); | 8083 accept(ASTVisitor visitor) => visitor.visitLibraryDirective(this); |
| 6929 Token get endToken => _semicolon; | 8084 Token get endToken => _semicolon; |
| 6930 Token get keyword => _libraryToken; | 8085 Token get keyword => _libraryToken; |
| 8086 |
| 6931 /** | 8087 /** |
| 6932 * Return the token representing the 'library' token. | 8088 * Return the token representing the 'library' token. |
| 6933 * @return the token representing the 'library' token | 8089 * @return the token representing the 'library' token |
| 6934 */ | 8090 */ |
| 6935 Token get libraryToken => _libraryToken; | 8091 Token get libraryToken => _libraryToken; |
| 8092 |
| 6936 /** | 8093 /** |
| 6937 * Return the name of the library being defined. | 8094 * Return the name of the library being defined. |
| 6938 * @return the name of the library being defined | 8095 * @return the name of the library being defined |
| 6939 */ | 8096 */ |
| 6940 LibraryIdentifier get name => _name; | 8097 LibraryIdentifier get name => _name; |
| 8098 |
| 6941 /** | 8099 /** |
| 6942 * Return the semicolon terminating the directive. | 8100 * Return the semicolon terminating the directive. |
| 6943 * @return the semicolon terminating the directive | 8101 * @return the semicolon terminating the directive |
| 6944 */ | 8102 */ |
| 6945 Token get semicolon => _semicolon; | 8103 Token get semicolon => _semicolon; |
| 8104 |
| 6946 /** | 8105 /** |
| 6947 * Set the token representing the 'library' token to the given token. | 8106 * Set the token representing the 'library' token to the given token. |
| 6948 * @param libraryToken the token representing the 'library' token | 8107 * @param libraryToken the token representing the 'library' token |
| 6949 */ | 8108 */ |
| 6950 void set libraryToken(Token libraryToken2) { | 8109 void set libraryToken(Token libraryToken2) { |
| 6951 this._libraryToken = libraryToken2; | 8110 this._libraryToken = libraryToken2; |
| 6952 } | 8111 } |
| 8112 |
| 6953 /** | 8113 /** |
| 6954 * Set the name of the library being defined to the given name. | 8114 * Set the name of the library being defined to the given name. |
| 6955 * @param name the name of the library being defined | 8115 * @param name the name of the library being defined |
| 6956 */ | 8116 */ |
| 6957 void set name(LibraryIdentifier name2) { | 8117 void set name(LibraryIdentifier name2) { |
| 6958 this._name = becomeParentOf(name2); | 8118 this._name = becomeParentOf(name2); |
| 6959 } | 8119 } |
| 8120 |
| 6960 /** | 8121 /** |
| 6961 * Set the semicolon terminating the directive to the given token. | 8122 * Set the semicolon terminating the directive to the given token. |
| 6962 * @param semicolon the semicolon terminating the directive | 8123 * @param semicolon the semicolon terminating the directive |
| 6963 */ | 8124 */ |
| 6964 void set semicolon(Token semicolon2) { | 8125 void set semicolon(Token semicolon2) { |
| 6965 this._semicolon = semicolon2; | 8126 this._semicolon = semicolon2; |
| 6966 } | 8127 } |
| 6967 void visitChildren(ASTVisitor<Object> visitor) { | 8128 void visitChildren(ASTVisitor<Object> visitor) { |
| 6968 super.visitChildren(visitor); | 8129 super.visitChildren(visitor); |
| 6969 safelyVisitChild(_name, visitor); | 8130 safelyVisitChild(_name, visitor); |
| 6970 } | 8131 } |
| 6971 Token get firstTokenAfterCommentAndMetadata => _libraryToken; | 8132 Token get firstTokenAfterCommentAndMetadata => _libraryToken; |
| 6972 } | 8133 } |
| 8134 |
| 6973 /** | 8135 /** |
| 6974 * Instances of the class {@code LibraryIdentifier} represent the identifier for
a library. | 8136 * Instances of the class {@code LibraryIdentifier} represent the identifier for
a library. |
| 6975 * <pre> | 8137 * <pre> |
| 6976 * libraryIdentifier ::={@link SimpleIdentifier component} ('.' {@link SimpleIde
ntifier component}) | 8138 * libraryIdentifier ::={@link SimpleIdentifier component} ('.' {@link SimpleIde
ntifier component}) |
| 6977 * </pre> | 8139 * </pre> |
| 6978 * @coverage dart.engine.ast | 8140 * @coverage dart.engine.ast |
| 6979 */ | 8141 */ |
| 6980 class LibraryIdentifier extends Identifier { | 8142 class LibraryIdentifier extends Identifier { |
| 8143 |
| 6981 /** | 8144 /** |
| 6982 * The components of the identifier. | 8145 * The components of the identifier. |
| 6983 */ | 8146 */ |
| 6984 NodeList<SimpleIdentifier> _components; | 8147 NodeList<SimpleIdentifier> _components; |
| 8148 |
| 6985 /** | 8149 /** |
| 6986 * Initialize a newly created prefixed identifier. | 8150 * Initialize a newly created prefixed identifier. |
| 6987 * @param components the components of the identifier | 8151 * @param components the components of the identifier |
| 6988 */ | 8152 */ |
| 6989 LibraryIdentifier.full(List<SimpleIdentifier> components) { | 8153 LibraryIdentifier.full(List<SimpleIdentifier> components) { |
| 6990 this._components = new NodeList<SimpleIdentifier>(this); | 8154 this._components = new NodeList<SimpleIdentifier>(this); |
| 6991 this._components.addAll(components); | 8155 this._components.addAll(components); |
| 6992 } | 8156 } |
| 8157 |
| 6993 /** | 8158 /** |
| 6994 * Initialize a newly created prefixed identifier. | 8159 * Initialize a newly created prefixed identifier. |
| 6995 * @param components the components of the identifier | 8160 * @param components the components of the identifier |
| 6996 */ | 8161 */ |
| 6997 LibraryIdentifier({List<SimpleIdentifier> components}) : this.full(components)
; | 8162 LibraryIdentifier({List<SimpleIdentifier> components}) : this.full(components)
; |
| 6998 accept(ASTVisitor visitor) => visitor.visitLibraryIdentifier(this); | 8163 accept(ASTVisitor visitor) => visitor.visitLibraryIdentifier(this); |
| 6999 Token get beginToken => _components.beginToken; | 8164 Token get beginToken => _components.beginToken; |
| 8165 |
| 7000 /** | 8166 /** |
| 7001 * Return the components of the identifier. | 8167 * Return the components of the identifier. |
| 7002 * @return the components of the identifier | 8168 * @return the components of the identifier |
| 7003 */ | 8169 */ |
| 7004 NodeList<SimpleIdentifier> get components => _components; | 8170 NodeList<SimpleIdentifier> get components => _components; |
| 7005 Element get element => null; | 8171 Element get element => null; |
| 7006 Token get endToken => _components.endToken; | 8172 Token get endToken => _components.endToken; |
| 7007 String get name { | 8173 String get name { |
| 7008 JavaStringBuilder builder = new JavaStringBuilder(); | 8174 JavaStringBuilder builder = new JavaStringBuilder(); |
| 7009 bool needsPeriod = false; | 8175 bool needsPeriod = false; |
| 7010 for (SimpleIdentifier identifier in _components) { | 8176 for (SimpleIdentifier identifier in _components) { |
| 7011 if (needsPeriod) { | 8177 if (needsPeriod) { |
| 7012 builder.append("."); | 8178 builder.append("."); |
| 7013 } else { | 8179 } else { |
| 7014 needsPeriod = true; | 8180 needsPeriod = true; |
| 7015 } | 8181 } |
| 7016 builder.append(identifier.name); | 8182 builder.append(identifier.name); |
| 7017 } | 8183 } |
| 7018 return builder.toString(); | 8184 return builder.toString(); |
| 7019 } | 8185 } |
| 8186 Element get staticElement => null; |
| 7020 void visitChildren(ASTVisitor<Object> visitor) { | 8187 void visitChildren(ASTVisitor<Object> visitor) { |
| 7021 _components.accept(visitor); | 8188 _components.accept(visitor); |
| 7022 } | 8189 } |
| 7023 } | 8190 } |
| 8191 |
| 7024 /** | 8192 /** |
| 7025 * Instances of the class {@code ListLiteral} represent a list literal. | 8193 * Instances of the class {@code ListLiteral} represent a list literal. |
| 7026 * <pre> | 8194 * <pre> |
| 7027 * listLiteral ::= | 8195 * listLiteral ::= |
| 7028 * 'const'? ('<' {@link TypeName type} '>')? '\[' ({@link Expression expressionL
ist} ','?)? '\]' | 8196 * 'const'? ('<' {@link TypeName type} '>')? '\[' ({@link Expression expressionL
ist} ','?)? '\]' |
| 7029 * </pre> | 8197 * </pre> |
| 7030 * @coverage dart.engine.ast | 8198 * @coverage dart.engine.ast |
| 7031 */ | 8199 */ |
| 7032 class ListLiteral extends TypedLiteral { | 8200 class ListLiteral extends TypedLiteral { |
| 8201 |
| 7033 /** | 8202 /** |
| 7034 * The left square bracket. | 8203 * The left square bracket. |
| 7035 */ | 8204 */ |
| 7036 Token _leftBracket; | 8205 Token _leftBracket; |
| 8206 |
| 7037 /** | 8207 /** |
| 7038 * The expressions used to compute the elements of the list. | 8208 * The expressions used to compute the elements of the list. |
| 7039 */ | 8209 */ |
| 7040 NodeList<Expression> _elements; | 8210 NodeList<Expression> _elements; |
| 8211 |
| 7041 /** | 8212 /** |
| 7042 * The right square bracket. | 8213 * The right square bracket. |
| 7043 */ | 8214 */ |
| 7044 Token _rightBracket; | 8215 Token _rightBracket; |
| 8216 |
| 7045 /** | 8217 /** |
| 7046 * Initialize a newly created list literal. | 8218 * Initialize a newly created list literal. |
| 7047 * @param modifier the const modifier associated with this literal | 8219 * @param modifier the const modifier associated with this literal |
| 7048 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 8220 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 7049 * arguments were declared | 8221 * arguments were declared |
| 7050 * @param leftBracket the left square bracket | 8222 * @param leftBracket the left square bracket |
| 7051 * @param elements the expressions used to compute the elements of the list | 8223 * @param elements the expressions used to compute the elements of the list |
| 7052 * @param rightBracket the right square bracket | 8224 * @param rightBracket the right square bracket |
| 7053 */ | 8225 */ |
| 7054 ListLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBra
cket, List<Expression> elements, Token rightBracket) : super.full(modifier, type
Arguments) { | 8226 ListLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBra
cket, List<Expression> elements, Token rightBracket) : super.full(modifier, type
Arguments) { |
| 7055 this._elements = new NodeList<Expression>(this); | 8227 this._elements = new NodeList<Expression>(this); |
| 7056 this._leftBracket = leftBracket; | 8228 this._leftBracket = leftBracket; |
| 7057 this._elements.addAll(elements); | 8229 this._elements.addAll(elements); |
| 7058 this._rightBracket = rightBracket; | 8230 this._rightBracket = rightBracket; |
| 7059 } | 8231 } |
| 8232 |
| 7060 /** | 8233 /** |
| 7061 * Initialize a newly created list literal. | 8234 * Initialize a newly created list literal. |
| 7062 * @param modifier the const modifier associated with this literal | 8235 * @param modifier the const modifier associated with this literal |
| 7063 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 8236 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 7064 * arguments were declared | 8237 * arguments were declared |
| 7065 * @param leftBracket the left square bracket | 8238 * @param leftBracket the left square bracket |
| 7066 * @param elements the expressions used to compute the elements of the list | 8239 * @param elements the expressions used to compute the elements of the list |
| 7067 * @param rightBracket the right square bracket | 8240 * @param rightBracket the right square bracket |
| 7068 */ | 8241 */ |
| 7069 ListLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket
, List<Expression> elements, Token rightBracket}) : this.full(modifier, typeArgu
ments, leftBracket, elements, rightBracket); | 8242 ListLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket
, List<Expression> elements, Token rightBracket}) : this.full(modifier, typeArgu
ments, leftBracket, elements, rightBracket); |
| 7070 accept(ASTVisitor visitor) => visitor.visitListLiteral(this); | 8243 accept(ASTVisitor visitor) => visitor.visitListLiteral(this); |
| 7071 Token get beginToken { | 8244 Token get beginToken { |
| 7072 Token token = modifier; | 8245 Token token = modifier; |
| 7073 if (token != null) { | 8246 if (token != null) { |
| 7074 return token; | 8247 return token; |
| 7075 } | 8248 } |
| 7076 TypeArgumentList typeArguments2 = typeArguments; | 8249 TypeArgumentList typeArguments2 = typeArguments; |
| 7077 if (typeArguments2 != null) { | 8250 if (typeArguments2 != null) { |
| 7078 return typeArguments2.beginToken; | 8251 return typeArguments2.beginToken; |
| 7079 } | 8252 } |
| 7080 return _leftBracket; | 8253 return _leftBracket; |
| 7081 } | 8254 } |
| 8255 |
| 7082 /** | 8256 /** |
| 7083 * Return the expressions used to compute the elements of the list. | 8257 * Return the expressions used to compute the elements of the list. |
| 7084 * @return the expressions used to compute the elements of the list | 8258 * @return the expressions used to compute the elements of the list |
| 7085 */ | 8259 */ |
| 7086 NodeList<Expression> get elements => _elements; | 8260 NodeList<Expression> get elements => _elements; |
| 7087 Token get endToken => _rightBracket; | 8261 Token get endToken => _rightBracket; |
| 8262 |
| 7088 /** | 8263 /** |
| 7089 * Return the left square bracket. | 8264 * Return the left square bracket. |
| 7090 * @return the left square bracket | 8265 * @return the left square bracket |
| 7091 */ | 8266 */ |
| 7092 Token get leftBracket => _leftBracket; | 8267 Token get leftBracket => _leftBracket; |
| 8268 |
| 7093 /** | 8269 /** |
| 7094 * Return the right square bracket. | 8270 * Return the right square bracket. |
| 7095 * @return the right square bracket | 8271 * @return the right square bracket |
| 7096 */ | 8272 */ |
| 7097 Token get rightBracket => _rightBracket; | 8273 Token get rightBracket => _rightBracket; |
| 8274 |
| 7098 /** | 8275 /** |
| 7099 * Set the left square bracket to the given token. | 8276 * Set the left square bracket to the given token. |
| 7100 * @param bracket the left square bracket | 8277 * @param bracket the left square bracket |
| 7101 */ | 8278 */ |
| 7102 void set leftBracket(Token bracket) { | 8279 void set leftBracket(Token bracket) { |
| 7103 _leftBracket = bracket; | 8280 _leftBracket = bracket; |
| 7104 } | 8281 } |
| 8282 |
| 7105 /** | 8283 /** |
| 7106 * Set the right square bracket to the given token. | 8284 * Set the right square bracket to the given token. |
| 7107 * @param bracket the right square bracket | 8285 * @param bracket the right square bracket |
| 7108 */ | 8286 */ |
| 7109 void set rightBracket(Token bracket) { | 8287 void set rightBracket(Token bracket) { |
| 7110 _rightBracket = bracket; | 8288 _rightBracket = bracket; |
| 7111 } | 8289 } |
| 7112 void visitChildren(ASTVisitor<Object> visitor) { | 8290 void visitChildren(ASTVisitor<Object> visitor) { |
| 7113 super.visitChildren(visitor); | 8291 super.visitChildren(visitor); |
| 7114 _elements.accept(visitor); | 8292 _elements.accept(visitor); |
| 7115 } | 8293 } |
| 7116 } | 8294 } |
| 8295 |
| 7117 /** | 8296 /** |
| 7118 * The abstract class {@code Literal} defines the behavior common to nodes that
represent a literal | 8297 * The abstract class {@code Literal} defines the behavior common to nodes that
represent a literal |
| 7119 * expression. | 8298 * expression. |
| 7120 * <pre> | 8299 * <pre> |
| 7121 * literal ::={@link BooleanLiteral booleanLiteral}| {@link DoubleLiteral double
Literal}| {@link IntegerLiteral integerLiteral}| {@link ListLiteral listLiteral}
| {@link MapLiteral mapLiteral}| {@link NullLiteral nullLiteral}| {@link StringL
iteral stringLiteral}</pre> | 8300 * literal ::={@link BooleanLiteral booleanLiteral}| {@link DoubleLiteral double
Literal}| {@link IntegerLiteral integerLiteral}| {@link ListLiteral listLiteral}
| {@link MapLiteral mapLiteral}| {@link NullLiteral nullLiteral}| {@link StringL
iteral stringLiteral}</pre> |
| 7122 * @coverage dart.engine.ast | 8301 * @coverage dart.engine.ast |
| 7123 */ | 8302 */ |
| 7124 abstract class Literal extends Expression { | 8303 abstract class Literal extends Expression { |
| 7125 } | 8304 } |
| 8305 |
| 7126 /** | 8306 /** |
| 7127 * Instances of the class {@code MapLiteral} represent a literal map. | 8307 * Instances of the class {@code MapLiteral} represent a literal map. |
| 7128 * <pre> | 8308 * <pre> |
| 7129 * mapLiteral ::= | 8309 * mapLiteral ::= |
| 7130 * 'const'? ('<' {@link TypeName type} (',' {@link TypeName type})* '>')? '{' ({
@link MapLiteralEntry entry} (',' {@link MapLiteralEntry entry})* ','?)? '}' | 8310 * 'const'? ('<' {@link TypeName type} (',' {@link TypeName type})* '>')? '{' ({
@link MapLiteralEntry entry} (',' {@link MapLiteralEntry entry})* ','?)? '}' |
| 7131 * </pre> | 8311 * </pre> |
| 7132 * @coverage dart.engine.ast | 8312 * @coverage dart.engine.ast |
| 7133 */ | 8313 */ |
| 7134 class MapLiteral extends TypedLiteral { | 8314 class MapLiteral extends TypedLiteral { |
| 8315 |
| 7135 /** | 8316 /** |
| 7136 * The left curly bracket. | 8317 * The left curly bracket. |
| 7137 */ | 8318 */ |
| 7138 Token _leftBracket; | 8319 Token _leftBracket; |
| 8320 |
| 7139 /** | 8321 /** |
| 7140 * The entries in the map. | 8322 * The entries in the map. |
| 7141 */ | 8323 */ |
| 7142 NodeList<MapLiteralEntry> _entries; | 8324 NodeList<MapLiteralEntry> _entries; |
| 8325 |
| 7143 /** | 8326 /** |
| 7144 * The right curly bracket. | 8327 * The right curly bracket. |
| 7145 */ | 8328 */ |
| 7146 Token _rightBracket; | 8329 Token _rightBracket; |
| 8330 |
| 7147 /** | 8331 /** |
| 7148 * Initialize a newly created map literal. | 8332 * Initialize a newly created map literal. |
| 7149 * @param modifier the const modifier associated with this literal | 8333 * @param modifier the const modifier associated with this literal |
| 7150 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 8334 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 7151 * arguments were declared | 8335 * arguments were declared |
| 7152 * @param leftBracket the left curly bracket | 8336 * @param leftBracket the left curly bracket |
| 7153 * @param entries the entries in the map | 8337 * @param entries the entries in the map |
| 7154 * @param rightBracket the right curly bracket | 8338 * @param rightBracket the right curly bracket |
| 7155 */ | 8339 */ |
| 7156 MapLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBrac
ket, List<MapLiteralEntry> entries, Token rightBracket) : super.full(modifier, t
ypeArguments) { | 8340 MapLiteral.full(Token modifier, TypeArgumentList typeArguments, Token leftBrac
ket, List<MapLiteralEntry> entries, Token rightBracket) : super.full(modifier, t
ypeArguments) { |
| 7157 this._entries = new NodeList<MapLiteralEntry>(this); | 8341 this._entries = new NodeList<MapLiteralEntry>(this); |
| 7158 this._leftBracket = leftBracket; | 8342 this._leftBracket = leftBracket; |
| 7159 this._entries.addAll(entries); | 8343 this._entries.addAll(entries); |
| 7160 this._rightBracket = rightBracket; | 8344 this._rightBracket = rightBracket; |
| 7161 } | 8345 } |
| 8346 |
| 7162 /** | 8347 /** |
| 7163 * Initialize a newly created map literal. | 8348 * Initialize a newly created map literal. |
| 7164 * @param modifier the const modifier associated with this literal | 8349 * @param modifier the const modifier associated with this literal |
| 7165 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 8350 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 7166 * arguments were declared | 8351 * arguments were declared |
| 7167 * @param leftBracket the left curly bracket | 8352 * @param leftBracket the left curly bracket |
| 7168 * @param entries the entries in the map | 8353 * @param entries the entries in the map |
| 7169 * @param rightBracket the right curly bracket | 8354 * @param rightBracket the right curly bracket |
| 7170 */ | 8355 */ |
| 7171 MapLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket,
List<MapLiteralEntry> entries, Token rightBracket}) : this.full(modifier, typeA
rguments, leftBracket, entries, rightBracket); | 8356 MapLiteral({Token modifier, TypeArgumentList typeArguments, Token leftBracket,
List<MapLiteralEntry> entries, Token rightBracket}) : this.full(modifier, typeA
rguments, leftBracket, entries, rightBracket); |
| 7172 accept(ASTVisitor visitor) => visitor.visitMapLiteral(this); | 8357 accept(ASTVisitor visitor) => visitor.visitMapLiteral(this); |
| 7173 Token get beginToken { | 8358 Token get beginToken { |
| 7174 Token token = modifier; | 8359 Token token = modifier; |
| 7175 if (token != null) { | 8360 if (token != null) { |
| 7176 return token; | 8361 return token; |
| 7177 } | 8362 } |
| 7178 TypeArgumentList typeArguments2 = typeArguments; | 8363 TypeArgumentList typeArguments2 = typeArguments; |
| 7179 if (typeArguments2 != null) { | 8364 if (typeArguments2 != null) { |
| 7180 return typeArguments2.beginToken; | 8365 return typeArguments2.beginToken; |
| 7181 } | 8366 } |
| 7182 return _leftBracket; | 8367 return _leftBracket; |
| 7183 } | 8368 } |
| 7184 Token get endToken => _rightBracket; | 8369 Token get endToken => _rightBracket; |
| 8370 |
| 7185 /** | 8371 /** |
| 7186 * Return the entries in the map. | 8372 * Return the entries in the map. |
| 7187 * @return the entries in the map | 8373 * @return the entries in the map |
| 7188 */ | 8374 */ |
| 7189 NodeList<MapLiteralEntry> get entries => _entries; | 8375 NodeList<MapLiteralEntry> get entries => _entries; |
| 8376 |
| 7190 /** | 8377 /** |
| 7191 * Return the left curly bracket. | 8378 * Return the left curly bracket. |
| 7192 * @return the left curly bracket | 8379 * @return the left curly bracket |
| 7193 */ | 8380 */ |
| 7194 Token get leftBracket => _leftBracket; | 8381 Token get leftBracket => _leftBracket; |
| 8382 |
| 7195 /** | 8383 /** |
| 7196 * Return the right curly bracket. | 8384 * Return the right curly bracket. |
| 7197 * @return the right curly bracket | 8385 * @return the right curly bracket |
| 7198 */ | 8386 */ |
| 7199 Token get rightBracket => _rightBracket; | 8387 Token get rightBracket => _rightBracket; |
| 8388 |
| 7200 /** | 8389 /** |
| 7201 * Set the left curly bracket to the given token. | 8390 * Set the left curly bracket to the given token. |
| 7202 * @param bracket the left curly bracket | 8391 * @param bracket the left curly bracket |
| 7203 */ | 8392 */ |
| 7204 void set leftBracket(Token bracket) { | 8393 void set leftBracket(Token bracket) { |
| 7205 _leftBracket = bracket; | 8394 _leftBracket = bracket; |
| 7206 } | 8395 } |
| 8396 |
| 7207 /** | 8397 /** |
| 7208 * Set the right curly bracket to the given token. | 8398 * Set the right curly bracket to the given token. |
| 7209 * @param bracket the right curly bracket | 8399 * @param bracket the right curly bracket |
| 7210 */ | 8400 */ |
| 7211 void set rightBracket(Token bracket) { | 8401 void set rightBracket(Token bracket) { |
| 7212 _rightBracket = bracket; | 8402 _rightBracket = bracket; |
| 7213 } | 8403 } |
| 7214 void visitChildren(ASTVisitor<Object> visitor) { | 8404 void visitChildren(ASTVisitor<Object> visitor) { |
| 7215 super.visitChildren(visitor); | 8405 super.visitChildren(visitor); |
| 7216 _entries.accept(visitor); | 8406 _entries.accept(visitor); |
| 7217 } | 8407 } |
| 7218 } | 8408 } |
| 8409 |
| 7219 /** | 8410 /** |
| 7220 * Instances of the class {@code MapLiteralEntry} represent a single key/value p
air in a map | 8411 * Instances of the class {@code MapLiteralEntry} represent a single key/value p
air in a map |
| 7221 * literal. | 8412 * literal. |
| 7222 * <pre> | 8413 * <pre> |
| 7223 * mapLiteralEntry ::={@link StringLiteral key} ':' {@link Expression value}</pr
e> | 8414 * mapLiteralEntry ::={@link Expression key} ':' {@link Expression value}</pre> |
| 7224 * @coverage dart.engine.ast | 8415 * @coverage dart.engine.ast |
| 7225 */ | 8416 */ |
| 7226 class MapLiteralEntry extends ASTNode { | 8417 class MapLiteralEntry extends ASTNode { |
| 8418 |
| 7227 /** | 8419 /** |
| 7228 * The key with which the value will be associated. | 8420 * The expression computing the key with which the value will be associated. |
| 7229 */ | 8421 */ |
| 7230 StringLiteral _key; | 8422 Expression _key; |
| 8423 |
| 7231 /** | 8424 /** |
| 7232 * The colon that separates the key from the value. | 8425 * The colon that separates the key from the value. |
| 7233 */ | 8426 */ |
| 7234 Token _separator; | 8427 Token _separator; |
| 8428 |
| 7235 /** | 8429 /** |
| 7236 * The expression computing the value that will be associated with the key. | 8430 * The expression computing the value that will be associated with the key. |
| 7237 */ | 8431 */ |
| 7238 Expression _value; | 8432 Expression _value; |
| 8433 |
| 7239 /** | 8434 /** |
| 7240 * Initialize a newly created map literal entry. | 8435 * Initialize a newly created map literal entry. |
| 7241 * @param key the key with which the value will be associated | 8436 * @param key the expression computing the key with which the value will be as
sociated |
| 7242 * @param separator the colon that separates the key from the value | 8437 * @param separator the colon that separates the key from the value |
| 7243 * @param value the expression computing the value that will be associated wit
h the key | 8438 * @param value the expression computing the value that will be associated wit
h the key |
| 7244 */ | 8439 */ |
| 7245 MapLiteralEntry.full(StringLiteral key, Token separator, Expression value) { | 8440 MapLiteralEntry.full(Expression key, Token separator, Expression value) { |
| 7246 this._key = becomeParentOf(key); | 8441 this._key = becomeParentOf(key); |
| 7247 this._separator = separator; | 8442 this._separator = separator; |
| 7248 this._value = becomeParentOf(value); | 8443 this._value = becomeParentOf(value); |
| 7249 } | 8444 } |
| 8445 |
| 7250 /** | 8446 /** |
| 7251 * Initialize a newly created map literal entry. | 8447 * Initialize a newly created map literal entry. |
| 7252 * @param key the key with which the value will be associated | 8448 * @param key the expression computing the key with which the value will be as
sociated |
| 7253 * @param separator the colon that separates the key from the value | 8449 * @param separator the colon that separates the key from the value |
| 7254 * @param value the expression computing the value that will be associated wit
h the key | 8450 * @param value the expression computing the value that will be associated wit
h the key |
| 7255 */ | 8451 */ |
| 7256 MapLiteralEntry({StringLiteral key, Token separator, Expression value}) : this
.full(key, separator, value); | 8452 MapLiteralEntry({Expression key, Token separator, Expression value}) : this.fu
ll(key, separator, value); |
| 7257 accept(ASTVisitor visitor) => visitor.visitMapLiteralEntry(this); | 8453 accept(ASTVisitor visitor) => visitor.visitMapLiteralEntry(this); |
| 7258 Token get beginToken => _key.beginToken; | 8454 Token get beginToken => _key.beginToken; |
| 7259 Token get endToken => _value.endToken; | 8455 Token get endToken => _value.endToken; |
| 8456 |
| 7260 /** | 8457 /** |
| 7261 * Return the key with which the value will be associated. | 8458 * Return the expression computing the key with which the value will be associ
ated. |
| 7262 * @return the key with which the value will be associated | 8459 * @return the expression computing the key with which the value will be assoc
iated |
| 7263 */ | 8460 */ |
| 7264 StringLiteral get key => _key; | 8461 Expression get key => _key; |
| 8462 |
| 7265 /** | 8463 /** |
| 7266 * Return the colon that separates the key from the value. | 8464 * Return the colon that separates the key from the value. |
| 7267 * @return the colon that separates the key from the value | 8465 * @return the colon that separates the key from the value |
| 7268 */ | 8466 */ |
| 7269 Token get separator => _separator; | 8467 Token get separator => _separator; |
| 8468 |
| 7270 /** | 8469 /** |
| 7271 * Return the expression computing the value that will be associated with the
key. | 8470 * Return the expression computing the value that will be associated with the
key. |
| 7272 * @return the expression computing the value that will be associated with the
key | 8471 * @return the expression computing the value that will be associated with the
key |
| 7273 */ | 8472 */ |
| 7274 Expression get value => _value; | 8473 Expression get value => _value; |
| 8474 |
| 7275 /** | 8475 /** |
| 7276 * Set the key with which the value will be associated to the given string. | 8476 * Set the expression computing the key with which the value will be associate
d to the given |
| 7277 * @param string the key with which the value will be associated | 8477 * string. |
| 8478 * @param string the expression computing the key with which the value will be
associated |
| 7278 */ | 8479 */ |
| 7279 void set key(StringLiteral string) { | 8480 void set key(Expression string) { |
| 7280 _key = becomeParentOf(string); | 8481 _key = becomeParentOf(string); |
| 7281 } | 8482 } |
| 8483 |
| 7282 /** | 8484 /** |
| 7283 * Set the colon that separates the key from the value to the given token. | 8485 * Set the colon that separates the key from the value to the given token. |
| 7284 * @param separator the colon that separates the key from the value | 8486 * @param separator the colon that separates the key from the value |
| 7285 */ | 8487 */ |
| 7286 void set separator(Token separator2) { | 8488 void set separator(Token separator2) { |
| 7287 this._separator = separator2; | 8489 this._separator = separator2; |
| 7288 } | 8490 } |
| 8491 |
| 7289 /** | 8492 /** |
| 7290 * Set the expression computing the value that will be associated with the key
to the given | 8493 * Set the expression computing the value that will be associated with the key
to the given |
| 7291 * expression. | 8494 * expression. |
| 7292 * @param expression the expression computing the value that will be associate
d with the key | 8495 * @param expression the expression computing the value that will be associate
d with the key |
| 7293 */ | 8496 */ |
| 7294 void set value(Expression expression) { | 8497 void set value(Expression expression) { |
| 7295 _value = becomeParentOf(expression); | 8498 _value = becomeParentOf(expression); |
| 7296 } | 8499 } |
| 7297 void visitChildren(ASTVisitor<Object> visitor) { | 8500 void visitChildren(ASTVisitor<Object> visitor) { |
| 7298 safelyVisitChild(_key, visitor); | 8501 safelyVisitChild(_key, visitor); |
| 7299 safelyVisitChild(_value, visitor); | 8502 safelyVisitChild(_value, visitor); |
| 7300 } | 8503 } |
| 7301 } | 8504 } |
| 8505 |
| 7302 /** | 8506 /** |
| 7303 * Instances of the class {@code MethodDeclaration} represent a method declarati
on. | 8507 * Instances of the class {@code MethodDeclaration} represent a method declarati
on. |
| 7304 * <pre> | 8508 * <pre> |
| 7305 * methodDeclaration ::= | 8509 * methodDeclaration ::= |
| 7306 * methodSignature {@link FunctionBody body}methodSignature ::= | 8510 * methodSignature {@link FunctionBody body}methodSignature ::= |
| 7307 * 'external'? ('abstract' | 'static')? {@link Type returnType}? ('get' | 'set')
? methodName{@link FormalParameterList formalParameterList}methodName ::={@link
SimpleIdentifier name}| 'operator' {@link SimpleIdentifier operator}</pre> | 8511 * 'external'? ('abstract' | 'static')? {@link Type returnType}? ('get' | 'set')
? methodName{@link FormalParameterList formalParameterList}methodName ::={@link
SimpleIdentifier name}| 'operator' {@link SimpleIdentifier operator}</pre> |
| 7308 * @coverage dart.engine.ast | 8512 * @coverage dart.engine.ast |
| 7309 */ | 8513 */ |
| 7310 class MethodDeclaration extends ClassMember { | 8514 class MethodDeclaration extends ClassMember { |
| 8515 |
| 7311 /** | 8516 /** |
| 7312 * The token for the 'external' keyword, or {@code null} if the constructor is
not external. | 8517 * The token for the 'external' keyword, or {@code null} if the constructor is
not external. |
| 7313 */ | 8518 */ |
| 7314 Token _externalKeyword; | 8519 Token _externalKeyword; |
| 8520 |
| 7315 /** | 8521 /** |
| 7316 * The token representing the 'abstract' or 'static' keyword, or {@code null}
if neither modifier | 8522 * The token representing the 'abstract' or 'static' keyword, or {@code null}
if neither modifier |
| 7317 * was specified. | 8523 * was specified. |
| 7318 */ | 8524 */ |
| 7319 Token _modifierKeyword; | 8525 Token _modifierKeyword; |
| 8526 |
| 7320 /** | 8527 /** |
| 7321 * The return type of the method, or {@code null} if no return type was declar
ed. | 8528 * The return type of the method, or {@code null} if no return type was declar
ed. |
| 7322 */ | 8529 */ |
| 7323 TypeName _returnType; | 8530 TypeName _returnType; |
| 8531 |
| 7324 /** | 8532 /** |
| 7325 * The token representing the 'get' or 'set' keyword, or {@code null} if this
is a method | 8533 * The token representing the 'get' or 'set' keyword, or {@code null} if this
is a method |
| 7326 * declaration rather than a property declaration. | 8534 * declaration rather than a property declaration. |
| 7327 */ | 8535 */ |
| 7328 Token _propertyKeyword; | 8536 Token _propertyKeyword; |
| 8537 |
| 7329 /** | 8538 /** |
| 7330 * The token representing the 'operator' keyword, or {@code null} if this meth
od does not declare | 8539 * The token representing the 'operator' keyword, or {@code null} if this meth
od does not declare |
| 7331 * an operator. | 8540 * an operator. |
| 7332 */ | 8541 */ |
| 7333 Token _operatorKeyword; | 8542 Token _operatorKeyword; |
| 8543 |
| 7334 /** | 8544 /** |
| 7335 * The name of the method. | 8545 * The name of the method. |
| 7336 */ | 8546 */ |
| 7337 SimpleIdentifier _name; | 8547 SimpleIdentifier _name; |
| 8548 |
| 7338 /** | 8549 /** |
| 7339 * The parameters associated with the method, or {@code null} if this method d
eclares a getter. | 8550 * The parameters associated with the method, or {@code null} if this method d
eclares a getter. |
| 7340 */ | 8551 */ |
| 7341 FormalParameterList _parameters; | 8552 FormalParameterList _parameters; |
| 8553 |
| 7342 /** | 8554 /** |
| 7343 * The body of the method. | 8555 * The body of the method. |
| 7344 */ | 8556 */ |
| 7345 FunctionBody _body; | 8557 FunctionBody _body; |
| 8558 |
| 7346 /** | 8559 /** |
| 7347 * Initialize a newly created method declaration. | 8560 * Initialize a newly created method declaration. |
| 7348 * @param externalKeyword the token for the 'external' keyword | 8561 * @param externalKeyword the token for the 'external' keyword |
| 7349 * @param comment the documentation comment associated with this method | 8562 * @param comment the documentation comment associated with this method |
| 7350 * @param metadata the annotations associated with this method | 8563 * @param metadata the annotations associated with this method |
| 7351 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword | 8564 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword |
| 7352 * @param returnType the return type of the method | 8565 * @param returnType the return type of the method |
| 7353 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 8566 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 7354 * @param operatorKeyword the token representing the 'operator' keyword | 8567 * @param operatorKeyword the token representing the 'operator' keyword |
| 7355 * @param name the name of the method | 8568 * @param name the name of the method |
| 7356 * @param parameters the parameters associated with the method, or {@code null
} if this method | 8569 * @param parameters the parameters associated with the method, or {@code null
} if this method |
| 7357 * declares a getter | 8570 * declares a getter |
| 7358 * @param body the body of the method | 8571 * @param body the body of the method |
| 7359 */ | 8572 */ |
| 7360 MethodDeclaration.full(Comment comment, List<Annotation> metadata, Token exter
nalKeyword, Token modifierKeyword, TypeName returnType, Token propertyKeyword, T
oken operatorKeyword, SimpleIdentifier name, FormalParameterList parameters, Fun
ctionBody body) : super.full(comment, metadata) { | 8573 MethodDeclaration.full(Comment comment, List<Annotation> metadata, Token exter
nalKeyword, Token modifierKeyword, TypeName returnType, Token propertyKeyword, T
oken operatorKeyword, SimpleIdentifier name, FormalParameterList parameters, Fun
ctionBody body) : super.full(comment, metadata) { |
| 7361 this._externalKeyword = externalKeyword; | 8574 this._externalKeyword = externalKeyword; |
| 7362 this._modifierKeyword = modifierKeyword; | 8575 this._modifierKeyword = modifierKeyword; |
| 7363 this._returnType = becomeParentOf(returnType); | 8576 this._returnType = becomeParentOf(returnType); |
| 7364 this._propertyKeyword = propertyKeyword; | 8577 this._propertyKeyword = propertyKeyword; |
| 7365 this._operatorKeyword = operatorKeyword; | 8578 this._operatorKeyword = operatorKeyword; |
| 7366 this._name = becomeParentOf(name); | 8579 this._name = becomeParentOf(name); |
| 7367 this._parameters = becomeParentOf(parameters); | 8580 this._parameters = becomeParentOf(parameters); |
| 7368 this._body = becomeParentOf(body); | 8581 this._body = becomeParentOf(body); |
| 7369 } | 8582 } |
| 8583 |
| 7370 /** | 8584 /** |
| 7371 * Initialize a newly created method declaration. | 8585 * Initialize a newly created method declaration. |
| 7372 * @param externalKeyword the token for the 'external' keyword | 8586 * @param externalKeyword the token for the 'external' keyword |
| 7373 * @param comment the documentation comment associated with this method | 8587 * @param comment the documentation comment associated with this method |
| 7374 * @param metadata the annotations associated with this method | 8588 * @param metadata the annotations associated with this method |
| 7375 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword | 8589 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword |
| 7376 * @param returnType the return type of the method | 8590 * @param returnType the return type of the method |
| 7377 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 8591 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 7378 * @param operatorKeyword the token representing the 'operator' keyword | 8592 * @param operatorKeyword the token representing the 'operator' keyword |
| 7379 * @param name the name of the method | 8593 * @param name the name of the method |
| 7380 * @param parameters the parameters associated with the method, or {@code null
} if this method | 8594 * @param parameters the parameters associated with the method, or {@code null
} if this method |
| 7381 * declares a getter | 8595 * declares a getter |
| 7382 * @param body the body of the method | 8596 * @param body the body of the method |
| 7383 */ | 8597 */ |
| 7384 MethodDeclaration({Comment comment, List<Annotation> metadata, Token externalK
eyword, Token modifierKeyword, TypeName returnType, Token propertyKeyword, Token
operatorKeyword, SimpleIdentifier name, FormalParameterList parameters, Functio
nBody body}) : this.full(comment, metadata, externalKeyword, modifierKeyword, re
turnType, propertyKeyword, operatorKeyword, name, parameters, body); | 8598 MethodDeclaration({Comment comment, List<Annotation> metadata, Token externalK
eyword, Token modifierKeyword, TypeName returnType, Token propertyKeyword, Token
operatorKeyword, SimpleIdentifier name, FormalParameterList parameters, Functio
nBody body}) : this.full(comment, metadata, externalKeyword, modifierKeyword, re
turnType, propertyKeyword, operatorKeyword, name, parameters, body); |
| 7385 accept(ASTVisitor visitor) => visitor.visitMethodDeclaration(this); | 8599 accept(ASTVisitor visitor) => visitor.visitMethodDeclaration(this); |
| 8600 |
| 7386 /** | 8601 /** |
| 7387 * Return the body of the method. | 8602 * Return the body of the method. |
| 7388 * @return the body of the method | 8603 * @return the body of the method |
| 7389 */ | 8604 */ |
| 7390 FunctionBody get body => _body; | 8605 FunctionBody get body => _body; |
| 8606 |
| 7391 /** | 8607 /** |
| 7392 * Return the element associated with this method, or {@code null} if the AST
structure has not | 8608 * Return the element associated with this method, or {@code null} if the AST
structure has not |
| 7393 * been resolved. The element can either be a {@link MethodElement}, if this r
epresents the | 8609 * been resolved. The element can either be a {@link MethodElement}, if this r
epresents the |
| 7394 * declaration of a normal method, or a {@link PropertyAccessorElement} if thi
s represents the | 8610 * declaration of a normal method, or a {@link PropertyAccessorElement} if thi
s represents the |
| 7395 * declaration of either a getter or a setter. | 8611 * declaration of either a getter or a setter. |
| 7396 * @return the element associated with this method | 8612 * @return the element associated with this method |
| 7397 */ | 8613 */ |
| 7398 ExecutableElement get element => _name != null ? (_name.element as ExecutableE
lement) : null; | 8614 ExecutableElement get element => _name != null ? (_name.element as ExecutableE
lement) : null; |
| 7399 Token get endToken => _body.endToken; | 8615 Token get endToken => _body.endToken; |
| 8616 |
| 7400 /** | 8617 /** |
| 7401 * Return the token for the 'external' keyword, or {@code null} if the constru
ctor is not | 8618 * Return the token for the 'external' keyword, or {@code null} if the constru
ctor is not |
| 7402 * external. | 8619 * external. |
| 7403 * @return the token for the 'external' keyword | 8620 * @return the token for the 'external' keyword |
| 7404 */ | 8621 */ |
| 7405 Token get externalKeyword => _externalKeyword; | 8622 Token get externalKeyword => _externalKeyword; |
| 8623 |
| 7406 /** | 8624 /** |
| 7407 * Return the token representing the 'abstract' or 'static' keyword, or {@code
null} if neither | 8625 * Return the token representing the 'abstract' or 'static' keyword, or {@code
null} if neither |
| 7408 * modifier was specified. | 8626 * modifier was specified. |
| 7409 * @return the token representing the 'abstract' or 'static' keyword | 8627 * @return the token representing the 'abstract' or 'static' keyword |
| 7410 */ | 8628 */ |
| 7411 Token get modifierKeyword => _modifierKeyword; | 8629 Token get modifierKeyword => _modifierKeyword; |
| 8630 |
| 7412 /** | 8631 /** |
| 7413 * Return the name of the method. | 8632 * Return the name of the method. |
| 7414 * @return the name of the method | 8633 * @return the name of the method |
| 7415 */ | 8634 */ |
| 7416 SimpleIdentifier get name => _name; | 8635 SimpleIdentifier get name => _name; |
| 8636 |
| 7417 /** | 8637 /** |
| 7418 * Return the token representing the 'operator' keyword, or {@code null} if th
is method does not | 8638 * Return the token representing the 'operator' keyword, or {@code null} if th
is method does not |
| 7419 * declare an operator. | 8639 * declare an operator. |
| 7420 * @return the token representing the 'operator' keyword | 8640 * @return the token representing the 'operator' keyword |
| 7421 */ | 8641 */ |
| 7422 Token get operatorKeyword => _operatorKeyword; | 8642 Token get operatorKeyword => _operatorKeyword; |
| 8643 |
| 7423 /** | 8644 /** |
| 7424 * Return the parameters associated with the method, or {@code null} if this m
ethod declares a | 8645 * Return the parameters associated with the method, or {@code null} if this m
ethod declares a |
| 7425 * getter. | 8646 * getter. |
| 7426 * @return the parameters associated with the method | 8647 * @return the parameters associated with the method |
| 7427 */ | 8648 */ |
| 7428 FormalParameterList get parameters => _parameters; | 8649 FormalParameterList get parameters => _parameters; |
| 8650 |
| 7429 /** | 8651 /** |
| 7430 * Return the token representing the 'get' or 'set' keyword, or {@code null} i
f this is a method | 8652 * Return the token representing the 'get' or 'set' keyword, or {@code null} i
f this is a method |
| 7431 * declaration rather than a property declaration. | 8653 * declaration rather than a property declaration. |
| 7432 * @return the token representing the 'get' or 'set' keyword | 8654 * @return the token representing the 'get' or 'set' keyword |
| 7433 */ | 8655 */ |
| 7434 Token get propertyKeyword => _propertyKeyword; | 8656 Token get propertyKeyword => _propertyKeyword; |
| 8657 |
| 7435 /** | 8658 /** |
| 7436 * Return the return type of the method, or {@code null} if no return type was
declared. | 8659 * Return the return type of the method, or {@code null} if no return type was
declared. |
| 7437 * @return the return type of the method | 8660 * @return the return type of the method |
| 7438 */ | 8661 */ |
| 7439 TypeName get returnType => _returnType; | 8662 TypeName get returnType => _returnType; |
| 8663 |
| 7440 /** | 8664 /** |
| 7441 * Return {@code true} if this method is declared to be an abstract method. | 8665 * Return {@code true} if this method is declared to be an abstract method. |
| 7442 * @return {@code true} if this method is declared to be an abstract method | 8666 * @return {@code true} if this method is declared to be an abstract method |
| 7443 */ | 8667 */ |
| 7444 bool isAbstract() => _externalKeyword == null && (_body is EmptyFunctionBody); | 8668 bool isAbstract() => _externalKeyword == null && (_body is EmptyFunctionBody); |
| 8669 |
| 7445 /** | 8670 /** |
| 7446 * Return {@code true} if this method declares a getter. | 8671 * Return {@code true} if this method declares a getter. |
| 7447 * @return {@code true} if this method declares a getter | 8672 * @return {@code true} if this method declares a getter |
| 7448 */ | 8673 */ |
| 7449 bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.GET); | 8674 bool isGetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.GET); |
| 8675 |
| 7450 /** | 8676 /** |
| 7451 * Return {@code true} if this method declares an operator. | 8677 * Return {@code true} if this method declares an operator. |
| 7452 * @return {@code true} if this method declares an operator | 8678 * @return {@code true} if this method declares an operator |
| 7453 */ | 8679 */ |
| 7454 bool isOperator() => _operatorKeyword != null; | 8680 bool isOperator() => _operatorKeyword != null; |
| 8681 |
| 7455 /** | 8682 /** |
| 7456 * Return {@code true} if this method declares a setter. | 8683 * Return {@code true} if this method declares a setter. |
| 7457 * @return {@code true} if this method declares a setter | 8684 * @return {@code true} if this method declares a setter |
| 7458 */ | 8685 */ |
| 7459 bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.SET); | 8686 bool isSetter() => _propertyKeyword != null && identical(((_propertyKeyword as
KeywordToken)).keyword, Keyword.SET); |
| 8687 |
| 7460 /** | 8688 /** |
| 7461 * Return {@code true} if this method is declared to be a static method. | 8689 * Return {@code true} if this method is declared to be a static method. |
| 7462 * @return {@code true} if this method is declared to be a static method | 8690 * @return {@code true} if this method is declared to be a static method |
| 7463 */ | 8691 */ |
| 7464 bool isStatic() => _modifierKeyword != null && identical(((_modifierKeyword as
KeywordToken)).keyword, Keyword.STATIC); | 8692 bool isStatic() => _modifierKeyword != null && identical(((_modifierKeyword as
KeywordToken)).keyword, Keyword.STATIC); |
| 8693 |
| 7465 /** | 8694 /** |
| 7466 * Set the body of the method to the given function body. | 8695 * Set the body of the method to the given function body. |
| 7467 * @param functionBody the body of the method | 8696 * @param functionBody the body of the method |
| 7468 */ | 8697 */ |
| 7469 void set body(FunctionBody functionBody) { | 8698 void set body(FunctionBody functionBody) { |
| 7470 _body = becomeParentOf(functionBody); | 8699 _body = becomeParentOf(functionBody); |
| 7471 } | 8700 } |
| 8701 |
| 7472 /** | 8702 /** |
| 7473 * Set the token for the 'external' keyword to the given token. | 8703 * Set the token for the 'external' keyword to the given token. |
| 7474 * @param externalKeyword the token for the 'external' keyword | 8704 * @param externalKeyword the token for the 'external' keyword |
| 7475 */ | 8705 */ |
| 7476 void set externalKeyword(Token externalKeyword2) { | 8706 void set externalKeyword(Token externalKeyword2) { |
| 7477 this._externalKeyword = externalKeyword2; | 8707 this._externalKeyword = externalKeyword2; |
| 7478 } | 8708 } |
| 8709 |
| 7479 /** | 8710 /** |
| 7480 * Set the token representing the 'abstract' or 'static' keyword to the given
token. | 8711 * Set the token representing the 'abstract' or 'static' keyword to the given
token. |
| 7481 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword | 8712 * @param modifierKeyword the token representing the 'abstract' or 'static' ke
yword |
| 7482 */ | 8713 */ |
| 7483 void set modifierKeyword(Token modifierKeyword2) { | 8714 void set modifierKeyword(Token modifierKeyword2) { |
| 7484 this._modifierKeyword = modifierKeyword2; | 8715 this._modifierKeyword = modifierKeyword2; |
| 7485 } | 8716 } |
| 8717 |
| 7486 /** | 8718 /** |
| 7487 * Set the name of the method to the given identifier. | 8719 * Set the name of the method to the given identifier. |
| 7488 * @param identifier the name of the method | 8720 * @param identifier the name of the method |
| 7489 */ | 8721 */ |
| 7490 void set name(SimpleIdentifier identifier) { | 8722 void set name(SimpleIdentifier identifier) { |
| 7491 _name = becomeParentOf(identifier); | 8723 _name = becomeParentOf(identifier); |
| 7492 } | 8724 } |
| 8725 |
| 7493 /** | 8726 /** |
| 7494 * Set the token representing the 'operator' keyword to the given token. | 8727 * Set the token representing the 'operator' keyword to the given token. |
| 7495 * @param operatorKeyword the token representing the 'operator' keyword | 8728 * @param operatorKeyword the token representing the 'operator' keyword |
| 7496 */ | 8729 */ |
| 7497 void set operatorKeyword(Token operatorKeyword2) { | 8730 void set operatorKeyword(Token operatorKeyword2) { |
| 7498 this._operatorKeyword = operatorKeyword2; | 8731 this._operatorKeyword = operatorKeyword2; |
| 7499 } | 8732 } |
| 8733 |
| 7500 /** | 8734 /** |
| 7501 * Set the parameters associated with the method to the given list of paramete
rs. | 8735 * Set the parameters associated with the method to the given list of paramete
rs. |
| 7502 * @param parameters the parameters associated with the method | 8736 * @param parameters the parameters associated with the method |
| 7503 */ | 8737 */ |
| 7504 void set parameters(FormalParameterList parameters2) { | 8738 void set parameters(FormalParameterList parameters2) { |
| 7505 this._parameters = becomeParentOf(parameters2); | 8739 this._parameters = becomeParentOf(parameters2); |
| 7506 } | 8740 } |
| 8741 |
| 7507 /** | 8742 /** |
| 7508 * Set the token representing the 'get' or 'set' keyword to the given token. | 8743 * Set the token representing the 'get' or 'set' keyword to the given token. |
| 7509 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 8744 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
| 7510 */ | 8745 */ |
| 7511 void set propertyKeyword(Token propertyKeyword2) { | 8746 void set propertyKeyword(Token propertyKeyword2) { |
| 7512 this._propertyKeyword = propertyKeyword2; | 8747 this._propertyKeyword = propertyKeyword2; |
| 7513 } | 8748 } |
| 8749 |
| 7514 /** | 8750 /** |
| 7515 * Set the return type of the method to the given type name. | 8751 * Set the return type of the method to the given type name. |
| 7516 * @param typeName the return type of the method | 8752 * @param typeName the return type of the method |
| 7517 */ | 8753 */ |
| 7518 void set returnType(TypeName typeName) { | 8754 void set returnType(TypeName typeName) { |
| 7519 _returnType = becomeParentOf(typeName); | 8755 _returnType = becomeParentOf(typeName); |
| 7520 } | 8756 } |
| 7521 void visitChildren(ASTVisitor<Object> visitor) { | 8757 void visitChildren(ASTVisitor<Object> visitor) { |
| 7522 super.visitChildren(visitor); | 8758 super.visitChildren(visitor); |
| 7523 safelyVisitChild(_returnType, visitor); | 8759 safelyVisitChild(_returnType, visitor); |
| 7524 safelyVisitChild(_name, visitor); | 8760 safelyVisitChild(_name, visitor); |
| 7525 safelyVisitChild(_parameters, visitor); | 8761 safelyVisitChild(_parameters, visitor); |
| 7526 safelyVisitChild(_body, visitor); | 8762 safelyVisitChild(_body, visitor); |
| 7527 } | 8763 } |
| 7528 Token get firstTokenAfterCommentAndMetadata { | 8764 Token get firstTokenAfterCommentAndMetadata { |
| 7529 if (_modifierKeyword != null) { | 8765 if (_modifierKeyword != null) { |
| 7530 return _modifierKeyword; | 8766 return _modifierKeyword; |
| 7531 } else if (_returnType != null) { | 8767 } else if (_returnType != null) { |
| 7532 return _returnType.beginToken; | 8768 return _returnType.beginToken; |
| 7533 } else if (_propertyKeyword != null) { | 8769 } else if (_propertyKeyword != null) { |
| 7534 return _propertyKeyword; | 8770 return _propertyKeyword; |
| 7535 } else if (_operatorKeyword != null) { | 8771 } else if (_operatorKeyword != null) { |
| 7536 return _operatorKeyword; | 8772 return _operatorKeyword; |
| 7537 } | 8773 } |
| 7538 return _name.beginToken; | 8774 return _name.beginToken; |
| 7539 } | 8775 } |
| 7540 } | 8776 } |
| 8777 |
| 7541 /** | 8778 /** |
| 7542 * Instances of the class {@code MethodInvocation} represent the invocation of e
ither a function or | 8779 * Instances of the class {@code MethodInvocation} represent the invocation of e
ither a function or |
| 7543 * a method. Invocations of functions resulting from evaluating an expression ar
e represented by{@link FunctionExpressionInvocation function expression invocati
on} nodes. Invocations of getters | 8780 * a method. Invocations of functions resulting from evaluating an expression ar
e represented by{@link FunctionExpressionInvocation function expression invocati
on} nodes. Invocations of getters |
| 7544 * and setters are represented by either {@link PrefixedIdentifier prefixed iden
tifier} or{@link PropertyAccess property access} nodes. | 8781 * and setters are represented by either {@link PrefixedIdentifier prefixed iden
tifier} or{@link PropertyAccess property access} nodes. |
| 7545 * <pre> | 8782 * <pre> |
| 7546 * methodInvoction ::= | 8783 * methodInvoction ::= |
| 7547 * ({@link Expression target} '.')? {@link SimpleIdentifier methodName} {@link A
rgumentList argumentList}</pre> | 8784 * ({@link Expression target} '.')? {@link SimpleIdentifier methodName} {@link A
rgumentList argumentList}</pre> |
| 7548 * @coverage dart.engine.ast | 8785 * @coverage dart.engine.ast |
| 7549 */ | 8786 */ |
| 7550 class MethodInvocation extends Expression { | 8787 class MethodInvocation extends Expression { |
| 8788 |
| 7551 /** | 8789 /** |
| 7552 * The expression producing the object on which the method is defined, or {@co
de null} if there is | 8790 * The expression producing the object on which the method is defined, or {@co
de null} if there is |
| 7553 * no target (that is, the target is implicitly {@code this}). | 8791 * no target (that is, the target is implicitly {@code this}). |
| 7554 */ | 8792 */ |
| 7555 Expression _target; | 8793 Expression _target; |
| 8794 |
| 7556 /** | 8795 /** |
| 7557 * The period that separates the target from the method name, or {@code null}
if there is no | 8796 * The period that separates the target from the method name, or {@code null}
if there is no |
| 7558 * target. | 8797 * target. |
| 7559 */ | 8798 */ |
| 7560 Token _period; | 8799 Token _period; |
| 8800 |
| 7561 /** | 8801 /** |
| 7562 * The name of the method being invoked. | 8802 * The name of the method being invoked. |
| 7563 */ | 8803 */ |
| 7564 SimpleIdentifier _methodName; | 8804 SimpleIdentifier _methodName; |
| 8805 |
| 7565 /** | 8806 /** |
| 7566 * The list of arguments to the method. | 8807 * The list of arguments to the method. |
| 7567 */ | 8808 */ |
| 7568 ArgumentList _argumentList; | 8809 ArgumentList _argumentList; |
| 8810 |
| 7569 /** | 8811 /** |
| 7570 * Initialize a newly created method invocation. | 8812 * Initialize a newly created method invocation. |
| 7571 * @param target the expression producing the object on which the method is de
fined | 8813 * @param target the expression producing the object on which the method is de
fined |
| 7572 * @param period the period that separates the target from the method name | 8814 * @param period the period that separates the target from the method name |
| 7573 * @param methodName the name of the method being invoked | 8815 * @param methodName the name of the method being invoked |
| 7574 * @param argumentList the list of arguments to the method | 8816 * @param argumentList the list of arguments to the method |
| 7575 */ | 8817 */ |
| 7576 MethodInvocation.full(Expression target, Token period, SimpleIdentifier method
Name, ArgumentList argumentList) { | 8818 MethodInvocation.full(Expression target, Token period, SimpleIdentifier method
Name, ArgumentList argumentList) { |
| 7577 this._target = becomeParentOf(target); | 8819 this._target = becomeParentOf(target); |
| 7578 this._period = period; | 8820 this._period = period; |
| 7579 this._methodName = becomeParentOf(methodName); | 8821 this._methodName = becomeParentOf(methodName); |
| 7580 this._argumentList = becomeParentOf(argumentList); | 8822 this._argumentList = becomeParentOf(argumentList); |
| 7581 } | 8823 } |
| 8824 |
| 7582 /** | 8825 /** |
| 7583 * Initialize a newly created method invocation. | 8826 * Initialize a newly created method invocation. |
| 7584 * @param target the expression producing the object on which the method is de
fined | 8827 * @param target the expression producing the object on which the method is de
fined |
| 7585 * @param period the period that separates the target from the method name | 8828 * @param period the period that separates the target from the method name |
| 7586 * @param methodName the name of the method being invoked | 8829 * @param methodName the name of the method being invoked |
| 7587 * @param argumentList the list of arguments to the method | 8830 * @param argumentList the list of arguments to the method |
| 7588 */ | 8831 */ |
| 7589 MethodInvocation({Expression target, Token period, SimpleIdentifier methodName
, ArgumentList argumentList}) : this.full(target, period, methodName, argumentLi
st); | 8832 MethodInvocation({Expression target, Token period, SimpleIdentifier methodName
, ArgumentList argumentList}) : this.full(target, period, methodName, argumentLi
st); |
| 7590 accept(ASTVisitor visitor) => visitor.visitMethodInvocation(this); | 8833 accept(ASTVisitor visitor) => visitor.visitMethodInvocation(this); |
| 8834 |
| 7591 /** | 8835 /** |
| 7592 * Return the list of arguments to the method. | 8836 * Return the list of arguments to the method. |
| 7593 * @return the list of arguments to the method | 8837 * @return the list of arguments to the method |
| 7594 */ | 8838 */ |
| 7595 ArgumentList get argumentList => _argumentList; | 8839 ArgumentList get argumentList => _argumentList; |
| 7596 Token get beginToken { | 8840 Token get beginToken { |
| 7597 if (_target != null) { | 8841 if (_target != null) { |
| 7598 return _target.beginToken; | 8842 return _target.beginToken; |
| 7599 } else if (_period != null) { | 8843 } else if (_period != null) { |
| 7600 return _period; | 8844 return _period; |
| 7601 } | 8845 } |
| 7602 return _methodName.beginToken; | 8846 return _methodName.beginToken; |
| 7603 } | 8847 } |
| 7604 Token get endToken => _argumentList.endToken; | 8848 Token get endToken => _argumentList.endToken; |
| 8849 |
| 7605 /** | 8850 /** |
| 7606 * Return the name of the method being invoked. | 8851 * Return the name of the method being invoked. |
| 7607 * @return the name of the method being invoked | 8852 * @return the name of the method being invoked |
| 7608 */ | 8853 */ |
| 7609 SimpleIdentifier get methodName => _methodName; | 8854 SimpleIdentifier get methodName => _methodName; |
| 8855 |
| 7610 /** | 8856 /** |
| 7611 * Return the period that separates the target from the method name, or {@code
null} if there is | 8857 * Return the period that separates the target from the method name, or {@code
null} if there is |
| 7612 * no target. | 8858 * no target. |
| 7613 * @return the period that separates the target from the method name | 8859 * @return the period that separates the target from the method name |
| 7614 */ | 8860 */ |
| 7615 Token get period => _period; | 8861 Token get period => _period; |
| 8862 |
| 7616 /** | 8863 /** |
| 7617 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not | 8864 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not |
| 7618 * part of a cascade expression, then this is the same as {@link #getTarget()}
. If this invocation | 8865 * part of a cascade expression, then this is the same as {@link #getTarget()}
. If this invocation |
| 7619 * is part of a cascade expression, then the target stored with the cascade ex
pression is | 8866 * is part of a cascade expression, then the target stored with the cascade ex
pression is |
| 7620 * returned. | 8867 * returned. |
| 7621 * @return the expression used to compute the receiver of the invocation | 8868 * @return the expression used to compute the receiver of the invocation |
| 7622 * @see #getTarget() | 8869 * @see #getTarget() |
| 7623 */ | 8870 */ |
| 7624 Expression get realTarget { | 8871 Expression get realTarget { |
| 7625 if (isCascaded()) { | 8872 if (isCascaded()) { |
| 7626 ASTNode ancestor = parent; | 8873 ASTNode ancestor = parent; |
| 7627 while (ancestor is! CascadeExpression) { | 8874 while (ancestor is! CascadeExpression) { |
| 7628 if (ancestor == null) { | 8875 if (ancestor == null) { |
| 7629 return _target; | 8876 return _target; |
| 7630 } | 8877 } |
| 7631 ancestor = ancestor.parent; | 8878 ancestor = ancestor.parent; |
| 7632 } | 8879 } |
| 7633 return ((ancestor as CascadeExpression)).target; | 8880 return ((ancestor as CascadeExpression)).target; |
| 7634 } | 8881 } |
| 7635 return _target; | 8882 return _target; |
| 7636 } | 8883 } |
| 8884 |
| 7637 /** | 8885 /** |
| 7638 * Return the expression producing the object on which the method is defined,
or {@code null} if | 8886 * Return the expression producing the object on which the method is defined,
or {@code null} if |
| 7639 * there is no target (that is, the target is implicitly {@code this}) or if t
his method | 8887 * there is no target (that is, the target is implicitly {@code this}) or if t
his method |
| 7640 * invocation is part of a cascade expression. | 8888 * invocation is part of a cascade expression. |
| 7641 * @return the expression producing the object on which the method is defined | 8889 * @return the expression producing the object on which the method is defined |
| 7642 * @see #getRealTarget() | 8890 * @see #getRealTarget() |
| 7643 */ | 8891 */ |
| 7644 Expression get target => _target; | 8892 Expression get target => _target; |
| 8893 |
| 7645 /** | 8894 /** |
| 7646 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this | 8895 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this |
| 7647 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. | 8896 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. |
| 7648 * @return {@code true} if this expression is cascaded | 8897 * @return {@code true} if this expression is cascaded |
| 7649 */ | 8898 */ |
| 7650 bool isCascaded() => _period != null && identical(_period.type, TokenType.PERI
OD_PERIOD); | 8899 bool isCascaded() => _period != null && identical(_period.type, TokenType.PERI
OD_PERIOD); |
| 8900 |
| 7651 /** | 8901 /** |
| 7652 * Set the list of arguments to the method to the given list. | 8902 * Set the list of arguments to the method to the given list. |
| 7653 * @param argumentList the list of arguments to the method | 8903 * @param argumentList the list of arguments to the method |
| 7654 */ | 8904 */ |
| 7655 void set argumentList(ArgumentList argumentList2) { | 8905 void set argumentList(ArgumentList argumentList2) { |
| 7656 this._argumentList = becomeParentOf(argumentList2); | 8906 this._argumentList = becomeParentOf(argumentList2); |
| 7657 } | 8907 } |
| 8908 |
| 7658 /** | 8909 /** |
| 7659 * Set the name of the method being invoked to the given identifier. | 8910 * Set the name of the method being invoked to the given identifier. |
| 7660 * @param identifier the name of the method being invoked | 8911 * @param identifier the name of the method being invoked |
| 7661 */ | 8912 */ |
| 7662 void set methodName(SimpleIdentifier identifier) { | 8913 void set methodName(SimpleIdentifier identifier) { |
| 7663 _methodName = becomeParentOf(identifier); | 8914 _methodName = becomeParentOf(identifier); |
| 7664 } | 8915 } |
| 8916 |
| 7665 /** | 8917 /** |
| 7666 * Set the period that separates the target from the method name to the given
token. | 8918 * Set the period that separates the target from the method name to the given
token. |
| 7667 * @param period the period that separates the target from the method name | 8919 * @param period the period that separates the target from the method name |
| 7668 */ | 8920 */ |
| 7669 void set period(Token period2) { | 8921 void set period(Token period2) { |
| 7670 this._period = period2; | 8922 this._period = period2; |
| 7671 } | 8923 } |
| 8924 |
| 7672 /** | 8925 /** |
| 7673 * Set the expression producing the object on which the method is defined to t
he given expression. | 8926 * Set the expression producing the object on which the method is defined to t
he given expression. |
| 7674 * @param expression the expression producing the object on which the method i
s defined | 8927 * @param expression the expression producing the object on which the method i
s defined |
| 7675 */ | 8928 */ |
| 7676 void set target(Expression expression) { | 8929 void set target(Expression expression) { |
| 7677 _target = becomeParentOf(expression); | 8930 _target = becomeParentOf(expression); |
| 7678 } | 8931 } |
| 7679 void visitChildren(ASTVisitor<Object> visitor) { | 8932 void visitChildren(ASTVisitor<Object> visitor) { |
| 7680 safelyVisitChild(_target, visitor); | 8933 safelyVisitChild(_target, visitor); |
| 7681 safelyVisitChild(_methodName, visitor); | 8934 safelyVisitChild(_methodName, visitor); |
| 7682 safelyVisitChild(_argumentList, visitor); | 8935 safelyVisitChild(_argumentList, visitor); |
| 7683 } | 8936 } |
| 7684 } | 8937 } |
| 8938 |
| 7685 /** | 8939 /** |
| 7686 * Instances of the class {@code NamedExpression} represent an expression that h
as a name associated | 8940 * Instances of the class {@code NamedExpression} represent an expression that h
as a name associated |
| 7687 * with it. They are used in method invocations when there are named parameters. | 8941 * with it. They are used in method invocations when there are named parameters. |
| 7688 * <pre> | 8942 * <pre> |
| 7689 * namedExpression ::={@link Label name} {@link Expression expression}</pre> | 8943 * namedExpression ::={@link Label name} {@link Expression expression}</pre> |
| 7690 * @coverage dart.engine.ast | 8944 * @coverage dart.engine.ast |
| 7691 */ | 8945 */ |
| 7692 class NamedExpression extends Expression { | 8946 class NamedExpression extends Expression { |
| 8947 |
| 7693 /** | 8948 /** |
| 7694 * The name associated with the expression. | 8949 * The name associated with the expression. |
| 7695 */ | 8950 */ |
| 7696 Label _name; | 8951 Label _name; |
| 8952 |
| 7697 /** | 8953 /** |
| 7698 * The expression with which the name is associated. | 8954 * The expression with which the name is associated. |
| 7699 */ | 8955 */ |
| 7700 Expression _expression; | 8956 Expression _expression; |
| 8957 |
| 7701 /** | 8958 /** |
| 7702 * Initialize a newly created named expression. | 8959 * Initialize a newly created named expression. |
| 7703 * @param name the name associated with the expression | 8960 * @param name the name associated with the expression |
| 7704 * @param expression the expression with which the name is associated | 8961 * @param expression the expression with which the name is associated |
| 7705 */ | 8962 */ |
| 7706 NamedExpression.full(Label name, Expression expression) { | 8963 NamedExpression.full(Label name, Expression expression) { |
| 7707 this._name = becomeParentOf(name); | 8964 this._name = becomeParentOf(name); |
| 7708 this._expression = becomeParentOf(expression); | 8965 this._expression = becomeParentOf(expression); |
| 7709 } | 8966 } |
| 8967 |
| 7710 /** | 8968 /** |
| 7711 * Initialize a newly created named expression. | 8969 * Initialize a newly created named expression. |
| 7712 * @param name the name associated with the expression | 8970 * @param name the name associated with the expression |
| 7713 * @param expression the expression with which the name is associated | 8971 * @param expression the expression with which the name is associated |
| 7714 */ | 8972 */ |
| 7715 NamedExpression({Label name, Expression expression}) : this.full(name, express
ion); | 8973 NamedExpression({Label name, Expression expression}) : this.full(name, express
ion); |
| 7716 accept(ASTVisitor visitor) => visitor.visitNamedExpression(this); | 8974 accept(ASTVisitor visitor) => visitor.visitNamedExpression(this); |
| 7717 Token get beginToken => _name.beginToken; | 8975 Token get beginToken => _name.beginToken; |
| 8976 |
| 7718 /** | 8977 /** |
| 7719 * Return the element representing the parameter being named by this expressio
n, or {@code null}if the AST structure has not been resolved or if there is no p
arameter with the same name as | 8978 * Return the element representing the parameter being named by this expressio
n, or {@code null}if the AST structure has not been resolved or if there is no p
arameter with the same name as |
| 7720 * this expression. | 8979 * this expression. |
| 7721 * @return the element representing the parameter being named by this expressi
on | 8980 * @return the element representing the parameter being named by this expressi
on |
| 7722 */ | 8981 */ |
| 7723 ParameterElement get element { | 8982 ParameterElement get element { |
| 7724 Element element2 = _name.label.element; | 8983 Element element2 = _name.label.element; |
| 7725 if (element2 is ParameterElement) { | 8984 if (element2 is ParameterElement) { |
| 7726 return element2 as ParameterElement; | 8985 return element2 as ParameterElement; |
| 7727 } | 8986 } |
| 7728 return null; | 8987 return null; |
| 7729 } | 8988 } |
| 7730 Token get endToken => _expression.endToken; | 8989 Token get endToken => _expression.endToken; |
| 8990 |
| 7731 /** | 8991 /** |
| 7732 * Return the expression with which the name is associated. | 8992 * Return the expression with which the name is associated. |
| 7733 * @return the expression with which the name is associated | 8993 * @return the expression with which the name is associated |
| 7734 */ | 8994 */ |
| 7735 Expression get expression => _expression; | 8995 Expression get expression => _expression; |
| 8996 |
| 7736 /** | 8997 /** |
| 7737 * Return the name associated with the expression. | 8998 * Return the name associated with the expression. |
| 7738 * @return the name associated with the expression | 8999 * @return the name associated with the expression |
| 7739 */ | 9000 */ |
| 7740 Label get name => _name; | 9001 Label get name => _name; |
| 9002 |
| 7741 /** | 9003 /** |
| 7742 * Set the expression with which the name is associated to the given expressio
n. | 9004 * Set the expression with which the name is associated to the given expressio
n. |
| 7743 * @param expression the expression with which the name is associated | 9005 * @param expression the expression with which the name is associated |
| 7744 */ | 9006 */ |
| 7745 void set expression(Expression expression2) { | 9007 void set expression(Expression expression2) { |
| 7746 this._expression = becomeParentOf(expression2); | 9008 this._expression = becomeParentOf(expression2); |
| 7747 } | 9009 } |
| 9010 |
| 7748 /** | 9011 /** |
| 7749 * Set the name associated with the expression to the given identifier. | 9012 * Set the name associated with the expression to the given identifier. |
| 7750 * @param identifier the name associated with the expression | 9013 * @param identifier the name associated with the expression |
| 7751 */ | 9014 */ |
| 7752 void set name(Label identifier) { | 9015 void set name(Label identifier) { |
| 7753 _name = becomeParentOf(identifier); | 9016 _name = becomeParentOf(identifier); |
| 7754 } | 9017 } |
| 7755 void visitChildren(ASTVisitor<Object> visitor) { | 9018 void visitChildren(ASTVisitor<Object> visitor) { |
| 7756 safelyVisitChild(_name, visitor); | 9019 safelyVisitChild(_name, visitor); |
| 7757 safelyVisitChild(_expression, visitor); | 9020 safelyVisitChild(_expression, visitor); |
| 7758 } | 9021 } |
| 7759 } | 9022 } |
| 9023 |
| 7760 /** | 9024 /** |
| 7761 * The abstract class {@code NamespaceDirective} defines the behavior common to
nodes that represent | 9025 * The abstract class {@code NamespaceDirective} defines the behavior common to
nodes that represent |
| 7762 * a directive that impacts the namespace of a library. | 9026 * a directive that impacts the namespace of a library. |
| 7763 * <pre> | 9027 * <pre> |
| 7764 * directive ::={@link ExportDirective exportDirective}| {@link ImportDirective
importDirective}</pre> | 9028 * directive ::={@link ExportDirective exportDirective}| {@link ImportDirective
importDirective}</pre> |
| 7765 * @coverage dart.engine.ast | 9029 * @coverage dart.engine.ast |
| 7766 */ | 9030 */ |
| 7767 abstract class NamespaceDirective extends UriBasedDirective { | 9031 abstract class NamespaceDirective extends UriBasedDirective { |
| 9032 |
| 7768 /** | 9033 /** |
| 7769 * The token representing the 'import' or 'export' keyword. | 9034 * The token representing the 'import' or 'export' keyword. |
| 7770 */ | 9035 */ |
| 7771 Token _keyword; | 9036 Token _keyword; |
| 9037 |
| 7772 /** | 9038 /** |
| 7773 * The combinators used to control which names are imported or exported. | 9039 * The combinators used to control which names are imported or exported. |
| 7774 */ | 9040 */ |
| 7775 NodeList<Combinator> _combinators; | 9041 NodeList<Combinator> _combinators; |
| 9042 |
| 7776 /** | 9043 /** |
| 7777 * The semicolon terminating the directive. | 9044 * The semicolon terminating the directive. |
| 7778 */ | 9045 */ |
| 7779 Token _semicolon; | 9046 Token _semicolon; |
| 9047 |
| 7780 /** | 9048 /** |
| 7781 * Initialize a newly created namespace directive. | 9049 * Initialize a newly created namespace directive. |
| 7782 * @param comment the documentation comment associated with this directive | 9050 * @param comment the documentation comment associated with this directive |
| 7783 * @param metadata the annotations associated with the directive | 9051 * @param metadata the annotations associated with the directive |
| 7784 * @param keyword the token representing the 'import' or 'export' keyword | 9052 * @param keyword the token representing the 'import' or 'export' keyword |
| 7785 * @param libraryUri the URI of the library being imported or exported | 9053 * @param libraryUri the URI of the library being imported or exported |
| 7786 * @param combinators the combinators used to control which names are imported
or exported | 9054 * @param combinators the combinators used to control which names are imported
or exported |
| 7787 * @param semicolon the semicolon terminating the directive | 9055 * @param semicolon the semicolon terminating the directive |
| 7788 */ | 9056 */ |
| 7789 NamespaceDirective.full(Comment comment, List<Annotation> metadata, Token keyw
ord, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon) :
super.full(comment, metadata, libraryUri) { | 9057 NamespaceDirective.full(Comment comment, List<Annotation> metadata, Token keyw
ord, StringLiteral libraryUri, List<Combinator> combinators, Token semicolon) :
super.full(comment, metadata, libraryUri) { |
| 7790 this._combinators = new NodeList<Combinator>(this); | 9058 this._combinators = new NodeList<Combinator>(this); |
| 7791 this._keyword = keyword; | 9059 this._keyword = keyword; |
| 7792 this._combinators.addAll(combinators); | 9060 this._combinators.addAll(combinators); |
| 7793 this._semicolon = semicolon; | 9061 this._semicolon = semicolon; |
| 7794 } | 9062 } |
| 9063 |
| 7795 /** | 9064 /** |
| 7796 * Initialize a newly created namespace directive. | 9065 * Initialize a newly created namespace directive. |
| 7797 * @param comment the documentation comment associated with this directive | 9066 * @param comment the documentation comment associated with this directive |
| 7798 * @param metadata the annotations associated with the directive | 9067 * @param metadata the annotations associated with the directive |
| 7799 * @param keyword the token representing the 'import' or 'export' keyword | 9068 * @param keyword the token representing the 'import' or 'export' keyword |
| 7800 * @param libraryUri the URI of the library being imported or exported | 9069 * @param libraryUri the URI of the library being imported or exported |
| 7801 * @param combinators the combinators used to control which names are imported
or exported | 9070 * @param combinators the combinators used to control which names are imported
or exported |
| 7802 * @param semicolon the semicolon terminating the directive | 9071 * @param semicolon the semicolon terminating the directive |
| 7803 */ | 9072 */ |
| 7804 NamespaceDirective({Comment comment, List<Annotation> metadata, Token keyword,
StringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : thi
s.full(comment, metadata, keyword, libraryUri, combinators, semicolon); | 9073 NamespaceDirective({Comment comment, List<Annotation> metadata, Token keyword,
StringLiteral libraryUri, List<Combinator> combinators, Token semicolon}) : thi
s.full(comment, metadata, keyword, libraryUri, combinators, semicolon); |
| 9074 |
| 7805 /** | 9075 /** |
| 7806 * Return the combinators used to control how names are imported or exported. | 9076 * Return the combinators used to control how names are imported or exported. |
| 7807 * @return the combinators used to control how names are imported or exported | 9077 * @return the combinators used to control how names are imported or exported |
| 7808 */ | 9078 */ |
| 7809 NodeList<Combinator> get combinators => _combinators; | 9079 NodeList<Combinator> get combinators => _combinators; |
| 7810 Token get endToken => _semicolon; | 9080 Token get endToken => _semicolon; |
| 7811 Token get keyword => _keyword; | 9081 Token get keyword => _keyword; |
| 9082 |
| 7812 /** | 9083 /** |
| 7813 * Return the semicolon terminating the directive. | 9084 * Return the semicolon terminating the directive. |
| 7814 * @return the semicolon terminating the directive | 9085 * @return the semicolon terminating the directive |
| 7815 */ | 9086 */ |
| 7816 Token get semicolon => _semicolon; | 9087 Token get semicolon => _semicolon; |
| 9088 LibraryElement get uriElement; |
| 9089 |
| 7817 /** | 9090 /** |
| 7818 * Set the token representing the 'import' or 'export' keyword to the given to
ken. | 9091 * Set the token representing the 'import' or 'export' keyword to the given to
ken. |
| 7819 * @param exportToken the token representing the 'import' or 'export' keyword | 9092 * @param exportToken the token representing the 'import' or 'export' keyword |
| 7820 */ | 9093 */ |
| 7821 void set keyword(Token exportToken) { | 9094 void set keyword(Token exportToken) { |
| 7822 this._keyword = exportToken; | 9095 this._keyword = exportToken; |
| 7823 } | 9096 } |
| 9097 |
| 7824 /** | 9098 /** |
| 7825 * Set the semicolon terminating the directive to the given token. | 9099 * Set the semicolon terminating the directive to the given token. |
| 7826 * @param semicolon the semicolon terminating the directive | 9100 * @param semicolon the semicolon terminating the directive |
| 7827 */ | 9101 */ |
| 7828 void set semicolon(Token semicolon2) { | 9102 void set semicolon(Token semicolon2) { |
| 7829 this._semicolon = semicolon2; | 9103 this._semicolon = semicolon2; |
| 7830 } | 9104 } |
| 7831 Token get firstTokenAfterCommentAndMetadata => _keyword; | 9105 Token get firstTokenAfterCommentAndMetadata => _keyword; |
| 7832 } | 9106 } |
| 9107 |
| 7833 /** | 9108 /** |
| 7834 * Instances of the class {@code NativeFunctionBody} represent a function body t
hat consists of a | 9109 * Instances of the class {@code NativeFunctionBody} represent a function body t
hat consists of a |
| 7835 * native keyword followed by a string literal. | 9110 * native keyword followed by a string literal. |
| 7836 * <pre> | 9111 * <pre> |
| 7837 * nativeFunctionBody ::= | 9112 * nativeFunctionBody ::= |
| 7838 * 'native' {@link SimpleStringLiteral simpleStringLiteral} ';' | 9113 * 'native' {@link SimpleStringLiteral simpleStringLiteral} ';' |
| 7839 * </pre> | 9114 * </pre> |
| 7840 * @coverage dart.engine.ast | 9115 * @coverage dart.engine.ast |
| 7841 */ | 9116 */ |
| 7842 class NativeFunctionBody extends FunctionBody { | 9117 class NativeFunctionBody extends FunctionBody { |
| 9118 |
| 7843 /** | 9119 /** |
| 7844 * The token representing 'native' that marks the start of the function body. | 9120 * The token representing 'native' that marks the start of the function body. |
| 7845 */ | 9121 */ |
| 7846 Token _nativeToken; | 9122 Token _nativeToken; |
| 9123 |
| 7847 /** | 9124 /** |
| 7848 * The string literal, after the 'native' token. | 9125 * The string literal, after the 'native' token. |
| 7849 */ | 9126 */ |
| 7850 StringLiteral _stringLiteral; | 9127 StringLiteral _stringLiteral; |
| 9128 |
| 7851 /** | 9129 /** |
| 7852 * The token representing the semicolon that marks the end of the function bod
y. | 9130 * The token representing the semicolon that marks the end of the function bod
y. |
| 7853 */ | 9131 */ |
| 7854 Token _semicolon; | 9132 Token _semicolon; |
| 9133 |
| 7855 /** | 9134 /** |
| 7856 * Initialize a newly created function body consisting of the 'native' token,
a string literal, | 9135 * Initialize a newly created function body consisting of the 'native' token,
a string literal, |
| 7857 * and a semicolon. | 9136 * and a semicolon. |
| 7858 * @param nativeToken the token representing 'native' that marks the start of
the function body | 9137 * @param nativeToken the token representing 'native' that marks the start of
the function body |
| 7859 * @param stringLiteral the string literal | 9138 * @param stringLiteral the string literal |
| 7860 * @param semicolon the token representing the semicolon that marks the end of
the function body | 9139 * @param semicolon the token representing the semicolon that marks the end of
the function body |
| 7861 */ | 9140 */ |
| 7862 NativeFunctionBody.full(Token nativeToken, StringLiteral stringLiteral, Token
semicolon) { | 9141 NativeFunctionBody.full(Token nativeToken, StringLiteral stringLiteral, Token
semicolon) { |
| 7863 this._nativeToken = nativeToken; | 9142 this._nativeToken = nativeToken; |
| 7864 this._stringLiteral = becomeParentOf(stringLiteral); | 9143 this._stringLiteral = becomeParentOf(stringLiteral); |
| 7865 this._semicolon = semicolon; | 9144 this._semicolon = semicolon; |
| 7866 } | 9145 } |
| 9146 |
| 7867 /** | 9147 /** |
| 7868 * Initialize a newly created function body consisting of the 'native' token,
a string literal, | 9148 * Initialize a newly created function body consisting of the 'native' token,
a string literal, |
| 7869 * and a semicolon. | 9149 * and a semicolon. |
| 7870 * @param nativeToken the token representing 'native' that marks the start of
the function body | 9150 * @param nativeToken the token representing 'native' that marks the start of
the function body |
| 7871 * @param stringLiteral the string literal | 9151 * @param stringLiteral the string literal |
| 7872 * @param semicolon the token representing the semicolon that marks the end of
the function body | 9152 * @param semicolon the token representing the semicolon that marks the end of
the function body |
| 7873 */ | 9153 */ |
| 7874 NativeFunctionBody({Token nativeToken, StringLiteral stringLiteral, Token semi
colon}) : this.full(nativeToken, stringLiteral, semicolon); | 9154 NativeFunctionBody({Token nativeToken, StringLiteral stringLiteral, Token semi
colon}) : this.full(nativeToken, stringLiteral, semicolon); |
| 7875 accept(ASTVisitor visitor) => visitor.visitNativeFunctionBody(this); | 9155 accept(ASTVisitor visitor) => visitor.visitNativeFunctionBody(this); |
| 7876 Token get beginToken => _nativeToken; | 9156 Token get beginToken => _nativeToken; |
| 7877 Token get endToken => _semicolon; | 9157 Token get endToken => _semicolon; |
| 9158 |
| 7878 /** | 9159 /** |
| 7879 * Return the simple identifier representing the 'native' token. | 9160 * Return the simple identifier representing the 'native' token. |
| 7880 * @return the simple identifier representing the 'native' token | 9161 * @return the simple identifier representing the 'native' token |
| 7881 */ | 9162 */ |
| 7882 Token get nativeToken => _nativeToken; | 9163 Token get nativeToken => _nativeToken; |
| 9164 |
| 7883 /** | 9165 /** |
| 7884 * Return the token representing the semicolon that marks the end of the funct
ion body. | 9166 * Return the token representing the semicolon that marks the end of the funct
ion body. |
| 7885 * @return the token representing the semicolon that marks the end of the func
tion body | 9167 * @return the token representing the semicolon that marks the end of the func
tion body |
| 7886 */ | 9168 */ |
| 7887 Token get semicolon => _semicolon; | 9169 Token get semicolon => _semicolon; |
| 9170 |
| 7888 /** | 9171 /** |
| 7889 * Return the string literal representing the string after the 'native' token. | 9172 * Return the string literal representing the string after the 'native' token. |
| 7890 * @return the string literal representing the string after the 'native' token | 9173 * @return the string literal representing the string after the 'native' token |
| 7891 */ | 9174 */ |
| 7892 StringLiteral get stringLiteral => _stringLiteral; | 9175 StringLiteral get stringLiteral => _stringLiteral; |
| 7893 void visitChildren(ASTVisitor<Object> visitor) { | 9176 void visitChildren(ASTVisitor<Object> visitor) { |
| 7894 safelyVisitChild(_stringLiteral, visitor); | 9177 safelyVisitChild(_stringLiteral, visitor); |
| 7895 } | 9178 } |
| 7896 } | 9179 } |
| 9180 |
| 7897 /** | 9181 /** |
| 7898 * The abstract class {@code NormalFormalParameter} defines the behavior common
to formal parameters | 9182 * The abstract class {@code NormalFormalParameter} defines the behavior common
to formal parameters |
| 7899 * that are required (are not optional). | 9183 * that are required (are not optional). |
| 7900 * <pre> | 9184 * <pre> |
| 7901 * normalFormalParameter ::={@link FunctionTypedFormalParameter functionSignatur
e}| {@link FieldFormalParameter fieldFormalParameter}| {@link SimpleFormalParame
ter simpleFormalParameter}</pre> | 9185 * normalFormalParameter ::={@link FunctionTypedFormalParameter functionSignatur
e}| {@link FieldFormalParameter fieldFormalParameter}| {@link SimpleFormalParame
ter simpleFormalParameter}</pre> |
| 7902 * @coverage dart.engine.ast | 9186 * @coverage dart.engine.ast |
| 7903 */ | 9187 */ |
| 7904 abstract class NormalFormalParameter extends FormalParameter { | 9188 abstract class NormalFormalParameter extends FormalParameter { |
| 9189 |
| 7905 /** | 9190 /** |
| 7906 * The documentation comment associated with this parameter, or {@code null} i
f this parameter | 9191 * The documentation comment associated with this parameter, or {@code null} i
f this parameter |
| 7907 * does not have a documentation comment associated with it. | 9192 * does not have a documentation comment associated with it. |
| 7908 */ | 9193 */ |
| 7909 Comment _comment; | 9194 Comment _comment; |
| 9195 |
| 7910 /** | 9196 /** |
| 7911 * The annotations associated with this parameter. | 9197 * The annotations associated with this parameter. |
| 7912 */ | 9198 */ |
| 7913 NodeList<Annotation> _metadata; | 9199 NodeList<Annotation> _metadata; |
| 9200 |
| 7914 /** | 9201 /** |
| 7915 * The name of the parameter being declared. | 9202 * The name of the parameter being declared. |
| 7916 */ | 9203 */ |
| 7917 SimpleIdentifier _identifier; | 9204 SimpleIdentifier _identifier; |
| 9205 |
| 7918 /** | 9206 /** |
| 7919 * Initialize a newly created formal parameter. | 9207 * Initialize a newly created formal parameter. |
| 7920 * @param comment the documentation comment associated with this parameter | 9208 * @param comment the documentation comment associated with this parameter |
| 7921 * @param metadata the annotations associated with this parameter | 9209 * @param metadata the annotations associated with this parameter |
| 7922 * @param identifier the name of the parameter being declared | 9210 * @param identifier the name of the parameter being declared |
| 7923 */ | 9211 */ |
| 7924 NormalFormalParameter.full(Comment comment, List<Annotation> metadata, SimpleI
dentifier identifier) { | 9212 NormalFormalParameter.full(Comment comment, List<Annotation> metadata, SimpleI
dentifier identifier) { |
| 7925 this._metadata = new NodeList<Annotation>(this); | 9213 this._metadata = new NodeList<Annotation>(this); |
| 7926 this._comment = becomeParentOf(comment); | 9214 this._comment = becomeParentOf(comment); |
| 7927 this._metadata.addAll(metadata); | 9215 this._metadata.addAll(metadata); |
| 7928 this._identifier = becomeParentOf(identifier); | 9216 this._identifier = becomeParentOf(identifier); |
| 7929 } | 9217 } |
| 9218 |
| 7930 /** | 9219 /** |
| 7931 * Initialize a newly created formal parameter. | 9220 * Initialize a newly created formal parameter. |
| 7932 * @param comment the documentation comment associated with this parameter | 9221 * @param comment the documentation comment associated with this parameter |
| 7933 * @param metadata the annotations associated with this parameter | 9222 * @param metadata the annotations associated with this parameter |
| 7934 * @param identifier the name of the parameter being declared | 9223 * @param identifier the name of the parameter being declared |
| 7935 */ | 9224 */ |
| 7936 NormalFormalParameter({Comment comment, List<Annotation> metadata, SimpleIdent
ifier identifier}) : this.full(comment, metadata, identifier); | 9225 NormalFormalParameter({Comment comment, List<Annotation> metadata, SimpleIdent
ifier identifier}) : this.full(comment, metadata, identifier); |
| 9226 |
| 7937 /** | 9227 /** |
| 7938 * Return the documentation comment associated with this parameter, or {@code
null} if this | 9228 * Return the documentation comment associated with this parameter, or {@code
null} if this |
| 7939 * parameter does not have a documentation comment associated with it. | 9229 * parameter does not have a documentation comment associated with it. |
| 7940 * @return the documentation comment associated with this parameter | 9230 * @return the documentation comment associated with this parameter |
| 7941 */ | 9231 */ |
| 7942 Comment get documentationComment => _comment; | 9232 Comment get documentationComment => _comment; |
| 7943 SimpleIdentifier get identifier => _identifier; | 9233 SimpleIdentifier get identifier => _identifier; |
| 7944 ParameterKind get kind { | 9234 ParameterKind get kind { |
| 7945 ASTNode parent2 = parent; | 9235 ASTNode parent2 = parent; |
| 7946 if (parent2 is DefaultFormalParameter) { | 9236 if (parent2 is DefaultFormalParameter) { |
| 7947 return ((parent2 as DefaultFormalParameter)).kind; | 9237 return ((parent2 as DefaultFormalParameter)).kind; |
| 7948 } | 9238 } |
| 7949 return ParameterKind.REQUIRED; | 9239 return ParameterKind.REQUIRED; |
| 7950 } | 9240 } |
| 9241 |
| 7951 /** | 9242 /** |
| 7952 * Return the annotations associated with this parameter. | 9243 * Return the annotations associated with this parameter. |
| 7953 * @return the annotations associated with this parameter | 9244 * @return the annotations associated with this parameter |
| 7954 */ | 9245 */ |
| 7955 NodeList<Annotation> get metadata => _metadata; | 9246 NodeList<Annotation> get metadata => _metadata; |
| 9247 |
| 7956 /** | 9248 /** |
| 7957 * Return {@code true} if this parameter was declared with the 'const' modifie
r. | 9249 * Return {@code true} if this parameter was declared with the 'const' modifie
r. |
| 7958 * @return {@code true} if this parameter was declared with the 'const' modifi
er | 9250 * @return {@code true} if this parameter was declared with the 'const' modifi
er |
| 7959 */ | 9251 */ |
| 7960 bool isConst(); | 9252 bool isConst(); |
| 9253 |
| 7961 /** | 9254 /** |
| 7962 * Return {@code true} if this parameter was declared with the 'final' modifie
r. Parameters that | 9255 * Return {@code true} if this parameter was declared with the 'final' modifie
r. Parameters that |
| 7963 * are declared with the 'const' modifier will return {@code false} even thoug
h they are | 9256 * are declared with the 'const' modifier will return {@code false} even thoug
h they are |
| 7964 * implicitly final. | 9257 * implicitly final. |
| 7965 * @return {@code true} if this parameter was declared with the 'final' modifi
er | 9258 * @return {@code true} if this parameter was declared with the 'final' modifi
er |
| 7966 */ | 9259 */ |
| 7967 bool isFinal(); | 9260 bool isFinal(); |
| 9261 |
| 7968 /** | 9262 /** |
| 7969 * Set the documentation comment associated with this parameter to the given c
omment | 9263 * Set the documentation comment associated with this parameter to the given c
omment |
| 7970 * @param comment the documentation comment to be associated with this paramet
er | 9264 * @param comment the documentation comment to be associated with this paramet
er |
| 7971 */ | 9265 */ |
| 7972 void set documentationComment(Comment comment2) { | 9266 void set documentationComment(Comment comment2) { |
| 7973 this._comment = becomeParentOf(comment2); | 9267 this._comment = becomeParentOf(comment2); |
| 7974 } | 9268 } |
| 9269 |
| 7975 /** | 9270 /** |
| 7976 * Set the name of the parameter being declared to the given identifier. | 9271 * Set the name of the parameter being declared to the given identifier. |
| 7977 * @param identifier the name of the parameter being declared | 9272 * @param identifier the name of the parameter being declared |
| 7978 */ | 9273 */ |
| 7979 void set identifier(SimpleIdentifier identifier2) { | 9274 void set identifier(SimpleIdentifier identifier2) { |
| 7980 this._identifier = becomeParentOf(identifier2); | 9275 this._identifier = becomeParentOf(identifier2); |
| 7981 } | 9276 } |
| 7982 void visitChildren(ASTVisitor<Object> visitor) { | 9277 void visitChildren(ASTVisitor<Object> visitor) { |
| 7983 if (commentIsBeforeAnnotations()) { | 9278 if (commentIsBeforeAnnotations()) { |
| 7984 safelyVisitChild(_comment, visitor); | 9279 safelyVisitChild(_comment, visitor); |
| 7985 _metadata.accept(visitor); | 9280 _metadata.accept(visitor); |
| 7986 } else { | 9281 } else { |
| 7987 for (ASTNode child in sortedCommentAndAnnotations) { | 9282 for (ASTNode child in sortedCommentAndAnnotations) { |
| 7988 child.accept(visitor); | 9283 child.accept(visitor); |
| 7989 } | 9284 } |
| 7990 } | 9285 } |
| 7991 } | 9286 } |
| 9287 |
| 7992 /** | 9288 /** |
| 7993 * Return {@code true} if the comment is lexically before any annotations. | 9289 * Return {@code true} if the comment is lexically before any annotations. |
| 7994 * @return {@code true} if the comment is lexically before any annotations | 9290 * @return {@code true} if the comment is lexically before any annotations |
| 7995 */ | 9291 */ |
| 7996 bool commentIsBeforeAnnotations() { | 9292 bool commentIsBeforeAnnotations() { |
| 7997 if (_comment == null || _metadata.isEmpty) { | 9293 if (_comment == null || _metadata.isEmpty) { |
| 7998 return true; | 9294 return true; |
| 7999 } | 9295 } |
| 8000 Annotation firstAnnotation = _metadata[0]; | 9296 Annotation firstAnnotation = _metadata[0]; |
| 8001 return _comment.offset < firstAnnotation.offset; | 9297 return _comment.offset < firstAnnotation.offset; |
| 8002 } | 9298 } |
| 9299 |
| 8003 /** | 9300 /** |
| 8004 * Return an array containing the comment and annotations associated with this
parameter, sorted | 9301 * Return an array containing the comment and annotations associated with this
parameter, sorted |
| 8005 * in lexical order. | 9302 * in lexical order. |
| 8006 * @return the comment and annotations associated with this parameter in the o
rder in which they | 9303 * @return the comment and annotations associated with this parameter in the o
rder in which they |
| 8007 * appeared in the original source | 9304 * appeared in the original source |
| 8008 */ | 9305 */ |
| 8009 List<ASTNode> get sortedCommentAndAnnotations { | 9306 List<ASTNode> get sortedCommentAndAnnotations { |
| 8010 List<ASTNode> childList = new List<ASTNode>(); | 9307 List<ASTNode> childList = new List<ASTNode>(); |
| 8011 childList.add(_comment); | 9308 childList.add(_comment); |
| 8012 childList.addAll(_metadata); | 9309 childList.addAll(_metadata); |
| 8013 List<ASTNode> children = new List.from(childList); | 9310 List<ASTNode> children = new List.from(childList); |
| 8014 children.sort(); | 9311 children.sort(); |
| 8015 return children; | 9312 return children; |
| 8016 } | 9313 } |
| 8017 } | 9314 } |
| 9315 |
| 8018 /** | 9316 /** |
| 8019 * Instances of the class {@code NullLiteral} represent a null literal expressio
n. | 9317 * Instances of the class {@code NullLiteral} represent a null literal expressio
n. |
| 8020 * <pre> | 9318 * <pre> |
| 8021 * nullLiteral ::= | 9319 * nullLiteral ::= |
| 8022 * 'null' | 9320 * 'null' |
| 8023 * </pre> | 9321 * </pre> |
| 8024 * @coverage dart.engine.ast | 9322 * @coverage dart.engine.ast |
| 8025 */ | 9323 */ |
| 8026 class NullLiteral extends Literal { | 9324 class NullLiteral extends Literal { |
| 9325 |
| 8027 /** | 9326 /** |
| 8028 * The token representing the literal. | 9327 * The token representing the literal. |
| 8029 */ | 9328 */ |
| 8030 Token _literal; | 9329 Token _literal; |
| 9330 |
| 8031 /** | 9331 /** |
| 8032 * Initialize a newly created null literal. | 9332 * Initialize a newly created null literal. |
| 8033 * @param token the token representing the literal | 9333 * @param token the token representing the literal |
| 8034 */ | 9334 */ |
| 8035 NullLiteral.full(Token token) { | 9335 NullLiteral.full(Token token) { |
| 8036 this._literal = token; | 9336 this._literal = token; |
| 8037 } | 9337 } |
| 9338 |
| 8038 /** | 9339 /** |
| 8039 * Initialize a newly created null literal. | 9340 * Initialize a newly created null literal. |
| 8040 * @param token the token representing the literal | 9341 * @param token the token representing the literal |
| 8041 */ | 9342 */ |
| 8042 NullLiteral({Token token}) : this.full(token); | 9343 NullLiteral({Token token}) : this.full(token); |
| 8043 accept(ASTVisitor visitor) => visitor.visitNullLiteral(this); | 9344 accept(ASTVisitor visitor) => visitor.visitNullLiteral(this); |
| 8044 Token get beginToken => _literal; | 9345 Token get beginToken => _literal; |
| 8045 Token get endToken => _literal; | 9346 Token get endToken => _literal; |
| 9347 |
| 8046 /** | 9348 /** |
| 8047 * Return the token representing the literal. | 9349 * Return the token representing the literal. |
| 8048 * @return the token representing the literal | 9350 * @return the token representing the literal |
| 8049 */ | 9351 */ |
| 8050 Token get literal => _literal; | 9352 Token get literal => _literal; |
| 9353 |
| 8051 /** | 9354 /** |
| 8052 * Set the token representing the literal to the given token. | 9355 * Set the token representing the literal to the given token. |
| 8053 * @param literal the token representing the literal | 9356 * @param literal the token representing the literal |
| 8054 */ | 9357 */ |
| 8055 void set literal(Token literal2) { | 9358 void set literal(Token literal2) { |
| 8056 this._literal = literal2; | 9359 this._literal = literal2; |
| 8057 } | 9360 } |
| 8058 void visitChildren(ASTVisitor<Object> visitor) { | 9361 void visitChildren(ASTVisitor<Object> visitor) { |
| 8059 } | 9362 } |
| 8060 } | 9363 } |
| 9364 |
| 8061 /** | 9365 /** |
| 8062 * Instances of the class {@code ParenthesizedExpression} represent a parenthesi
zed expression. | 9366 * Instances of the class {@code ParenthesizedExpression} represent a parenthesi
zed expression. |
| 8063 * <pre> | 9367 * <pre> |
| 8064 * parenthesizedExpression ::= | 9368 * parenthesizedExpression ::= |
| 8065 * '(' {@link Expression expression} ')' | 9369 * '(' {@link Expression expression} ')' |
| 8066 * </pre> | 9370 * </pre> |
| 8067 * @coverage dart.engine.ast | 9371 * @coverage dart.engine.ast |
| 8068 */ | 9372 */ |
| 8069 class ParenthesizedExpression extends Expression { | 9373 class ParenthesizedExpression extends Expression { |
| 9374 |
| 8070 /** | 9375 /** |
| 8071 * The left parenthesis. | 9376 * The left parenthesis. |
| 8072 */ | 9377 */ |
| 8073 Token _leftParenthesis; | 9378 Token _leftParenthesis; |
| 9379 |
| 8074 /** | 9380 /** |
| 8075 * The expression within the parentheses. | 9381 * The expression within the parentheses. |
| 8076 */ | 9382 */ |
| 8077 Expression _expression; | 9383 Expression _expression; |
| 9384 |
| 8078 /** | 9385 /** |
| 8079 * The right parenthesis. | 9386 * The right parenthesis. |
| 8080 */ | 9387 */ |
| 8081 Token _rightParenthesis; | 9388 Token _rightParenthesis; |
| 9389 |
| 8082 /** | 9390 /** |
| 8083 * Initialize a newly created parenthesized expression. | 9391 * Initialize a newly created parenthesized expression. |
| 8084 * @param leftParenthesis the left parenthesis | 9392 * @param leftParenthesis the left parenthesis |
| 8085 * @param expression the expression within the parentheses | 9393 * @param expression the expression within the parentheses |
| 8086 * @param rightParenthesis the right parenthesis | 9394 * @param rightParenthesis the right parenthesis |
| 8087 */ | 9395 */ |
| 8088 ParenthesizedExpression.full(Token leftParenthesis, Expression expression, Tok
en rightParenthesis) { | 9396 ParenthesizedExpression.full(Token leftParenthesis, Expression expression, Tok
en rightParenthesis) { |
| 8089 this._leftParenthesis = leftParenthesis; | 9397 this._leftParenthesis = leftParenthesis; |
| 8090 this._expression = becomeParentOf(expression); | 9398 this._expression = becomeParentOf(expression); |
| 8091 this._rightParenthesis = rightParenthesis; | 9399 this._rightParenthesis = rightParenthesis; |
| 8092 } | 9400 } |
| 9401 |
| 8093 /** | 9402 /** |
| 8094 * Initialize a newly created parenthesized expression. | 9403 * Initialize a newly created parenthesized expression. |
| 8095 * @param leftParenthesis the left parenthesis | 9404 * @param leftParenthesis the left parenthesis |
| 8096 * @param expression the expression within the parentheses | 9405 * @param expression the expression within the parentheses |
| 8097 * @param rightParenthesis the right parenthesis | 9406 * @param rightParenthesis the right parenthesis |
| 8098 */ | 9407 */ |
| 8099 ParenthesizedExpression({Token leftParenthesis, Expression expression, Token r
ightParenthesis}) : this.full(leftParenthesis, expression, rightParenthesis); | 9408 ParenthesizedExpression({Token leftParenthesis, Expression expression, Token r
ightParenthesis}) : this.full(leftParenthesis, expression, rightParenthesis); |
| 8100 accept(ASTVisitor visitor) => visitor.visitParenthesizedExpression(this); | 9409 accept(ASTVisitor visitor) => visitor.visitParenthesizedExpression(this); |
| 8101 Token get beginToken => _leftParenthesis; | 9410 Token get beginToken => _leftParenthesis; |
| 8102 Token get endToken => _rightParenthesis; | 9411 Token get endToken => _rightParenthesis; |
| 9412 |
| 8103 /** | 9413 /** |
| 8104 * Return the expression within the parentheses. | 9414 * Return the expression within the parentheses. |
| 8105 * @return the expression within the parentheses | 9415 * @return the expression within the parentheses |
| 8106 */ | 9416 */ |
| 8107 Expression get expression => _expression; | 9417 Expression get expression => _expression; |
| 9418 |
| 8108 /** | 9419 /** |
| 8109 * Return the left parenthesis. | 9420 * Return the left parenthesis. |
| 8110 * @return the left parenthesis | 9421 * @return the left parenthesis |
| 8111 */ | 9422 */ |
| 8112 Token get leftParenthesis => _leftParenthesis; | 9423 Token get leftParenthesis => _leftParenthesis; |
| 9424 |
| 8113 /** | 9425 /** |
| 8114 * Return the right parenthesis. | 9426 * Return the right parenthesis. |
| 8115 * @return the right parenthesis | 9427 * @return the right parenthesis |
| 8116 */ | 9428 */ |
| 8117 Token get rightParenthesis => _rightParenthesis; | 9429 Token get rightParenthesis => _rightParenthesis; |
| 9430 |
| 8118 /** | 9431 /** |
| 8119 * Set the expression within the parentheses to the given expression. | 9432 * Set the expression within the parentheses to the given expression. |
| 8120 * @param expression the expression within the parentheses | 9433 * @param expression the expression within the parentheses |
| 8121 */ | 9434 */ |
| 8122 void set expression(Expression expression2) { | 9435 void set expression(Expression expression2) { |
| 8123 this._expression = becomeParentOf(expression2); | 9436 this._expression = becomeParentOf(expression2); |
| 8124 } | 9437 } |
| 9438 |
| 8125 /** | 9439 /** |
| 8126 * Set the left parenthesis to the given token. | 9440 * Set the left parenthesis to the given token. |
| 8127 * @param parenthesis the left parenthesis | 9441 * @param parenthesis the left parenthesis |
| 8128 */ | 9442 */ |
| 8129 void set leftParenthesis(Token parenthesis) { | 9443 void set leftParenthesis(Token parenthesis) { |
| 8130 _leftParenthesis = parenthesis; | 9444 _leftParenthesis = parenthesis; |
| 8131 } | 9445 } |
| 9446 |
| 8132 /** | 9447 /** |
| 8133 * Set the right parenthesis to the given token. | 9448 * Set the right parenthesis to the given token. |
| 8134 * @param parenthesis the right parenthesis | 9449 * @param parenthesis the right parenthesis |
| 8135 */ | 9450 */ |
| 8136 void set rightParenthesis(Token parenthesis) { | 9451 void set rightParenthesis(Token parenthesis) { |
| 8137 _rightParenthesis = parenthesis; | 9452 _rightParenthesis = parenthesis; |
| 8138 } | 9453 } |
| 8139 void visitChildren(ASTVisitor<Object> visitor) { | 9454 void visitChildren(ASTVisitor<Object> visitor) { |
| 8140 safelyVisitChild(_expression, visitor); | 9455 safelyVisitChild(_expression, visitor); |
| 8141 } | 9456 } |
| 8142 } | 9457 } |
| 9458 |
| 8143 /** | 9459 /** |
| 8144 * Instances of the class {@code PartDirective} represent a part directive. | 9460 * Instances of the class {@code PartDirective} represent a part directive. |
| 8145 * <pre> | 9461 * <pre> |
| 8146 * partDirective ::={@link Annotation metadata} 'part' {@link StringLiteral part
Uri} ';' | 9462 * partDirective ::={@link Annotation metadata} 'part' {@link StringLiteral part
Uri} ';' |
| 8147 * </pre> | 9463 * </pre> |
| 8148 * @coverage dart.engine.ast | 9464 * @coverage dart.engine.ast |
| 8149 */ | 9465 */ |
| 8150 class PartDirective extends UriBasedDirective { | 9466 class PartDirective extends UriBasedDirective { |
| 9467 |
| 8151 /** | 9468 /** |
| 8152 * The token representing the 'part' token. | 9469 * The token representing the 'part' token. |
| 8153 */ | 9470 */ |
| 8154 Token _partToken; | 9471 Token _partToken; |
| 9472 |
| 8155 /** | 9473 /** |
| 8156 * The semicolon terminating the directive. | 9474 * The semicolon terminating the directive. |
| 8157 */ | 9475 */ |
| 8158 Token _semicolon; | 9476 Token _semicolon; |
| 9477 |
| 8159 /** | 9478 /** |
| 8160 * Initialize a newly created part directive. | 9479 * Initialize a newly created part directive. |
| 8161 * @param comment the documentation comment associated with this directive | 9480 * @param comment the documentation comment associated with this directive |
| 8162 * @param metadata the annotations associated with the directive | 9481 * @param metadata the annotations associated with the directive |
| 8163 * @param partToken the token representing the 'part' token | 9482 * @param partToken the token representing the 'part' token |
| 8164 * @param partUri the URI of the part being included | 9483 * @param partUri the URI of the part being included |
| 8165 * @param semicolon the semicolon terminating the directive | 9484 * @param semicolon the semicolon terminating the directive |
| 8166 */ | 9485 */ |
| 8167 PartDirective.full(Comment comment, List<Annotation> metadata, Token partToken
, StringLiteral partUri, Token semicolon) : super.full(comment, metadata, partUr
i) { | 9486 PartDirective.full(Comment comment, List<Annotation> metadata, Token partToken
, StringLiteral partUri, Token semicolon) : super.full(comment, metadata, partUr
i) { |
| 8168 this._partToken = partToken; | 9487 this._partToken = partToken; |
| 8169 this._semicolon = semicolon; | 9488 this._semicolon = semicolon; |
| 8170 } | 9489 } |
| 9490 |
| 8171 /** | 9491 /** |
| 8172 * Initialize a newly created part directive. | 9492 * Initialize a newly created part directive. |
| 8173 * @param comment the documentation comment associated with this directive | 9493 * @param comment the documentation comment associated with this directive |
| 8174 * @param metadata the annotations associated with the directive | 9494 * @param metadata the annotations associated with the directive |
| 8175 * @param partToken the token representing the 'part' token | 9495 * @param partToken the token representing the 'part' token |
| 8176 * @param partUri the URI of the part being included | 9496 * @param partUri the URI of the part being included |
| 8177 * @param semicolon the semicolon terminating the directive | 9497 * @param semicolon the semicolon terminating the directive |
| 8178 */ | 9498 */ |
| 8179 PartDirective({Comment comment, List<Annotation> metadata, Token partToken, St
ringLiteral partUri, Token semicolon}) : this.full(comment, metadata, partToken,
partUri, semicolon); | 9499 PartDirective({Comment comment, List<Annotation> metadata, Token partToken, St
ringLiteral partUri, Token semicolon}) : this.full(comment, metadata, partToken,
partUri, semicolon); |
| 8180 accept(ASTVisitor visitor) => visitor.visitPartDirective(this); | 9500 accept(ASTVisitor visitor) => visitor.visitPartDirective(this); |
| 8181 Token get endToken => _semicolon; | 9501 Token get endToken => _semicolon; |
| 8182 Token get keyword => _partToken; | 9502 Token get keyword => _partToken; |
| 9503 |
| 8183 /** | 9504 /** |
| 8184 * Return the token representing the 'part' token. | 9505 * Return the token representing the 'part' token. |
| 8185 * @return the token representing the 'part' token | 9506 * @return the token representing the 'part' token |
| 8186 */ | 9507 */ |
| 8187 Token get partToken => _partToken; | 9508 Token get partToken => _partToken; |
| 9509 |
| 8188 /** | 9510 /** |
| 8189 * Return the semicolon terminating the directive. | 9511 * Return the semicolon terminating the directive. |
| 8190 * @return the semicolon terminating the directive | 9512 * @return the semicolon terminating the directive |
| 8191 */ | 9513 */ |
| 8192 Token get semicolon => _semicolon; | 9514 Token get semicolon => _semicolon; |
| 9515 CompilationUnitElement get uriElement => element as CompilationUnitElement; |
| 9516 |
| 8193 /** | 9517 /** |
| 8194 * Set the token representing the 'part' token to the given token. | 9518 * Set the token representing the 'part' token to the given token. |
| 8195 * @param partToken the token representing the 'part' token | 9519 * @param partToken the token representing the 'part' token |
| 8196 */ | 9520 */ |
| 8197 void set partToken(Token partToken2) { | 9521 void set partToken(Token partToken2) { |
| 8198 this._partToken = partToken2; | 9522 this._partToken = partToken2; |
| 8199 } | 9523 } |
| 9524 |
| 8200 /** | 9525 /** |
| 8201 * Set the semicolon terminating the directive to the given token. | 9526 * Set the semicolon terminating the directive to the given token. |
| 8202 * @param semicolon the semicolon terminating the directive | 9527 * @param semicolon the semicolon terminating the directive |
| 8203 */ | 9528 */ |
| 8204 void set semicolon(Token semicolon2) { | 9529 void set semicolon(Token semicolon2) { |
| 8205 this._semicolon = semicolon2; | 9530 this._semicolon = semicolon2; |
| 8206 } | 9531 } |
| 8207 Token get firstTokenAfterCommentAndMetadata => _partToken; | 9532 Token get firstTokenAfterCommentAndMetadata => _partToken; |
| 8208 } | 9533 } |
| 9534 |
| 8209 /** | 9535 /** |
| 8210 * Instances of the class {@code PartOfDirective} represent a part-of directive. | 9536 * Instances of the class {@code PartOfDirective} represent a part-of directive. |
| 8211 * <pre> | 9537 * <pre> |
| 8212 * partOfDirective ::={@link Annotation metadata} 'part' 'of' {@link Identifier
libraryName} ';' | 9538 * partOfDirective ::={@link Annotation metadata} 'part' 'of' {@link Identifier
libraryName} ';' |
| 8213 * </pre> | 9539 * </pre> |
| 8214 * @coverage dart.engine.ast | 9540 * @coverage dart.engine.ast |
| 8215 */ | 9541 */ |
| 8216 class PartOfDirective extends Directive { | 9542 class PartOfDirective extends Directive { |
| 9543 |
| 8217 /** | 9544 /** |
| 8218 * The token representing the 'part' token. | 9545 * The token representing the 'part' token. |
| 8219 */ | 9546 */ |
| 8220 Token _partToken; | 9547 Token _partToken; |
| 9548 |
| 8221 /** | 9549 /** |
| 8222 * The token representing the 'of' token. | 9550 * The token representing the 'of' token. |
| 8223 */ | 9551 */ |
| 8224 Token _ofToken; | 9552 Token _ofToken; |
| 9553 |
| 8225 /** | 9554 /** |
| 8226 * The name of the library that the containing compilation unit is part of. | 9555 * The name of the library that the containing compilation unit is part of. |
| 8227 */ | 9556 */ |
| 8228 LibraryIdentifier _libraryName; | 9557 LibraryIdentifier _libraryName; |
| 9558 |
| 8229 /** | 9559 /** |
| 8230 * The semicolon terminating the directive. | 9560 * The semicolon terminating the directive. |
| 8231 */ | 9561 */ |
| 8232 Token _semicolon; | 9562 Token _semicolon; |
| 9563 |
| 8233 /** | 9564 /** |
| 8234 * Initialize a newly created part-of directive. | 9565 * Initialize a newly created part-of directive. |
| 8235 * @param comment the documentation comment associated with this directive | 9566 * @param comment the documentation comment associated with this directive |
| 8236 * @param metadata the annotations associated with the directive | 9567 * @param metadata the annotations associated with the directive |
| 8237 * @param partToken the token representing the 'part' token | 9568 * @param partToken the token representing the 'part' token |
| 8238 * @param ofToken the token representing the 'of' token | 9569 * @param ofToken the token representing the 'of' token |
| 8239 * @param libraryName the name of the library that the containing compilation
unit is part of | 9570 * @param libraryName the name of the library that the containing compilation
unit is part of |
| 8240 * @param semicolon the semicolon terminating the directive | 9571 * @param semicolon the semicolon terminating the directive |
| 8241 */ | 9572 */ |
| 8242 PartOfDirective.full(Comment comment, List<Annotation> metadata, Token partTok
en, Token ofToken, LibraryIdentifier libraryName, Token semicolon) : super.full(
comment, metadata) { | 9573 PartOfDirective.full(Comment comment, List<Annotation> metadata, Token partTok
en, Token ofToken, LibraryIdentifier libraryName, Token semicolon) : super.full(
comment, metadata) { |
| 8243 this._partToken = partToken; | 9574 this._partToken = partToken; |
| 8244 this._ofToken = ofToken; | 9575 this._ofToken = ofToken; |
| 8245 this._libraryName = becomeParentOf(libraryName); | 9576 this._libraryName = becomeParentOf(libraryName); |
| 8246 this._semicolon = semicolon; | 9577 this._semicolon = semicolon; |
| 8247 } | 9578 } |
| 9579 |
| 8248 /** | 9580 /** |
| 8249 * Initialize a newly created part-of directive. | 9581 * Initialize a newly created part-of directive. |
| 8250 * @param comment the documentation comment associated with this directive | 9582 * @param comment the documentation comment associated with this directive |
| 8251 * @param metadata the annotations associated with the directive | 9583 * @param metadata the annotations associated with the directive |
| 8252 * @param partToken the token representing the 'part' token | 9584 * @param partToken the token representing the 'part' token |
| 8253 * @param ofToken the token representing the 'of' token | 9585 * @param ofToken the token representing the 'of' token |
| 8254 * @param libraryName the name of the library that the containing compilation
unit is part of | 9586 * @param libraryName the name of the library that the containing compilation
unit is part of |
| 8255 * @param semicolon the semicolon terminating the directive | 9587 * @param semicolon the semicolon terminating the directive |
| 8256 */ | 9588 */ |
| 8257 PartOfDirective({Comment comment, List<Annotation> metadata, Token partToken,
Token ofToken, LibraryIdentifier libraryName, Token semicolon}) : this.full(comm
ent, metadata, partToken, ofToken, libraryName, semicolon); | 9589 PartOfDirective({Comment comment, List<Annotation> metadata, Token partToken,
Token ofToken, LibraryIdentifier libraryName, Token semicolon}) : this.full(comm
ent, metadata, partToken, ofToken, libraryName, semicolon); |
| 8258 accept(ASTVisitor visitor) => visitor.visitPartOfDirective(this); | 9590 accept(ASTVisitor visitor) => visitor.visitPartOfDirective(this); |
| 8259 Token get endToken => _semicolon; | 9591 Token get endToken => _semicolon; |
| 8260 Token get keyword => _partToken; | 9592 Token get keyword => _partToken; |
| 9593 |
| 8261 /** | 9594 /** |
| 8262 * Return the name of the library that the containing compilation unit is part
of. | 9595 * Return the name of the library that the containing compilation unit is part
of. |
| 8263 * @return the name of the library that the containing compilation unit is par
t of | 9596 * @return the name of the library that the containing compilation unit is par
t of |
| 8264 */ | 9597 */ |
| 8265 LibraryIdentifier get libraryName => _libraryName; | 9598 LibraryIdentifier get libraryName => _libraryName; |
| 9599 |
| 8266 /** | 9600 /** |
| 8267 * Return the token representing the 'of' token. | 9601 * Return the token representing the 'of' token. |
| 8268 * @return the token representing the 'of' token | 9602 * @return the token representing the 'of' token |
| 8269 */ | 9603 */ |
| 8270 Token get ofToken => _ofToken; | 9604 Token get ofToken => _ofToken; |
| 9605 |
| 8271 /** | 9606 /** |
| 8272 * Return the token representing the 'part' token. | 9607 * Return the token representing the 'part' token. |
| 8273 * @return the token representing the 'part' token | 9608 * @return the token representing the 'part' token |
| 8274 */ | 9609 */ |
| 8275 Token get partToken => _partToken; | 9610 Token get partToken => _partToken; |
| 9611 |
| 8276 /** | 9612 /** |
| 8277 * Return the semicolon terminating the directive. | 9613 * Return the semicolon terminating the directive. |
| 8278 * @return the semicolon terminating the directive | 9614 * @return the semicolon terminating the directive |
| 8279 */ | 9615 */ |
| 8280 Token get semicolon => _semicolon; | 9616 Token get semicolon => _semicolon; |
| 9617 |
| 8281 /** | 9618 /** |
| 8282 * Set the name of the library that the containing compilation unit is part of
to the given name. | 9619 * Set the name of the library that the containing compilation unit is part of
to the given name. |
| 8283 * @param libraryName the name of the library that the containing compilation
unit is part of | 9620 * @param libraryName the name of the library that the containing compilation
unit is part of |
| 8284 */ | 9621 */ |
| 8285 void set libraryName(LibraryIdentifier libraryName2) { | 9622 void set libraryName(LibraryIdentifier libraryName2) { |
| 8286 this._libraryName = becomeParentOf(libraryName2); | 9623 this._libraryName = becomeParentOf(libraryName2); |
| 8287 } | 9624 } |
| 9625 |
| 8288 /** | 9626 /** |
| 8289 * Set the token representing the 'of' token to the given token. | 9627 * Set the token representing the 'of' token to the given token. |
| 8290 * @param ofToken the token representing the 'of' token | 9628 * @param ofToken the token representing the 'of' token |
| 8291 */ | 9629 */ |
| 8292 void set ofToken(Token ofToken2) { | 9630 void set ofToken(Token ofToken2) { |
| 8293 this._ofToken = ofToken2; | 9631 this._ofToken = ofToken2; |
| 8294 } | 9632 } |
| 9633 |
| 8295 /** | 9634 /** |
| 8296 * Set the token representing the 'part' token to the given token. | 9635 * Set the token representing the 'part' token to the given token. |
| 8297 * @param partToken the token representing the 'part' token | 9636 * @param partToken the token representing the 'part' token |
| 8298 */ | 9637 */ |
| 8299 void set partToken(Token partToken2) { | 9638 void set partToken(Token partToken2) { |
| 8300 this._partToken = partToken2; | 9639 this._partToken = partToken2; |
| 8301 } | 9640 } |
| 9641 |
| 8302 /** | 9642 /** |
| 8303 * Set the semicolon terminating the directive to the given token. | 9643 * Set the semicolon terminating the directive to the given token. |
| 8304 * @param semicolon the semicolon terminating the directive | 9644 * @param semicolon the semicolon terminating the directive |
| 8305 */ | 9645 */ |
| 8306 void set semicolon(Token semicolon2) { | 9646 void set semicolon(Token semicolon2) { |
| 8307 this._semicolon = semicolon2; | 9647 this._semicolon = semicolon2; |
| 8308 } | 9648 } |
| 8309 void visitChildren(ASTVisitor<Object> visitor) { | 9649 void visitChildren(ASTVisitor<Object> visitor) { |
| 8310 super.visitChildren(visitor); | 9650 super.visitChildren(visitor); |
| 8311 safelyVisitChild(_libraryName, visitor); | 9651 safelyVisitChild(_libraryName, visitor); |
| 8312 } | 9652 } |
| 8313 Token get firstTokenAfterCommentAndMetadata => _partToken; | 9653 Token get firstTokenAfterCommentAndMetadata => _partToken; |
| 8314 } | 9654 } |
| 9655 |
| 8315 /** | 9656 /** |
| 8316 * Instances of the class {@code PostfixExpression} represent a postfix unary ex
pression. | 9657 * Instances of the class {@code PostfixExpression} represent a postfix unary ex
pression. |
| 8317 * <pre> | 9658 * <pre> |
| 8318 * postfixExpression ::={@link Expression operand} {@link Token operator}</pre> | 9659 * postfixExpression ::={@link Expression operand} {@link Token operator}</pre> |
| 8319 * @coverage dart.engine.ast | 9660 * @coverage dart.engine.ast |
| 8320 */ | 9661 */ |
| 8321 class PostfixExpression extends Expression { | 9662 class PostfixExpression extends Expression { |
| 9663 |
| 8322 /** | 9664 /** |
| 8323 * The expression computing the operand for the operator. | 9665 * The expression computing the operand for the operator. |
| 8324 */ | 9666 */ |
| 8325 Expression _operand; | 9667 Expression _operand; |
| 9668 |
| 8326 /** | 9669 /** |
| 8327 * The postfix operator being applied to the operand. | 9670 * The postfix operator being applied to the operand. |
| 8328 */ | 9671 */ |
| 8329 Token _operator; | 9672 Token _operator; |
| 9673 |
| 8330 /** | 9674 /** |
| 8331 * The element associated with this the operator, or {@code null} if the AST s
tructure has not | 9675 * 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 th
e operator is not user definable, |
| 8332 * been resolved, if the operator is not user definable, or if the operator co
uld not be resolved. | 9676 * or if the operator could not be resolved. |
| 8333 */ | 9677 */ |
| 8334 MethodElement _element; | 9678 MethodElement _propagatedElement; |
| 9679 |
| 9680 /** |
| 9681 * The element associated with the operator based on the static type of the op
erand, or{@code null} if the AST structure has not been resolved, if the operato
r is not user definable, |
| 9682 * or if the operator could not be resolved. |
| 9683 */ |
| 9684 MethodElement _staticElement; |
| 9685 |
| 8335 /** | 9686 /** |
| 8336 * Initialize a newly created postfix expression. | 9687 * Initialize a newly created postfix expression. |
| 8337 * @param operand the expression computing the operand for the operator | 9688 * @param operand the expression computing the operand for the operator |
| 8338 * @param operator the postfix operator being applied to the operand | 9689 * @param operator the postfix operator being applied to the operand |
| 8339 */ | 9690 */ |
| 8340 PostfixExpression.full(Expression operand, Token operator) { | 9691 PostfixExpression.full(Expression operand, Token operator) { |
| 8341 this._operand = becomeParentOf(operand); | 9692 this._operand = becomeParentOf(operand); |
| 8342 this._operator = operator; | 9693 this._operator = operator; |
| 8343 } | 9694 } |
| 9695 |
| 8344 /** | 9696 /** |
| 8345 * Initialize a newly created postfix expression. | 9697 * Initialize a newly created postfix expression. |
| 8346 * @param operand the expression computing the operand for the operator | 9698 * @param operand the expression computing the operand for the operator |
| 8347 * @param operator the postfix operator being applied to the operand | 9699 * @param operator the postfix operator being applied to the operand |
| 8348 */ | 9700 */ |
| 8349 PostfixExpression({Expression operand, Token operator}) : this.full(operand, o
perator); | 9701 PostfixExpression({Expression operand, Token operator}) : this.full(operand, o
perator); |
| 8350 accept(ASTVisitor visitor) => visitor.visitPostfixExpression(this); | 9702 accept(ASTVisitor visitor) => visitor.visitPostfixExpression(this); |
| 8351 Token get beginToken => _operand.beginToken; | 9703 Token get beginToken => _operand.beginToken; |
| 9704 |
| 8352 /** | 9705 /** |
| 8353 * Return the element associated with the operator, or {@code null} if the AST
structure has not | 9706 * Return the element associated with the operator based on the propagated typ
e of the operand, or{@code null} if the AST structure has not been resolved, if
the operator is not user definable, |
| 8354 * been resolved, if the operator is not user definable, or if the operator co
uld not be resolved. | 9707 * or if the operator could not be resolved. One example of the latter case is
an operator that is |
| 8355 * One example of the latter case is an operator that is not defined for the t
ype of the operand. | 9708 * not defined for the type of the operand. |
| 8356 * @return the element associated with the operator | 9709 * @return the element associated with the operator |
| 8357 */ | 9710 */ |
| 8358 MethodElement get element => _element; | 9711 MethodElement get element => _propagatedElement; |
| 8359 Token get endToken => _operator; | 9712 Token get endToken => _operator; |
| 9713 |
| 8360 /** | 9714 /** |
| 8361 * Return the expression computing the operand for the operator. | 9715 * Return the expression computing the operand for the operator. |
| 8362 * @return the expression computing the operand for the operator | 9716 * @return the expression computing the operand for the operator |
| 8363 */ | 9717 */ |
| 8364 Expression get operand => _operand; | 9718 Expression get operand => _operand; |
| 9719 |
| 8365 /** | 9720 /** |
| 8366 * Return the postfix operator being applied to the operand. | 9721 * Return the postfix operator being applied to the operand. |
| 8367 * @return the postfix operator being applied to the operand | 9722 * @return the postfix operator being applied to the operand |
| 8368 */ | 9723 */ |
| 8369 Token get operator => _operator; | 9724 Token get operator => _operator; |
| 9725 |
| 8370 /** | 9726 /** |
| 8371 * Set the element associated with the operator to the given element. | 9727 * 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, |
| 8372 * @param element the element associated with the operator | 9728 * or if the operator could not be resolved. One example of the latter case is
an operator that is |
| 9729 * not defined for the type of the operand. |
| 9730 * @return the element associated with the operator |
| 9731 */ |
| 9732 MethodElement get staticElement => _staticElement; |
| 9733 |
| 9734 /** |
| 9735 * Set the element associated with the operator based on the propagated type o
f the operand to the |
| 9736 * given element. |
| 9737 * @param element the element to be associated with the operator |
| 8373 */ | 9738 */ |
| 8374 void set element(MethodElement element2) { | 9739 void set element(MethodElement element2) { |
| 8375 this._element = element2; | 9740 _propagatedElement = element2; |
| 8376 } | 9741 } |
| 9742 |
| 8377 /** | 9743 /** |
| 8378 * Set the expression computing the operand for the operator to the given expr
ession. | 9744 * Set the expression computing the operand for the operator to the given expr
ession. |
| 8379 * @param expression the expression computing the operand for the operator | 9745 * @param expression the expression computing the operand for the operator |
| 8380 */ | 9746 */ |
| 8381 void set operand(Expression expression) { | 9747 void set operand(Expression expression) { |
| 8382 _operand = becomeParentOf(expression); | 9748 _operand = becomeParentOf(expression); |
| 8383 } | 9749 } |
| 9750 |
| 8384 /** | 9751 /** |
| 8385 * Set the postfix operator being applied to the operand to the given operator
. | 9752 * Set the postfix operator being applied to the operand to the given operator
. |
| 8386 * @param operator the postfix operator being applied to the operand | 9753 * @param operator the postfix operator being applied to the operand |
| 8387 */ | 9754 */ |
| 8388 void set operator(Token operator2) { | 9755 void set operator(Token operator2) { |
| 8389 this._operator = operator2; | 9756 this._operator = operator2; |
| 8390 } | 9757 } |
| 9758 |
| 9759 /** |
| 9760 * Set the element associated with the operator based on the static type of th
e operand to the |
| 9761 * given element. |
| 9762 * @param element the element to be associated with the operator |
| 9763 */ |
| 9764 void set staticElement(MethodElement element) { |
| 9765 _staticElement = element; |
| 9766 } |
| 8391 void visitChildren(ASTVisitor<Object> visitor) { | 9767 void visitChildren(ASTVisitor<Object> visitor) { |
| 8392 safelyVisitChild(_operand, visitor); | 9768 safelyVisitChild(_operand, visitor); |
| 8393 } | 9769 } |
| 8394 } | 9770 } |
| 9771 |
| 8395 /** | 9772 /** |
| 8396 * Instances of the class {@code PrefixExpression} represent a prefix unary expr
ession. | 9773 * Instances of the class {@code PrefixExpression} represent a prefix unary expr
ession. |
| 8397 * <pre> | 9774 * <pre> |
| 8398 * prefixExpression ::={@link Token operator} {@link Expression operand}</pre> | 9775 * prefixExpression ::={@link Token operator} {@link Expression operand}</pre> |
| 8399 * @coverage dart.engine.ast | 9776 * @coverage dart.engine.ast |
| 8400 */ | 9777 */ |
| 8401 class PrefixExpression extends Expression { | 9778 class PrefixExpression extends Expression { |
| 9779 |
| 8402 /** | 9780 /** |
| 8403 * The prefix operator being applied to the operand. | 9781 * The prefix operator being applied to the operand. |
| 8404 */ | 9782 */ |
| 8405 Token _operator; | 9783 Token _operator; |
| 9784 |
| 8406 /** | 9785 /** |
| 8407 * The expression computing the operand for the operator. | 9786 * The expression computing the operand for the operator. |
| 8408 */ | 9787 */ |
| 8409 Expression _operand; | 9788 Expression _operand; |
| 9789 |
| 8410 /** | 9790 /** |
| 8411 * The element associated with the operator, or {@code null} if the AST struct
ure has not been | 9791 * The element associated with the operator based on the static type of the op
erand, or{@code null} if the AST structure has not been resolved, if the operato
r is not user definable, |
| 8412 * resolved, if the operator is not user definable, or if the operator could n
ot be resolved. | 9792 * or if the operator could not be resolved. |
| 8413 */ | 9793 */ |
| 8414 MethodElement _element; | 9794 MethodElement _staticElement; |
| 9795 |
| 9796 /** |
| 9797 * The element associated with the operator based on the propagated type of th
e operand, or{@code null} if the AST structure has not been resolved, if the ope
rator is not user definable, |
| 9798 * or if the operator could not be resolved. |
| 9799 */ |
| 9800 MethodElement _propagatedElement; |
| 9801 |
| 8415 /** | 9802 /** |
| 8416 * Initialize a newly created prefix expression. | 9803 * Initialize a newly created prefix expression. |
| 8417 * @param operator the prefix operator being applied to the operand | 9804 * @param operator the prefix operator being applied to the operand |
| 8418 * @param operand the expression computing the operand for the operator | 9805 * @param operand the expression computing the operand for the operator |
| 8419 */ | 9806 */ |
| 8420 PrefixExpression.full(Token operator, Expression operand) { | 9807 PrefixExpression.full(Token operator, Expression operand) { |
| 8421 this._operator = operator; | 9808 this._operator = operator; |
| 8422 this._operand = becomeParentOf(operand); | 9809 this._operand = becomeParentOf(operand); |
| 8423 } | 9810 } |
| 9811 |
| 8424 /** | 9812 /** |
| 8425 * Initialize a newly created prefix expression. | 9813 * Initialize a newly created prefix expression. |
| 8426 * @param operator the prefix operator being applied to the operand | 9814 * @param operator the prefix operator being applied to the operand |
| 8427 * @param operand the expression computing the operand for the operator | 9815 * @param operand the expression computing the operand for the operator |
| 8428 */ | 9816 */ |
| 8429 PrefixExpression({Token operator, Expression operand}) : this.full(operator, o
perand); | 9817 PrefixExpression({Token operator, Expression operand}) : this.full(operator, o
perand); |
| 8430 accept(ASTVisitor visitor) => visitor.visitPrefixExpression(this); | 9818 accept(ASTVisitor visitor) => visitor.visitPrefixExpression(this); |
| 8431 Token get beginToken => _operator; | 9819 Token get beginToken => _operator; |
| 9820 |
| 8432 /** | 9821 /** |
| 8433 * Return the element associated with the operator, or {@code null} if the AST
structure has not | 9822 * Return the element associated with the operator based on the propagated typ
e of the operand, or{@code null} if the AST structure has not been resolved, if
the operator is not user definable, |
| 8434 * been resolved, if the operator is not user definable, or if the operator co
uld not be resolved. | 9823 * or if the operator could not be resolved. One example of the latter case is
an operator that is |
| 8435 * One example of the latter case is an operator that is not defined for the t
ype of the operand. | 9824 * not defined for the type of the operand. |
| 8436 * @return the element associated with the operator | 9825 * @return the element associated with the operator |
| 8437 */ | 9826 */ |
| 8438 MethodElement get element => _element; | 9827 MethodElement get element => _propagatedElement; |
| 8439 Token get endToken => _operand.endToken; | 9828 Token get endToken => _operand.endToken; |
| 9829 |
| 8440 /** | 9830 /** |
| 8441 * Return the expression computing the operand for the operator. | 9831 * Return the expression computing the operand for the operator. |
| 8442 * @return the expression computing the operand for the operator | 9832 * @return the expression computing the operand for the operator |
| 8443 */ | 9833 */ |
| 8444 Expression get operand => _operand; | 9834 Expression get operand => _operand; |
| 9835 |
| 8445 /** | 9836 /** |
| 8446 * Return the prefix operator being applied to the operand. | 9837 * Return the prefix operator being applied to the operand. |
| 8447 * @return the prefix operator being applied to the operand | 9838 * @return the prefix operator being applied to the operand |
| 8448 */ | 9839 */ |
| 8449 Token get operator => _operator; | 9840 Token get operator => _operator; |
| 9841 |
| 8450 /** | 9842 /** |
| 8451 * Set the element associated with the operator to the given element. | 9843 * 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, |
| 8452 * @param element the element associated with the operator | 9844 * or if the operator could not be resolved. One example of the latter case is
an operator that is |
| 9845 * not defined for the type of the operand. |
| 9846 * @return the element associated with the operator |
| 9847 */ |
| 9848 MethodElement get staticElement => _staticElement; |
| 9849 |
| 9850 /** |
| 9851 * Set the element associated with the operator based on the propagated type o
f the operand to the |
| 9852 * given element. |
| 9853 * @param element the element to be associated with the operator |
| 8453 */ | 9854 */ |
| 8454 void set element(MethodElement element2) { | 9855 void set element(MethodElement element2) { |
| 8455 this._element = element2; | 9856 _propagatedElement = element2; |
| 8456 } | 9857 } |
| 9858 |
| 8457 /** | 9859 /** |
| 8458 * Set the expression computing the operand for the operator to the given expr
ession. | 9860 * Set the expression computing the operand for the operator to the given expr
ession. |
| 8459 * @param expression the expression computing the operand for the operator | 9861 * @param expression the expression computing the operand for the operator |
| 8460 */ | 9862 */ |
| 8461 void set operand(Expression expression) { | 9863 void set operand(Expression expression) { |
| 8462 _operand = becomeParentOf(expression); | 9864 _operand = becomeParentOf(expression); |
| 8463 } | 9865 } |
| 9866 |
| 8464 /** | 9867 /** |
| 8465 * Set the prefix operator being applied to the operand to the given operator. | 9868 * Set the prefix operator being applied to the operand to the given operator. |
| 8466 * @param operator the prefix operator being applied to the operand | 9869 * @param operator the prefix operator being applied to the operand |
| 8467 */ | 9870 */ |
| 8468 void set operator(Token operator2) { | 9871 void set operator(Token operator2) { |
| 8469 this._operator = operator2; | 9872 this._operator = operator2; |
| 8470 } | 9873 } |
| 9874 |
| 9875 /** |
| 9876 * Set the element associated with the operator based on the static type of th
e operand to the |
| 9877 * given element. |
| 9878 * @param element the static element to be associated with the operator |
| 9879 */ |
| 9880 void set staticElement(MethodElement element) { |
| 9881 _staticElement = element; |
| 9882 } |
| 8471 void visitChildren(ASTVisitor<Object> visitor) { | 9883 void visitChildren(ASTVisitor<Object> visitor) { |
| 8472 safelyVisitChild(_operand, visitor); | 9884 safelyVisitChild(_operand, visitor); |
| 8473 } | 9885 } |
| 8474 } | 9886 } |
| 9887 |
| 8475 /** | 9888 /** |
| 8476 * Instances of the class {@code PrefixedIdentifier} represent either an identif
ier that is prefixed | 9889 * Instances of the class {@code PrefixedIdentifier} represent either an identif
ier that is prefixed |
| 8477 * or an access to an object property where the target of the property access is
a simple | 9890 * or an access to an object property where the target of the property access is
a simple |
| 8478 * identifier. | 9891 * identifier. |
| 8479 * <pre> | 9892 * <pre> |
| 8480 * prefixedIdentifier ::={@link SimpleIdentifier prefix} '.' {@link SimpleIdenti
fier identifier}</pre> | 9893 * prefixedIdentifier ::={@link SimpleIdentifier prefix} '.' {@link SimpleIdenti
fier identifier}</pre> |
| 8481 * @coverage dart.engine.ast | 9894 * @coverage dart.engine.ast |
| 8482 */ | 9895 */ |
| 8483 class PrefixedIdentifier extends Identifier { | 9896 class PrefixedIdentifier extends Identifier { |
| 9897 |
| 8484 /** | 9898 /** |
| 8485 * The prefix associated with the library in which the identifier is defined. | 9899 * The prefix associated with the library in which the identifier is defined. |
| 8486 */ | 9900 */ |
| 8487 SimpleIdentifier _prefix; | 9901 SimpleIdentifier _prefix; |
| 9902 |
| 8488 /** | 9903 /** |
| 8489 * The period used to separate the prefix from the identifier. | 9904 * The period used to separate the prefix from the identifier. |
| 8490 */ | 9905 */ |
| 8491 Token _period; | 9906 Token _period; |
| 9907 |
| 8492 /** | 9908 /** |
| 8493 * The identifier being prefixed. | 9909 * The identifier being prefixed. |
| 8494 */ | 9910 */ |
| 8495 SimpleIdentifier _identifier; | 9911 SimpleIdentifier _identifier; |
| 9912 |
| 8496 /** | 9913 /** |
| 8497 * Initialize a newly created prefixed identifier. | 9914 * Initialize a newly created prefixed identifier. |
| 8498 * @param prefix the identifier being prefixed | 9915 * @param prefix the identifier being prefixed |
| 8499 * @param period the period used to separate the prefix from the identifier | 9916 * @param period the period used to separate the prefix from the identifier |
| 8500 * @param identifier the prefix associated with the library in which the ident
ifier is defined | 9917 * @param identifier the prefix associated with the library in which the ident
ifier is defined |
| 8501 */ | 9918 */ |
| 8502 PrefixedIdentifier.full(SimpleIdentifier prefix, Token period, SimpleIdentifie
r identifier) { | 9919 PrefixedIdentifier.full(SimpleIdentifier prefix, Token period, SimpleIdentifie
r identifier) { |
| 8503 this._prefix = becomeParentOf(prefix); | 9920 this._prefix = becomeParentOf(prefix); |
| 8504 this._period = period; | 9921 this._period = period; |
| 8505 this._identifier = becomeParentOf(identifier); | 9922 this._identifier = becomeParentOf(identifier); |
| 8506 } | 9923 } |
| 9924 |
| 8507 /** | 9925 /** |
| 8508 * Initialize a newly created prefixed identifier. | 9926 * Initialize a newly created prefixed identifier. |
| 8509 * @param prefix the identifier being prefixed | 9927 * @param prefix the identifier being prefixed |
| 8510 * @param period the period used to separate the prefix from the identifier | 9928 * @param period the period used to separate the prefix from the identifier |
| 8511 * @param identifier the prefix associated with the library in which the ident
ifier is defined | 9929 * @param identifier the prefix associated with the library in which the ident
ifier is defined |
| 8512 */ | 9930 */ |
| 8513 PrefixedIdentifier({SimpleIdentifier prefix, Token period, SimpleIdentifier id
entifier}) : this.full(prefix, period, identifier); | 9931 PrefixedIdentifier({SimpleIdentifier prefix, Token period, SimpleIdentifier id
entifier}) : this.full(prefix, period, identifier); |
| 8514 accept(ASTVisitor visitor) => visitor.visitPrefixedIdentifier(this); | 9932 accept(ASTVisitor visitor) => visitor.visitPrefixedIdentifier(this); |
| 8515 Token get beginToken => _prefix.beginToken; | 9933 Token get beginToken => _prefix.beginToken; |
| 8516 Element get element { | 9934 Element get element { |
| 8517 if (_identifier == null) { | 9935 if (_identifier == null) { |
| 8518 return null; | 9936 return null; |
| 8519 } | 9937 } |
| 8520 return _identifier.element; | 9938 return _identifier.element; |
| 8521 } | 9939 } |
| 8522 Token get endToken => _identifier.endToken; | 9940 Token get endToken => _identifier.endToken; |
| 9941 |
| 8523 /** | 9942 /** |
| 8524 * Return the identifier being prefixed. | 9943 * Return the identifier being prefixed. |
| 8525 * @return the identifier being prefixed | 9944 * @return the identifier being prefixed |
| 8526 */ | 9945 */ |
| 8527 SimpleIdentifier get identifier => _identifier; | 9946 SimpleIdentifier get identifier => _identifier; |
| 8528 String get name => "${_prefix.name}.${_identifier.name}"; | 9947 String get name => "${_prefix.name}.${_identifier.name}"; |
| 9948 |
| 8529 /** | 9949 /** |
| 8530 * Return the period used to separate the prefix from the identifier. | 9950 * Return the period used to separate the prefix from the identifier. |
| 8531 * @return the period used to separate the prefix from the identifier | 9951 * @return the period used to separate the prefix from the identifier |
| 8532 */ | 9952 */ |
| 8533 Token get period => _period; | 9953 Token get period => _period; |
| 9954 |
| 8534 /** | 9955 /** |
| 8535 * Return the prefix associated with the library in which the identifier is de
fined. | 9956 * Return the prefix associated with the library in which the identifier is de
fined. |
| 8536 * @return the prefix associated with the library in which the identifier is d
efined | 9957 * @return the prefix associated with the library in which the identifier is d
efined |
| 8537 */ | 9958 */ |
| 8538 SimpleIdentifier get prefix => _prefix; | 9959 SimpleIdentifier get prefix => _prefix; |
| 9960 Element get staticElement { |
| 9961 if (_identifier == null) { |
| 9962 return null; |
| 9963 } |
| 9964 return _identifier.staticElement; |
| 9965 } |
| 9966 |
| 8539 /** | 9967 /** |
| 8540 * Set the identifier being prefixed to the given identifier. | 9968 * Set the identifier being prefixed to the given identifier. |
| 8541 * @param identifier the identifier being prefixed | 9969 * @param identifier the identifier being prefixed |
| 8542 */ | 9970 */ |
| 8543 void set identifier(SimpleIdentifier identifier2) { | 9971 void set identifier(SimpleIdentifier identifier2) { |
| 8544 this._identifier = becomeParentOf(identifier2); | 9972 this._identifier = becomeParentOf(identifier2); |
| 8545 } | 9973 } |
| 9974 |
| 8546 /** | 9975 /** |
| 8547 * Set the period used to separate the prefix from the identifier to the given
token. | 9976 * Set the period used to separate the prefix from the identifier to the given
token. |
| 8548 * @param period the period used to separate the prefix from the identifier | 9977 * @param period the period used to separate the prefix from the identifier |
| 8549 */ | 9978 */ |
| 8550 void set period(Token period2) { | 9979 void set period(Token period2) { |
| 8551 this._period = period2; | 9980 this._period = period2; |
| 8552 } | 9981 } |
| 9982 |
| 8553 /** | 9983 /** |
| 8554 * Set the prefix associated with the library in which the identifier is defin
ed to the given | 9984 * Set the prefix associated with the library in which the identifier is defin
ed to the given |
| 8555 * identifier. | 9985 * identifier. |
| 8556 * @param identifier the prefix associated with the library in which the ident
ifier is defined | 9986 * @param identifier the prefix associated with the library in which the ident
ifier is defined |
| 8557 */ | 9987 */ |
| 8558 void set prefix(SimpleIdentifier identifier) { | 9988 void set prefix(SimpleIdentifier identifier) { |
| 8559 _prefix = becomeParentOf(identifier); | 9989 _prefix = becomeParentOf(identifier); |
| 8560 } | 9990 } |
| 8561 void visitChildren(ASTVisitor<Object> visitor) { | 9991 void visitChildren(ASTVisitor<Object> visitor) { |
| 8562 safelyVisitChild(_prefix, visitor); | 9992 safelyVisitChild(_prefix, visitor); |
| 8563 safelyVisitChild(_identifier, visitor); | 9993 safelyVisitChild(_identifier, visitor); |
| 8564 } | 9994 } |
| 8565 } | 9995 } |
| 9996 |
| 8566 /** | 9997 /** |
| 8567 * Instances of the class {@code PropertyAccess} represent the access of a prope
rty of an object. | 9998 * Instances of the class {@code PropertyAccess} represent the access of a prope
rty of an object. |
| 8568 * <p> | 9999 * <p> |
| 8569 * Note, however, that accesses to properties of objects can also be represented
as{@link PrefixedIdentifier prefixed identifier} nodes in cases where the targe
t is also a simple | 10000 * Note, however, that accesses to properties of objects can also be represented
as{@link PrefixedIdentifier prefixed identifier} nodes in cases where the targe
t is also a simple |
| 8570 * identifier. | 10001 * identifier. |
| 8571 * <pre> | 10002 * <pre> |
| 8572 * propertyAccess ::={@link Expression target} '.' {@link SimpleIdentifier prope
rtyName}</pre> | 10003 * propertyAccess ::={@link Expression target} '.' {@link SimpleIdentifier prope
rtyName}</pre> |
| 8573 * @coverage dart.engine.ast | 10004 * @coverage dart.engine.ast |
| 8574 */ | 10005 */ |
| 8575 class PropertyAccess extends Expression { | 10006 class PropertyAccess extends Expression { |
| 10007 |
| 8576 /** | 10008 /** |
| 8577 * The expression computing the object defining the property being accessed. | 10009 * The expression computing the object defining the property being accessed. |
| 8578 */ | 10010 */ |
| 8579 Expression _target; | 10011 Expression _target; |
| 10012 |
| 8580 /** | 10013 /** |
| 8581 * The property access operator. | 10014 * The property access operator. |
| 8582 */ | 10015 */ |
| 8583 Token _operator; | 10016 Token _operator; |
| 10017 |
| 8584 /** | 10018 /** |
| 8585 * The name of the property being accessed. | 10019 * The name of the property being accessed. |
| 8586 */ | 10020 */ |
| 8587 SimpleIdentifier _propertyName; | 10021 SimpleIdentifier _propertyName; |
| 10022 |
| 8588 /** | 10023 /** |
| 8589 * Initialize a newly created property access expression. | 10024 * Initialize a newly created property access expression. |
| 8590 * @param target the expression computing the object defining the property bei
ng accessed | 10025 * @param target the expression computing the object defining the property bei
ng accessed |
| 8591 * @param operator the property access operator | 10026 * @param operator the property access operator |
| 8592 * @param propertyName the name of the property being accessed | 10027 * @param propertyName the name of the property being accessed |
| 8593 */ | 10028 */ |
| 8594 PropertyAccess.full(Expression target, Token operator, SimpleIdentifier proper
tyName) { | 10029 PropertyAccess.full(Expression target, Token operator, SimpleIdentifier proper
tyName) { |
| 8595 this._target = becomeParentOf(target); | 10030 this._target = becomeParentOf(target); |
| 8596 this._operator = operator; | 10031 this._operator = operator; |
| 8597 this._propertyName = becomeParentOf(propertyName); | 10032 this._propertyName = becomeParentOf(propertyName); |
| 8598 } | 10033 } |
| 10034 |
| 8599 /** | 10035 /** |
| 8600 * Initialize a newly created property access expression. | 10036 * Initialize a newly created property access expression. |
| 8601 * @param target the expression computing the object defining the property bei
ng accessed | 10037 * @param target the expression computing the object defining the property bei
ng accessed |
| 8602 * @param operator the property access operator | 10038 * @param operator the property access operator |
| 8603 * @param propertyName the name of the property being accessed | 10039 * @param propertyName the name of the property being accessed |
| 8604 */ | 10040 */ |
| 8605 PropertyAccess({Expression target, Token operator, SimpleIdentifier propertyNa
me}) : this.full(target, operator, propertyName); | 10041 PropertyAccess({Expression target, Token operator, SimpleIdentifier propertyNa
me}) : this.full(target, operator, propertyName); |
| 8606 accept(ASTVisitor visitor) => visitor.visitPropertyAccess(this); | 10042 accept(ASTVisitor visitor) => visitor.visitPropertyAccess(this); |
| 8607 Token get beginToken { | 10043 Token get beginToken { |
| 8608 if (_target != null) { | 10044 if (_target != null) { |
| 8609 return _target.beginToken; | 10045 return _target.beginToken; |
| 8610 } | 10046 } |
| 8611 return _operator; | 10047 return _operator; |
| 8612 } | 10048 } |
| 8613 Token get endToken => _propertyName.endToken; | 10049 Token get endToken => _propertyName.endToken; |
| 10050 |
| 8614 /** | 10051 /** |
| 8615 * Return the property access operator. | 10052 * Return the property access operator. |
| 8616 * @return the property access operator | 10053 * @return the property access operator |
| 8617 */ | 10054 */ |
| 8618 Token get operator => _operator; | 10055 Token get operator => _operator; |
| 10056 |
| 8619 /** | 10057 /** |
| 8620 * Return the name of the property being accessed. | 10058 * Return the name of the property being accessed. |
| 8621 * @return the name of the property being accessed | 10059 * @return the name of the property being accessed |
| 8622 */ | 10060 */ |
| 8623 SimpleIdentifier get propertyName => _propertyName; | 10061 SimpleIdentifier get propertyName => _propertyName; |
| 10062 |
| 8624 /** | 10063 /** |
| 8625 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not | 10064 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not |
| 8626 * part of a cascade expression, then this is the same as {@link #getTarget()}
. If this invocation | 10065 * part of a cascade expression, then this is the same as {@link #getTarget()}
. If this invocation |
| 8627 * is part of a cascade expression, then the target stored with the cascade ex
pression is | 10066 * is part of a cascade expression, then the target stored with the cascade ex
pression is |
| 8628 * returned. | 10067 * returned. |
| 8629 * @return the expression used to compute the receiver of the invocation | 10068 * @return the expression used to compute the receiver of the invocation |
| 8630 * @see #getTarget() | 10069 * @see #getTarget() |
| 8631 */ | 10070 */ |
| 8632 Expression get realTarget { | 10071 Expression get realTarget { |
| 8633 if (isCascaded()) { | 10072 if (isCascaded()) { |
| 8634 ASTNode ancestor = parent; | 10073 ASTNode ancestor = parent; |
| 8635 while (ancestor is! CascadeExpression) { | 10074 while (ancestor is! CascadeExpression) { |
| 8636 if (ancestor == null) { | 10075 if (ancestor == null) { |
| 8637 return _target; | 10076 return _target; |
| 8638 } | 10077 } |
| 8639 ancestor = ancestor.parent; | 10078 ancestor = ancestor.parent; |
| 8640 } | 10079 } |
| 8641 return ((ancestor as CascadeExpression)).target; | 10080 return ((ancestor as CascadeExpression)).target; |
| 8642 } | 10081 } |
| 8643 return _target; | 10082 return _target; |
| 8644 } | 10083 } |
| 10084 |
| 8645 /** | 10085 /** |
| 8646 * Return the expression computing the object defining the property being acce
ssed, or{@code null} if this property access is part of a cascade expression. | 10086 * Return the expression computing the object defining the property being acce
ssed, or{@code null} if this property access is part of a cascade expression. |
| 8647 * @return the expression computing the object defining the property being acc
essed | 10087 * @return the expression computing the object defining the property being acc
essed |
| 8648 * @see #getRealTarget() | 10088 * @see #getRealTarget() |
| 8649 */ | 10089 */ |
| 8650 Expression get target => _target; | 10090 Expression get target => _target; |
| 8651 bool isAssignable() => true; | 10091 bool isAssignable() => true; |
| 10092 |
| 8652 /** | 10093 /** |
| 8653 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this | 10094 * Return {@code true} if this expression is cascaded. If it is, then the targ
et of this |
| 8654 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. | 10095 * expression is not stored locally but is stored in the nearest ancestor that
is a{@link CascadeExpression}. |
| 8655 * @return {@code true} if this expression is cascaded | 10096 * @return {@code true} if this expression is cascaded |
| 8656 */ | 10097 */ |
| 8657 bool isCascaded() => _operator != null && identical(_operator.type, TokenType.
PERIOD_PERIOD); | 10098 bool isCascaded() => _operator != null && identical(_operator.type, TokenType.
PERIOD_PERIOD); |
| 10099 |
| 8658 /** | 10100 /** |
| 8659 * Set the property access operator to the given token. | 10101 * Set the property access operator to the given token. |
| 8660 * @param operator the property access operator | 10102 * @param operator the property access operator |
| 8661 */ | 10103 */ |
| 8662 void set operator(Token operator2) { | 10104 void set operator(Token operator2) { |
| 8663 this._operator = operator2; | 10105 this._operator = operator2; |
| 8664 } | 10106 } |
| 10107 |
| 8665 /** | 10108 /** |
| 8666 * Set the name of the property being accessed to the given identifier. | 10109 * Set the name of the property being accessed to the given identifier. |
| 8667 * @param identifier the name of the property being accessed | 10110 * @param identifier the name of the property being accessed |
| 8668 */ | 10111 */ |
| 8669 void set propertyName(SimpleIdentifier identifier) { | 10112 void set propertyName(SimpleIdentifier identifier) { |
| 8670 _propertyName = becomeParentOf(identifier); | 10113 _propertyName = becomeParentOf(identifier); |
| 8671 } | 10114 } |
| 10115 |
| 8672 /** | 10116 /** |
| 8673 * Set the expression computing the object defining the property being accesse
d to the given | 10117 * Set the expression computing the object defining the property being accesse
d to the given |
| 8674 * expression. | 10118 * expression. |
| 8675 * @param expression the expression computing the object defining the property
being accessed | 10119 * @param expression the expression computing the object defining the property
being accessed |
| 8676 */ | 10120 */ |
| 8677 void set target(Expression expression) { | 10121 void set target(Expression expression) { |
| 8678 _target = becomeParentOf(expression); | 10122 _target = becomeParentOf(expression); |
| 8679 } | 10123 } |
| 8680 void visitChildren(ASTVisitor<Object> visitor) { | 10124 void visitChildren(ASTVisitor<Object> visitor) { |
| 8681 safelyVisitChild(_target, visitor); | 10125 safelyVisitChild(_target, visitor); |
| 8682 safelyVisitChild(_propertyName, visitor); | 10126 safelyVisitChild(_propertyName, visitor); |
| 8683 } | 10127 } |
| 8684 } | 10128 } |
| 10129 |
| 8685 /** | 10130 /** |
| 8686 * Instances of the class {@code RedirectingConstructorInvocation} represent the
invocation of a | 10131 * Instances of the class {@code RedirectingConstructorInvocation} represent the
invocation of a |
| 8687 * another constructor in the same class from within a constructor's initializat
ion list. | 10132 * another constructor in the same class from within a constructor's initializat
ion list. |
| 8688 * <pre> | 10133 * <pre> |
| 8689 * redirectingConstructorInvocation ::= | 10134 * redirectingConstructorInvocation ::= |
| 8690 * 'this' ('.' identifier)? arguments | 10135 * 'this' ('.' identifier)? arguments |
| 8691 * </pre> | 10136 * </pre> |
| 8692 * @coverage dart.engine.ast | 10137 * @coverage dart.engine.ast |
| 8693 */ | 10138 */ |
| 8694 class RedirectingConstructorInvocation extends ConstructorInitializer { | 10139 class RedirectingConstructorInvocation extends ConstructorInitializer { |
| 10140 |
| 8695 /** | 10141 /** |
| 8696 * The token for the 'this' keyword. | 10142 * The token for the 'this' keyword. |
| 8697 */ | 10143 */ |
| 8698 Token _keyword; | 10144 Token _keyword; |
| 10145 |
| 8699 /** | 10146 /** |
| 8700 * The token for the period before the name of the constructor that is being i
nvoked, or{@code null} if the unnamed constructor is being invoked. | 10147 * The token for the period before the name of the constructor that is being i
nvoked, or{@code null} if the unnamed constructor is being invoked. |
| 8701 */ | 10148 */ |
| 8702 Token _period; | 10149 Token _period; |
| 10150 |
| 8703 /** | 10151 /** |
| 8704 * The name of the constructor that is being invoked, or {@code null} if the u
nnamed constructor | 10152 * The name of the constructor that is being invoked, or {@code null} if the u
nnamed constructor |
| 8705 * is being invoked. | 10153 * is being invoked. |
| 8706 */ | 10154 */ |
| 8707 SimpleIdentifier _constructorName; | 10155 SimpleIdentifier _constructorName; |
| 10156 |
| 8708 /** | 10157 /** |
| 8709 * The list of arguments to the constructor. | 10158 * The list of arguments to the constructor. |
| 8710 */ | 10159 */ |
| 8711 ArgumentList _argumentList; | 10160 ArgumentList _argumentList; |
| 10161 |
| 8712 /** | 10162 /** |
| 8713 * The element associated with the constructor, or {@code null} if the AST str
ucture has not been | 10163 * The element associated with the constructor based on static type informatio
n, or {@code null}if the AST structure has not been resolved or if the construct
or could not be resolved. |
| 8714 * resolved or if the constructor could not be resolved. | |
| 8715 */ | 10164 */ |
| 8716 ConstructorElement _element; | 10165 ConstructorElement _staticElement; |
| 10166 |
| 10167 /** |
| 10168 * The element associated with the constructor based on propagated type inform
ation, or{@code null} if the AST structure has not been resolved or if the const
ructor could not be |
| 10169 * resolved. |
| 10170 */ |
| 10171 ConstructorElement _propagatedElement; |
| 10172 |
| 8717 /** | 10173 /** |
| 8718 * Initialize a newly created redirecting invocation to invoke the constructor
with the given name | 10174 * Initialize a newly created redirecting invocation to invoke the constructor
with the given name |
| 8719 * with the given arguments. | 10175 * with the given arguments. |
| 8720 * @param keyword the token for the 'this' keyword | 10176 * @param keyword the token for the 'this' keyword |
| 8721 * @param period the token for the period before the name of the constructor t
hat is being invoked | 10177 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 8722 * @param constructorName the name of the constructor that is being invoked | 10178 * @param constructorName the name of the constructor that is being invoked |
| 8723 * @param argumentList the list of arguments to the constructor | 10179 * @param argumentList the list of arguments to the constructor |
| 8724 */ | 10180 */ |
| 8725 RedirectingConstructorInvocation.full(Token keyword, Token period, SimpleIdent
ifier constructorName, ArgumentList argumentList) { | 10181 RedirectingConstructorInvocation.full(Token keyword, Token period, SimpleIdent
ifier constructorName, ArgumentList argumentList) { |
| 8726 this._keyword = keyword; | 10182 this._keyword = keyword; |
| 8727 this._period = period; | 10183 this._period = period; |
| 8728 this._constructorName = becomeParentOf(constructorName); | 10184 this._constructorName = becomeParentOf(constructorName); |
| 8729 this._argumentList = becomeParentOf(argumentList); | 10185 this._argumentList = becomeParentOf(argumentList); |
| 8730 } | 10186 } |
| 10187 |
| 8731 /** | 10188 /** |
| 8732 * Initialize a newly created redirecting invocation to invoke the constructor
with the given name | 10189 * Initialize a newly created redirecting invocation to invoke the constructor
with the given name |
| 8733 * with the given arguments. | 10190 * with the given arguments. |
| 8734 * @param keyword the token for the 'this' keyword | 10191 * @param keyword the token for the 'this' keyword |
| 8735 * @param period the token for the period before the name of the constructor t
hat is being invoked | 10192 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 8736 * @param constructorName the name of the constructor that is being invoked | 10193 * @param constructorName the name of the constructor that is being invoked |
| 8737 * @param argumentList the list of arguments to the constructor | 10194 * @param argumentList the list of arguments to the constructor |
| 8738 */ | 10195 */ |
| 8739 RedirectingConstructorInvocation({Token keyword, Token period, SimpleIdentifie
r constructorName, ArgumentList argumentList}) : this.full(keyword, period, cons
tructorName, argumentList); | 10196 RedirectingConstructorInvocation({Token keyword, Token period, SimpleIdentifie
r constructorName, ArgumentList argumentList}) : this.full(keyword, period, cons
tructorName, argumentList); |
| 8740 accept(ASTVisitor visitor) => visitor.visitRedirectingConstructorInvocation(th
is); | 10197 accept(ASTVisitor visitor) => visitor.visitRedirectingConstructorInvocation(th
is); |
| 10198 |
| 8741 /** | 10199 /** |
| 8742 * Return the list of arguments to the constructor. | 10200 * Return the list of arguments to the constructor. |
| 8743 * @return the list of arguments to the constructor | 10201 * @return the list of arguments to the constructor |
| 8744 */ | 10202 */ |
| 8745 ArgumentList get argumentList => _argumentList; | 10203 ArgumentList get argumentList => _argumentList; |
| 8746 Token get beginToken => _keyword; | 10204 Token get beginToken => _keyword; |
| 10205 |
| 8747 /** | 10206 /** |
| 8748 * Return the name of the constructor that is being invoked, or {@code null} i
f the unnamed | 10207 * Return the name of the constructor that is being invoked, or {@code null} i
f the unnamed |
| 8749 * constructor is being invoked. | 10208 * constructor is being invoked. |
| 8750 * @return the name of the constructor that is being invoked | 10209 * @return the name of the constructor that is being invoked |
| 8751 */ | 10210 */ |
| 8752 SimpleIdentifier get constructorName => _constructorName; | 10211 SimpleIdentifier get constructorName => _constructorName; |
| 10212 |
| 8753 /** | 10213 /** |
| 8754 * Return the element associated with the constructor, or {@code null} if the
AST structure has | 10214 * 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 th
e constructor could not be |
| 8755 * not been resolved or if the constructor could not be resolved. | 10215 * resolved. |
| 8756 * @return the element associated with the super constructor | 10216 * @return the element associated with the super constructor |
| 8757 */ | 10217 */ |
| 8758 ConstructorElement get element => _element; | 10218 ConstructorElement get element => _propagatedElement; |
| 8759 Token get endToken => _argumentList.endToken; | 10219 Token get endToken => _argumentList.endToken; |
| 10220 |
| 8760 /** | 10221 /** |
| 8761 * Return the token for the 'this' keyword. | 10222 * Return the token for the 'this' keyword. |
| 8762 * @return the token for the 'this' keyword | 10223 * @return the token for the 'this' keyword |
| 8763 */ | 10224 */ |
| 8764 Token get keyword => _keyword; | 10225 Token get keyword => _keyword; |
| 10226 |
| 8765 /** | 10227 /** |
| 8766 * 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. | 10228 * 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. |
| 8767 * @return the token for the period before the name of the constructor that is
being invoked | 10229 * @return the token for the period before the name of the constructor that is
being invoked |
| 8768 */ | 10230 */ |
| 8769 Token get period => _period; | 10231 Token get period => _period; |
| 10232 |
| 10233 /** |
| 10234 * Return the element associated with the constructor based on static type inf
ormation, or{@code null} if the AST structure has not been resolved or if the co
nstructor could not be |
| 10235 * resolved. |
| 10236 * @return the element associated with the constructor |
| 10237 */ |
| 10238 ConstructorElement get staticElement => _staticElement; |
| 10239 |
| 8770 /** | 10240 /** |
| 8771 * Set the list of arguments to the constructor to the given list. | 10241 * Set the list of arguments to the constructor to the given list. |
| 8772 * @param argumentList the list of arguments to the constructor | 10242 * @param argumentList the list of arguments to the constructor |
| 8773 */ | 10243 */ |
| 8774 void set argumentList(ArgumentList argumentList2) { | 10244 void set argumentList(ArgumentList argumentList2) { |
| 8775 this._argumentList = becomeParentOf(argumentList2); | 10245 this._argumentList = becomeParentOf(argumentList2); |
| 8776 } | 10246 } |
| 10247 |
| 8777 /** | 10248 /** |
| 8778 * Set the name of the constructor that is being invoked to the given identifi
er. | 10249 * Set the name of the constructor that is being invoked to the given identifi
er. |
| 8779 * @param identifier the name of the constructor that is being invoked | 10250 * @param identifier the name of the constructor that is being invoked |
| 8780 */ | 10251 */ |
| 8781 void set constructorName(SimpleIdentifier identifier) { | 10252 void set constructorName(SimpleIdentifier identifier) { |
| 8782 _constructorName = becomeParentOf(identifier); | 10253 _constructorName = becomeParentOf(identifier); |
| 8783 } | 10254 } |
| 10255 |
| 8784 /** | 10256 /** |
| 8785 * Set the element associated with the constructor to the given element. | 10257 * Set the element associated with the constructor based on propagated type in
formation to the |
| 8786 * @param element the element associated with the constructor | 10258 * given element. |
| 10259 * @param element the element to be associated with the constructor |
| 8787 */ | 10260 */ |
| 8788 void set element(ConstructorElement element2) { | 10261 void set element(ConstructorElement element2) { |
| 8789 this._element = element2; | 10262 _propagatedElement = element2; |
| 8790 } | 10263 } |
| 10264 |
| 8791 /** | 10265 /** |
| 8792 * Set the token for the 'this' keyword to the given token. | 10266 * Set the token for the 'this' keyword to the given token. |
| 8793 * @param keyword the token for the 'this' keyword | 10267 * @param keyword the token for the 'this' keyword |
| 8794 */ | 10268 */ |
| 8795 void set keyword(Token keyword2) { | 10269 void set keyword(Token keyword2) { |
| 8796 this._keyword = keyword2; | 10270 this._keyword = keyword2; |
| 8797 } | 10271 } |
| 10272 |
| 8798 /** | 10273 /** |
| 8799 * Set the token for the period before the name of the constructor that is bei
ng invoked to the | 10274 * Set the token for the period before the name of the constructor that is bei
ng invoked to the |
| 8800 * given token. | 10275 * given token. |
| 8801 * @param period the token for the period before the name of the constructor t
hat is being invoked | 10276 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 8802 */ | 10277 */ |
| 8803 void set period(Token period2) { | 10278 void set period(Token period2) { |
| 8804 this._period = period2; | 10279 this._period = period2; |
| 8805 } | 10280 } |
| 10281 |
| 10282 /** |
| 10283 * Set the element associated with the constructor based on static type inform
ation to the given |
| 10284 * element. |
| 10285 * @param element the element to be associated with the constructor |
| 10286 */ |
| 10287 void set staticElement(ConstructorElement element) { |
| 10288 this._staticElement = element; |
| 10289 } |
| 8806 void visitChildren(ASTVisitor<Object> visitor) { | 10290 void visitChildren(ASTVisitor<Object> visitor) { |
| 8807 safelyVisitChild(_constructorName, visitor); | 10291 safelyVisitChild(_constructorName, visitor); |
| 8808 safelyVisitChild(_argumentList, visitor); | 10292 safelyVisitChild(_argumentList, visitor); |
| 8809 } | 10293 } |
| 8810 } | 10294 } |
| 10295 |
| 8811 /** | 10296 /** |
| 8812 * Instances of the class {@code RethrowExpression} represent a rethrow expressi
on. | 10297 * Instances of the class {@code RethrowExpression} represent a rethrow expressi
on. |
| 8813 * <pre> | 10298 * <pre> |
| 8814 * rethrowExpression ::= | 10299 * rethrowExpression ::= |
| 8815 * 'rethrow' | 10300 * 'rethrow' |
| 8816 * </pre> | 10301 * </pre> |
| 8817 * @coverage dart.engine.ast | 10302 * @coverage dart.engine.ast |
| 8818 */ | 10303 */ |
| 8819 class RethrowExpression extends Expression { | 10304 class RethrowExpression extends Expression { |
| 10305 |
| 8820 /** | 10306 /** |
| 8821 * The token representing the 'rethrow' keyword. | 10307 * The token representing the 'rethrow' keyword. |
| 8822 */ | 10308 */ |
| 8823 Token _keyword; | 10309 Token _keyword; |
| 10310 |
| 8824 /** | 10311 /** |
| 8825 * Initialize a newly created rethrow expression. | 10312 * Initialize a newly created rethrow expression. |
| 8826 * @param keyword the token representing the 'rethrow' keyword | 10313 * @param keyword the token representing the 'rethrow' keyword |
| 8827 */ | 10314 */ |
| 8828 RethrowExpression.full(Token keyword) { | 10315 RethrowExpression.full(Token keyword) { |
| 8829 this._keyword = keyword; | 10316 this._keyword = keyword; |
| 8830 } | 10317 } |
| 10318 |
| 8831 /** | 10319 /** |
| 8832 * Initialize a newly created rethrow expression. | 10320 * Initialize a newly created rethrow expression. |
| 8833 * @param keyword the token representing the 'rethrow' keyword | 10321 * @param keyword the token representing the 'rethrow' keyword |
| 8834 */ | 10322 */ |
| 8835 RethrowExpression({Token keyword}) : this.full(keyword); | 10323 RethrowExpression({Token keyword}) : this.full(keyword); |
| 8836 accept(ASTVisitor visitor) => visitor.visitRethrowExpression(this); | 10324 accept(ASTVisitor visitor) => visitor.visitRethrowExpression(this); |
| 8837 Token get beginToken => _keyword; | 10325 Token get beginToken => _keyword; |
| 8838 Token get endToken => _keyword; | 10326 Token get endToken => _keyword; |
| 10327 |
| 8839 /** | 10328 /** |
| 8840 * Return the token representing the 'rethrow' keyword. | 10329 * Return the token representing the 'rethrow' keyword. |
| 8841 * @return the token representing the 'rethrow' keyword | 10330 * @return the token representing the 'rethrow' keyword |
| 8842 */ | 10331 */ |
| 8843 Token get keyword => _keyword; | 10332 Token get keyword => _keyword; |
| 10333 |
| 8844 /** | 10334 /** |
| 8845 * Set the token representing the 'rethrow' keyword to the given token. | 10335 * Set the token representing the 'rethrow' keyword to the given token. |
| 8846 * @param keyword the token representing the 'rethrow' keyword | 10336 * @param keyword the token representing the 'rethrow' keyword |
| 8847 */ | 10337 */ |
| 8848 void set keyword(Token keyword2) { | 10338 void set keyword(Token keyword2) { |
| 8849 this._keyword = keyword2; | 10339 this._keyword = keyword2; |
| 8850 } | 10340 } |
| 8851 void visitChildren(ASTVisitor<Object> visitor) { | 10341 void visitChildren(ASTVisitor<Object> visitor) { |
| 8852 } | 10342 } |
| 8853 } | 10343 } |
| 10344 |
| 8854 /** | 10345 /** |
| 8855 * Instances of the class {@code ReturnStatement} represent a return statement. | 10346 * Instances of the class {@code ReturnStatement} represent a return statement. |
| 8856 * <pre> | 10347 * <pre> |
| 8857 * returnStatement ::= | 10348 * returnStatement ::= |
| 8858 * 'return' {@link Expression expression}? ';' | 10349 * 'return' {@link Expression expression}? ';' |
| 8859 * </pre> | 10350 * </pre> |
| 8860 * @coverage dart.engine.ast | 10351 * @coverage dart.engine.ast |
| 8861 */ | 10352 */ |
| 8862 class ReturnStatement extends Statement { | 10353 class ReturnStatement extends Statement { |
| 10354 |
| 8863 /** | 10355 /** |
| 8864 * The token representing the 'return' keyword. | 10356 * The token representing the 'return' keyword. |
| 8865 */ | 10357 */ |
| 8866 Token _keyword; | 10358 Token _keyword; |
| 10359 |
| 8867 /** | 10360 /** |
| 8868 * The expression computing the value to be returned, or {@code null} if no ex
plicit value was | 10361 * The expression computing the value to be returned, or {@code null} if no ex
plicit value was |
| 8869 * provided. | 10362 * provided. |
| 8870 */ | 10363 */ |
| 8871 Expression _expression; | 10364 Expression _expression; |
| 10365 |
| 8872 /** | 10366 /** |
| 8873 * The semicolon terminating the statement. | 10367 * The semicolon terminating the statement. |
| 8874 */ | 10368 */ |
| 8875 Token _semicolon; | 10369 Token _semicolon; |
| 10370 |
| 8876 /** | 10371 /** |
| 8877 * Initialize a newly created return statement. | 10372 * Initialize a newly created return statement. |
| 8878 * @param keyword the token representing the 'return' keyword | 10373 * @param keyword the token representing the 'return' keyword |
| 8879 * @param expression the expression computing the value to be returned | 10374 * @param expression the expression computing the value to be returned |
| 8880 * @param semicolon the semicolon terminating the statement | 10375 * @param semicolon the semicolon terminating the statement |
| 8881 */ | 10376 */ |
| 8882 ReturnStatement.full(Token keyword, Expression expression, Token semicolon) { | 10377 ReturnStatement.full(Token keyword, Expression expression, Token semicolon) { |
| 8883 this._keyword = keyword; | 10378 this._keyword = keyword; |
| 8884 this._expression = becomeParentOf(expression); | 10379 this._expression = becomeParentOf(expression); |
| 8885 this._semicolon = semicolon; | 10380 this._semicolon = semicolon; |
| 8886 } | 10381 } |
| 10382 |
| 8887 /** | 10383 /** |
| 8888 * Initialize a newly created return statement. | 10384 * Initialize a newly created return statement. |
| 8889 * @param keyword the token representing the 'return' keyword | 10385 * @param keyword the token representing the 'return' keyword |
| 8890 * @param expression the expression computing the value to be returned | 10386 * @param expression the expression computing the value to be returned |
| 8891 * @param semicolon the semicolon terminating the statement | 10387 * @param semicolon the semicolon terminating the statement |
| 8892 */ | 10388 */ |
| 8893 ReturnStatement({Token keyword, Expression expression, Token semicolon}) : thi
s.full(keyword, expression, semicolon); | 10389 ReturnStatement({Token keyword, Expression expression, Token semicolon}) : thi
s.full(keyword, expression, semicolon); |
| 8894 accept(ASTVisitor visitor) => visitor.visitReturnStatement(this); | 10390 accept(ASTVisitor visitor) => visitor.visitReturnStatement(this); |
| 8895 Token get beginToken => _keyword; | 10391 Token get beginToken => _keyword; |
| 8896 Token get endToken => _semicolon; | 10392 Token get endToken => _semicolon; |
| 10393 |
| 8897 /** | 10394 /** |
| 8898 * Return the expression computing the value to be returned, or {@code null} i
f no explicit value | 10395 * Return the expression computing the value to be returned, or {@code null} i
f no explicit value |
| 8899 * was provided. | 10396 * was provided. |
| 8900 * @return the expression computing the value to be returned | 10397 * @return the expression computing the value to be returned |
| 8901 */ | 10398 */ |
| 8902 Expression get expression => _expression; | 10399 Expression get expression => _expression; |
| 10400 |
| 8903 /** | 10401 /** |
| 8904 * Return the token representing the 'return' keyword. | 10402 * Return the token representing the 'return' keyword. |
| 8905 * @return the token representing the 'return' keyword | 10403 * @return the token representing the 'return' keyword |
| 8906 */ | 10404 */ |
| 8907 Token get keyword => _keyword; | 10405 Token get keyword => _keyword; |
| 10406 |
| 8908 /** | 10407 /** |
| 8909 * Return the semicolon terminating the statement. | 10408 * Return the semicolon terminating the statement. |
| 8910 * @return the semicolon terminating the statement | 10409 * @return the semicolon terminating the statement |
| 8911 */ | 10410 */ |
| 8912 Token get semicolon => _semicolon; | 10411 Token get semicolon => _semicolon; |
| 10412 |
| 8913 /** | 10413 /** |
| 8914 * Set the expression computing the value to be returned to the given expressi
on. | 10414 * Set the expression computing the value to be returned to the given expressi
on. |
| 8915 * @param expression the expression computing the value to be returned | 10415 * @param expression the expression computing the value to be returned |
| 8916 */ | 10416 */ |
| 8917 void set expression(Expression expression2) { | 10417 void set expression(Expression expression2) { |
| 8918 this._expression = becomeParentOf(expression2); | 10418 this._expression = becomeParentOf(expression2); |
| 8919 } | 10419 } |
| 10420 |
| 8920 /** | 10421 /** |
| 8921 * Set the token representing the 'return' keyword to the given token. | 10422 * Set the token representing the 'return' keyword to the given token. |
| 8922 * @param keyword the token representing the 'return' keyword | 10423 * @param keyword the token representing the 'return' keyword |
| 8923 */ | 10424 */ |
| 8924 void set keyword(Token keyword2) { | 10425 void set keyword(Token keyword2) { |
| 8925 this._keyword = keyword2; | 10426 this._keyword = keyword2; |
| 8926 } | 10427 } |
| 10428 |
| 8927 /** | 10429 /** |
| 8928 * Set the semicolon terminating the statement to the given token. | 10430 * Set the semicolon terminating the statement to the given token. |
| 8929 * @param semicolon the semicolon terminating the statement | 10431 * @param semicolon the semicolon terminating the statement |
| 8930 */ | 10432 */ |
| 8931 void set semicolon(Token semicolon2) { | 10433 void set semicolon(Token semicolon2) { |
| 8932 this._semicolon = semicolon2; | 10434 this._semicolon = semicolon2; |
| 8933 } | 10435 } |
| 8934 void visitChildren(ASTVisitor<Object> visitor) { | 10436 void visitChildren(ASTVisitor<Object> visitor) { |
| 8935 safelyVisitChild(_expression, visitor); | 10437 safelyVisitChild(_expression, visitor); |
| 8936 } | 10438 } |
| 8937 } | 10439 } |
| 10440 |
| 8938 /** | 10441 /** |
| 8939 * Instances of the class {@code ScriptTag} represent the script tag that can op
tionally occur at | 10442 * Instances of the class {@code ScriptTag} represent the script tag that can op
tionally occur at |
| 8940 * the beginning of a compilation unit. | 10443 * the beginning of a compilation unit. |
| 8941 * <pre> | 10444 * <pre> |
| 8942 * scriptTag ::= | 10445 * scriptTag ::= |
| 8943 * '#!' (~NEWLINE)* NEWLINE | 10446 * '#!' (~NEWLINE)* NEWLINE |
| 8944 * </pre> | 10447 * </pre> |
| 8945 * @coverage dart.engine.ast | 10448 * @coverage dart.engine.ast |
| 8946 */ | 10449 */ |
| 8947 class ScriptTag extends ASTNode { | 10450 class ScriptTag extends ASTNode { |
| 10451 |
| 8948 /** | 10452 /** |
| 8949 * The token representing this script tag. | 10453 * The token representing this script tag. |
| 8950 */ | 10454 */ |
| 8951 Token _scriptTag; | 10455 Token _scriptTag; |
| 10456 |
| 8952 /** | 10457 /** |
| 8953 * Initialize a newly created script tag. | 10458 * Initialize a newly created script tag. |
| 8954 * @param scriptTag the token representing this script tag | 10459 * @param scriptTag the token representing this script tag |
| 8955 */ | 10460 */ |
| 8956 ScriptTag.full(Token scriptTag) { | 10461 ScriptTag.full(Token scriptTag) { |
| 8957 this._scriptTag = scriptTag; | 10462 this._scriptTag = scriptTag; |
| 8958 } | 10463 } |
| 10464 |
| 8959 /** | 10465 /** |
| 8960 * Initialize a newly created script tag. | 10466 * Initialize a newly created script tag. |
| 8961 * @param scriptTag the token representing this script tag | 10467 * @param scriptTag the token representing this script tag |
| 8962 */ | 10468 */ |
| 8963 ScriptTag({Token scriptTag}) : this.full(scriptTag); | 10469 ScriptTag({Token scriptTag}) : this.full(scriptTag); |
| 8964 accept(ASTVisitor visitor) => visitor.visitScriptTag(this); | 10470 accept(ASTVisitor visitor) => visitor.visitScriptTag(this); |
| 8965 Token get beginToken => _scriptTag; | 10471 Token get beginToken => _scriptTag; |
| 8966 Token get endToken => _scriptTag; | 10472 Token get endToken => _scriptTag; |
| 10473 |
| 8967 /** | 10474 /** |
| 8968 * Return the token representing this script tag. | 10475 * Return the token representing this script tag. |
| 8969 * @return the token representing this script tag | 10476 * @return the token representing this script tag |
| 8970 */ | 10477 */ |
| 8971 Token get scriptTag => _scriptTag; | 10478 Token get scriptTag => _scriptTag; |
| 10479 |
| 8972 /** | 10480 /** |
| 8973 * Set the token representing this script tag to the given script tag. | 10481 * Set the token representing this script tag to the given script tag. |
| 8974 * @param scriptTag the token representing this script tag | 10482 * @param scriptTag the token representing this script tag |
| 8975 */ | 10483 */ |
| 8976 void set scriptTag(Token scriptTag2) { | 10484 void set scriptTag(Token scriptTag2) { |
| 8977 this._scriptTag = scriptTag2; | 10485 this._scriptTag = scriptTag2; |
| 8978 } | 10486 } |
| 8979 void visitChildren(ASTVisitor<Object> visitor) { | 10487 void visitChildren(ASTVisitor<Object> visitor) { |
| 8980 } | 10488 } |
| 8981 } | 10489 } |
| 10490 |
| 8982 /** | 10491 /** |
| 8983 * Instances of the class {@code ShowCombinator} represent a combinator that res
tricts the names | 10492 * Instances of the class {@code ShowCombinator} represent a combinator that res
tricts the names |
| 8984 * being imported to those in a given list. | 10493 * being imported to those in a given list. |
| 8985 * <pre> | 10494 * <pre> |
| 8986 * showCombinator ::= | 10495 * showCombinator ::= |
| 8987 * 'show' {@link SimpleIdentifier identifier} (',' {@link SimpleIdentifier ident
ifier}) | 10496 * 'show' {@link SimpleIdentifier identifier} (',' {@link SimpleIdentifier ident
ifier}) |
| 8988 * </pre> | 10497 * </pre> |
| 8989 * @coverage dart.engine.ast | 10498 * @coverage dart.engine.ast |
| 8990 */ | 10499 */ |
| 8991 class ShowCombinator extends Combinator { | 10500 class ShowCombinator extends Combinator { |
| 10501 |
| 8992 /** | 10502 /** |
| 8993 * The list of names from the library that are made visible by this combinator
. | 10503 * The list of names from the library that are made visible by this combinator
. |
| 8994 */ | 10504 */ |
| 8995 NodeList<SimpleIdentifier> _shownNames; | 10505 NodeList<SimpleIdentifier> _shownNames; |
| 10506 |
| 8996 /** | 10507 /** |
| 8997 * Initialize a newly created import show combinator. | 10508 * Initialize a newly created import show combinator. |
| 8998 * @param keyword the comma introducing the combinator | 10509 * @param keyword the comma introducing the combinator |
| 8999 * @param shownNames the list of names from the library that are made visible
by this combinator | 10510 * @param shownNames the list of names from the library that are made visible
by this combinator |
| 9000 */ | 10511 */ |
| 9001 ShowCombinator.full(Token keyword, List<SimpleIdentifier> shownNames) : super.
full(keyword) { | 10512 ShowCombinator.full(Token keyword, List<SimpleIdentifier> shownNames) : super.
full(keyword) { |
| 9002 this._shownNames = new NodeList<SimpleIdentifier>(this); | 10513 this._shownNames = new NodeList<SimpleIdentifier>(this); |
| 9003 this._shownNames.addAll(shownNames); | 10514 this._shownNames.addAll(shownNames); |
| 9004 } | 10515 } |
| 10516 |
| 9005 /** | 10517 /** |
| 9006 * Initialize a newly created import show combinator. | 10518 * Initialize a newly created import show combinator. |
| 9007 * @param keyword the comma introducing the combinator | 10519 * @param keyword the comma introducing the combinator |
| 9008 * @param shownNames the list of names from the library that are made visible
by this combinator | 10520 * @param shownNames the list of names from the library that are made visible
by this combinator |
| 9009 */ | 10521 */ |
| 9010 ShowCombinator({Token keyword, List<SimpleIdentifier> shownNames}) : this.full
(keyword, shownNames); | 10522 ShowCombinator({Token keyword, List<SimpleIdentifier> shownNames}) : this.full
(keyword, shownNames); |
| 9011 accept(ASTVisitor visitor) => visitor.visitShowCombinator(this); | 10523 accept(ASTVisitor visitor) => visitor.visitShowCombinator(this); |
| 9012 Token get endToken => _shownNames.endToken; | 10524 Token get endToken => _shownNames.endToken; |
| 10525 |
| 9013 /** | 10526 /** |
| 9014 * Return the list of names from the library that are made visible by this com
binator. | 10527 * Return the list of names from the library that are made visible by this com
binator. |
| 9015 * @return the list of names from the library that are made visible by this co
mbinator | 10528 * @return the list of names from the library that are made visible by this co
mbinator |
| 9016 */ | 10529 */ |
| 9017 NodeList<SimpleIdentifier> get shownNames => _shownNames; | 10530 NodeList<SimpleIdentifier> get shownNames => _shownNames; |
| 9018 void visitChildren(ASTVisitor<Object> visitor) { | 10531 void visitChildren(ASTVisitor<Object> visitor) { |
| 9019 _shownNames.accept(visitor); | 10532 _shownNames.accept(visitor); |
| 9020 } | 10533 } |
| 9021 } | 10534 } |
| 10535 |
| 9022 /** | 10536 /** |
| 9023 * Instances of the class {@code SimpleFormalParameter} represent a simple forma
l parameter. | 10537 * Instances of the class {@code SimpleFormalParameter} represent a simple forma
l parameter. |
| 9024 * <pre> | 10538 * <pre> |
| 9025 * simpleFormalParameter ::= | 10539 * simpleFormalParameter ::= |
| 9026 * ('final' {@link TypeName type} | 'var' | {@link TypeName type})? {@link Simpl
eIdentifier identifier}</pre> | 10540 * ('final' {@link TypeName type} | 'var' | {@link TypeName type})? {@link Simpl
eIdentifier identifier}</pre> |
| 9027 * @coverage dart.engine.ast | 10541 * @coverage dart.engine.ast |
| 9028 */ | 10542 */ |
| 9029 class SimpleFormalParameter extends NormalFormalParameter { | 10543 class SimpleFormalParameter extends NormalFormalParameter { |
| 10544 |
| 9030 /** | 10545 /** |
| 9031 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no | 10546 * The token representing either the 'final', 'const' or 'var' keyword, or {@c
ode null} if no |
| 9032 * keyword was used. | 10547 * keyword was used. |
| 9033 */ | 10548 */ |
| 9034 Token _keyword; | 10549 Token _keyword; |
| 10550 |
| 9035 /** | 10551 /** |
| 9036 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have | 10552 * The name of the declared type of the parameter, or {@code null} if the para
meter does not have |
| 9037 * a declared type. | 10553 * a declared type. |
| 9038 */ | 10554 */ |
| 9039 TypeName _type; | 10555 TypeName _type; |
| 10556 |
| 9040 /** | 10557 /** |
| 9041 * Initialize a newly created formal parameter. | 10558 * Initialize a newly created formal parameter. |
| 9042 * @param comment the documentation comment associated with this parameter | 10559 * @param comment the documentation comment associated with this parameter |
| 9043 * @param metadata the annotations associated with this parameter | 10560 * @param metadata the annotations associated with this parameter |
| 9044 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 10561 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 9045 * @param type the name of the declared type of the parameter | 10562 * @param type the name of the declared type of the parameter |
| 9046 * @param identifier the name of the parameter being declared | 10563 * @param identifier the name of the parameter being declared |
| 9047 */ | 10564 */ |
| 9048 SimpleFormalParameter.full(Comment comment, List<Annotation> metadata, Token k
eyword, TypeName type, SimpleIdentifier identifier) : super.full(comment, metada
ta, identifier) { | 10565 SimpleFormalParameter.full(Comment comment, List<Annotation> metadata, Token k
eyword, TypeName type, SimpleIdentifier identifier) : super.full(comment, metada
ta, identifier) { |
| 9049 this._keyword = keyword; | 10566 this._keyword = keyword; |
| 9050 this._type = becomeParentOf(type); | 10567 this._type = becomeParentOf(type); |
| 9051 } | 10568 } |
| 10569 |
| 9052 /** | 10570 /** |
| 9053 * Initialize a newly created formal parameter. | 10571 * Initialize a newly created formal parameter. |
| 9054 * @param comment the documentation comment associated with this parameter | 10572 * @param comment the documentation comment associated with this parameter |
| 9055 * @param metadata the annotations associated with this parameter | 10573 * @param metadata the annotations associated with this parameter |
| 9056 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 10574 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 9057 * @param type the name of the declared type of the parameter | 10575 * @param type the name of the declared type of the parameter |
| 9058 * @param identifier the name of the parameter being declared | 10576 * @param identifier the name of the parameter being declared |
| 9059 */ | 10577 */ |
| 9060 SimpleFormalParameter({Comment comment, List<Annotation> metadata, Token keywo
rd, TypeName type, SimpleIdentifier identifier}) : this.full(comment, metadata,
keyword, type, identifier); | 10578 SimpleFormalParameter({Comment comment, List<Annotation> metadata, Token keywo
rd, TypeName type, SimpleIdentifier identifier}) : this.full(comment, metadata,
keyword, type, identifier); |
| 9061 accept(ASTVisitor visitor) => visitor.visitSimpleFormalParameter(this); | 10579 accept(ASTVisitor visitor) => visitor.visitSimpleFormalParameter(this); |
| 9062 Token get beginToken { | 10580 Token get beginToken { |
| 9063 if (_keyword != null) { | 10581 if (_keyword != null) { |
| 9064 return _keyword; | 10582 return _keyword; |
| 9065 } else if (_type != null) { | 10583 } else if (_type != null) { |
| 9066 return _type.beginToken; | 10584 return _type.beginToken; |
| 9067 } | 10585 } |
| 9068 return identifier.beginToken; | 10586 return identifier.beginToken; |
| 9069 } | 10587 } |
| 9070 Token get endToken => identifier.endToken; | 10588 Token get endToken => identifier.endToken; |
| 10589 |
| 9071 /** | 10590 /** |
| 9072 * Return the token representing either the 'final', 'const' or 'var' keyword. | 10591 * Return the token representing either the 'final', 'const' or 'var' keyword. |
| 9073 * @return the token representing either the 'final', 'const' or 'var' keyword | 10592 * @return the token representing either the 'final', 'const' or 'var' keyword |
| 9074 */ | 10593 */ |
| 9075 Token get keyword => _keyword; | 10594 Token get keyword => _keyword; |
| 10595 |
| 9076 /** | 10596 /** |
| 9077 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does | 10597 * Return the name of the declared type of the parameter, or {@code null} if t
he parameter does |
| 9078 * not have a declared type. | 10598 * not have a declared type. |
| 9079 * @return the name of the declared type of the parameter | 10599 * @return the name of the declared type of the parameter |
| 9080 */ | 10600 */ |
| 9081 TypeName get type => _type; | 10601 TypeName get type => _type; |
| 9082 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); | 10602 bool isConst() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.CONST); |
| 9083 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); | 10603 bool isFinal() => (_keyword is KeywordToken) && identical(((_keyword as Keywor
dToken)).keyword, Keyword.FINAL); |
| 10604 |
| 9084 /** | 10605 /** |
| 9085 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. | 10606 * Set the token representing either the 'final', 'const' or 'var' keyword to
the given token. |
| 9086 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 10607 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
| 9087 */ | 10608 */ |
| 9088 void set keyword(Token keyword2) { | 10609 void set keyword(Token keyword2) { |
| 9089 this._keyword = keyword2; | 10610 this._keyword = keyword2; |
| 9090 } | 10611 } |
| 10612 |
| 9091 /** | 10613 /** |
| 9092 * Set the name of the declared type of the parameter to the given type name. | 10614 * Set the name of the declared type of the parameter to the given type name. |
| 9093 * @param typeName the name of the declared type of the parameter | 10615 * @param typeName the name of the declared type of the parameter |
| 9094 */ | 10616 */ |
| 9095 void set type(TypeName typeName) { | 10617 void set type(TypeName typeName) { |
| 9096 _type = becomeParentOf(typeName); | 10618 _type = becomeParentOf(typeName); |
| 9097 } | 10619 } |
| 9098 void visitChildren(ASTVisitor<Object> visitor) { | 10620 void visitChildren(ASTVisitor<Object> visitor) { |
| 9099 super.visitChildren(visitor); | 10621 super.visitChildren(visitor); |
| 9100 safelyVisitChild(_type, visitor); | 10622 safelyVisitChild(_type, visitor); |
| 9101 safelyVisitChild(identifier, visitor); | 10623 safelyVisitChild(identifier, visitor); |
| 9102 } | 10624 } |
| 9103 } | 10625 } |
| 10626 |
| 9104 /** | 10627 /** |
| 9105 * Instances of the class {@code SimpleIdentifier} represent a simple identifier
. | 10628 * Instances of the class {@code SimpleIdentifier} represent a simple identifier
. |
| 9106 * <pre> | 10629 * <pre> |
| 9107 * simpleIdentifier ::= | 10630 * simpleIdentifier ::= |
| 9108 * initialCharacter internalCharacter | 10631 * initialCharacter internalCharacter |
| 9109 * initialCharacter ::= '_' | '$' | letter | 10632 * initialCharacter ::= '_' | '$' | letter |
| 9110 * internalCharacter ::= '_' | '$' | letter | digit | 10633 * internalCharacter ::= '_' | '$' | letter | digit |
| 9111 * </pre> | 10634 * </pre> |
| 9112 * @coverage dart.engine.ast | 10635 * @coverage dart.engine.ast |
| 9113 */ | 10636 */ |
| 9114 class SimpleIdentifier extends Identifier { | 10637 class SimpleIdentifier extends Identifier { |
| 10638 |
| 9115 /** | 10639 /** |
| 9116 * The token representing the identifier. | 10640 * The token representing the identifier. |
| 9117 */ | 10641 */ |
| 9118 Token _token; | 10642 Token _token; |
| 10643 |
| 9119 /** | 10644 /** |
| 9120 * The element associated with this identifier, or {@code null} if the AST str
ucture has not been | 10645 * The element associated with this identifier based on static type informatio
n, or {@code null}if the AST structure has not been resolved or if this identifi
er could not be resolved. |
| 9121 * resolved or if this identifier could not be resolved. | |
| 9122 */ | 10646 */ |
| 9123 Element _element; | 10647 Element _staticElement; |
| 10648 |
| 10649 /** |
| 10650 * The element associated with this identifier based on propagated type inform
ation, or{@code null} if the AST structure has not been resolved or if this iden
tifier could not be |
| 10651 * resolved. |
| 10652 */ |
| 10653 Element _propagatedElement; |
| 10654 |
| 9124 /** | 10655 /** |
| 9125 * Initialize a newly created identifier. | 10656 * Initialize a newly created identifier. |
| 9126 * @param token the token representing the identifier | 10657 * @param token the token representing the identifier |
| 9127 */ | 10658 */ |
| 9128 SimpleIdentifier.full(Token token) { | 10659 SimpleIdentifier.full(Token token) { |
| 9129 this._token = token; | 10660 this._token = token; |
| 9130 } | 10661 } |
| 10662 |
| 9131 /** | 10663 /** |
| 9132 * Initialize a newly created identifier. | 10664 * Initialize a newly created identifier. |
| 9133 * @param token the token representing the identifier | 10665 * @param token the token representing the identifier |
| 9134 */ | 10666 */ |
| 9135 SimpleIdentifier({Token token}) : this.full(token); | 10667 SimpleIdentifier({Token token}) : this.full(token); |
| 9136 accept(ASTVisitor visitor) => visitor.visitSimpleIdentifier(this); | 10668 accept(ASTVisitor visitor) => visitor.visitSimpleIdentifier(this); |
| 9137 Token get beginToken => _token; | 10669 Token get beginToken => _token; |
| 9138 Element get element => _element; | 10670 Element get element => _propagatedElement; |
| 9139 Token get endToken => _token; | 10671 Token get endToken => _token; |
| 9140 String get name => _token.lexeme; | 10672 String get name => _token.lexeme; |
| 10673 Element get staticElement => _staticElement; |
| 10674 |
| 9141 /** | 10675 /** |
| 9142 * Return the token representing the identifier. | 10676 * Return the token representing the identifier. |
| 9143 * @return the token representing the identifier | 10677 * @return the token representing the identifier |
| 9144 */ | 10678 */ |
| 9145 Token get token => _token; | 10679 Token get token => _token; |
| 10680 |
| 9146 /** | 10681 /** |
| 9147 * Return {@code true} if this identifier is the name being declared in a decl
aration. | 10682 * Return {@code true} if this identifier is the name being declared in a decl
aration. |
| 9148 * @return {@code true} if this identifier is the name being declared in a dec
laration | 10683 * @return {@code true} if this identifier is the name being declared in a dec
laration |
| 9149 */ | 10684 */ |
| 9150 bool inDeclarationContext() { | 10685 bool inDeclarationContext() { |
| 9151 ASTNode parent2 = parent; | 10686 ASTNode parent2 = parent; |
| 9152 if (parent2 is CatchClause) { | 10687 if (parent2 is CatchClause) { |
| 9153 CatchClause clause = parent2 as CatchClause; | 10688 CatchClause clause = parent2 as CatchClause; |
| 9154 return identical(this, clause.exceptionParameter) || identical(this, claus
e.stackTraceParameter); | 10689 return identical(this, clause.exceptionParameter) || identical(this, claus
e.stackTraceParameter); |
| 9155 } else if (parent2 is ClassDeclaration) { | 10690 } else if (parent2 is ClassDeclaration) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 9168 return identical(this, ((parent2 as MethodDeclaration)).name); | 10703 return identical(this, ((parent2 as MethodDeclaration)).name); |
| 9169 } else if (parent2 is FunctionTypedFormalParameter || parent2 is SimpleForma
lParameter) { | 10704 } else if (parent2 is FunctionTypedFormalParameter || parent2 is SimpleForma
lParameter) { |
| 9170 return identical(this, ((parent2 as NormalFormalParameter)).identifier); | 10705 return identical(this, ((parent2 as NormalFormalParameter)).identifier); |
| 9171 } else if (parent2 is TypeParameter) { | 10706 } else if (parent2 is TypeParameter) { |
| 9172 return identical(this, ((parent2 as TypeParameter)).name); | 10707 return identical(this, ((parent2 as TypeParameter)).name); |
| 9173 } else if (parent2 is VariableDeclaration) { | 10708 } else if (parent2 is VariableDeclaration) { |
| 9174 return identical(this, ((parent2 as VariableDeclaration)).name); | 10709 return identical(this, ((parent2 as VariableDeclaration)).name); |
| 9175 } | 10710 } |
| 9176 return false; | 10711 return false; |
| 9177 } | 10712 } |
| 10713 |
| 9178 /** | 10714 /** |
| 9179 * Return {@code true} if this expression is computing a right-hand value. | 10715 * Return {@code true} if this expression is computing a right-hand value. |
| 9180 * <p> | 10716 * <p> |
| 9181 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are | 10717 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are |
| 9182 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. | 10718 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. |
| 9183 * @return {@code true} if this expression is in a context where a getter will
be invoked | 10719 * @return {@code true} if this expression is in a context where a getter will
be invoked |
| 9184 */ | 10720 */ |
| 9185 bool inGetterContext() { | 10721 bool inGetterContext() { |
| 9186 ASTNode parent2 = parent; | 10722 ASTNode parent2 = parent; |
| 9187 ASTNode target = this; | 10723 ASTNode target = this; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 9204 return false; | 10740 return false; |
| 9205 } | 10741 } |
| 9206 if (parent2 is AssignmentExpression) { | 10742 if (parent2 is AssignmentExpression) { |
| 9207 AssignmentExpression expr = parent2 as AssignmentExpression; | 10743 AssignmentExpression expr = parent2 as AssignmentExpression; |
| 9208 if (identical(expr.leftHandSide, target) && identical(expr.operator.type,
TokenType.EQ)) { | 10744 if (identical(expr.leftHandSide, target) && identical(expr.operator.type,
TokenType.EQ)) { |
| 9209 return false; | 10745 return false; |
| 9210 } | 10746 } |
| 9211 } | 10747 } |
| 9212 return true; | 10748 return true; |
| 9213 } | 10749 } |
| 10750 |
| 9214 /** | 10751 /** |
| 9215 * Return {@code true} if this expression is computing a left-hand value. | 10752 * Return {@code true} if this expression is computing a left-hand value. |
| 9216 * <p> | 10753 * <p> |
| 9217 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are | 10754 * Note that {@link #inGetterContext()} and {@link #inSetterContext()} are not
opposites, nor are |
| 9218 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. | 10755 * they mutually exclusive. In other words, it is possible for both methods to
return {@code true}when invoked on the same node. |
| 9219 * @return {@code true} if this expression is in a context where a setter will
be invoked | 10756 * @return {@code true} if this expression is in a context where a setter will
be invoked |
| 9220 */ | 10757 */ |
| 9221 bool inSetterContext() { | 10758 bool inSetterContext() { |
| 9222 ASTNode parent2 = parent; | 10759 ASTNode parent2 = parent; |
| 9223 ASTNode target = this; | 10760 ASTNode target = this; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 9239 if (parent2 is PrefixExpression) { | 10776 if (parent2 is PrefixExpression) { |
| 9240 return ((parent2 as PrefixExpression)).operator.type.isIncrementOperator()
; | 10777 return ((parent2 as PrefixExpression)).operator.type.isIncrementOperator()
; |
| 9241 } else if (parent2 is PostfixExpression) { | 10778 } else if (parent2 is PostfixExpression) { |
| 9242 return true; | 10779 return true; |
| 9243 } else if (parent2 is AssignmentExpression) { | 10780 } else if (parent2 is AssignmentExpression) { |
| 9244 return identical(((parent2 as AssignmentExpression)).leftHandSide, target)
; | 10781 return identical(((parent2 as AssignmentExpression)).leftHandSide, target)
; |
| 9245 } | 10782 } |
| 9246 return false; | 10783 return false; |
| 9247 } | 10784 } |
| 9248 bool isSynthetic() => _token.isSynthetic(); | 10785 bool isSynthetic() => _token.isSynthetic(); |
| 10786 |
| 9249 /** | 10787 /** |
| 9250 * Set the element associated with this identifier to the given element. | 10788 * Set the element associated with this identifier based on propagated type in
formation to the |
| 9251 * @param element the element associated with this identifier | 10789 * given element. |
| 10790 * @param element the element to be associated with this identifier |
| 9252 */ | 10791 */ |
| 9253 void set element(Element element2) { | 10792 void set element(Element element2) { |
| 9254 this._element = element2; | 10793 _propagatedElement = element2; |
| 9255 } | 10794 } |
| 10795 |
| 10796 /** |
| 10797 * Set the element associated with this identifier based on static type inform
ation to the given |
| 10798 * element. |
| 10799 * @param element the element to be associated with this identifier |
| 10800 */ |
| 10801 void set staticElement(Element element) { |
| 10802 _staticElement = element; |
| 10803 } |
| 10804 |
| 9256 /** | 10805 /** |
| 9257 * Set the token representing the identifier to the given token. | 10806 * Set the token representing the identifier to the given token. |
| 9258 * @param token the token representing the literal | 10807 * @param token the token representing the literal |
| 9259 */ | 10808 */ |
| 9260 void set token(Token token2) { | 10809 void set token(Token token2) { |
| 9261 this._token = token2; | 10810 this._token = token2; |
| 9262 } | 10811 } |
| 9263 void visitChildren(ASTVisitor<Object> visitor) { | 10812 void visitChildren(ASTVisitor<Object> visitor) { |
| 9264 } | 10813 } |
| 9265 } | 10814 } |
| 10815 |
| 9266 /** | 10816 /** |
| 9267 * Instances of the class {@code SimpleStringLiteral} represent a string literal
expression that | 10817 * Instances of the class {@code SimpleStringLiteral} represent a string literal
expression that |
| 9268 * does not contain any interpolations. | 10818 * does not contain any interpolations. |
| 9269 * <pre> | 10819 * <pre> |
| 9270 * simpleStringLiteral ::= | 10820 * simpleStringLiteral ::= |
| 9271 * rawStringLiteral | 10821 * rawStringLiteral |
| 9272 * | basicStringLiteral | 10822 * | basicStringLiteral |
| 9273 * rawStringLiteral ::= | 10823 * rawStringLiteral ::= |
| 9274 * '@' basicStringLiteral | 10824 * '@' basicStringLiteral |
| 9275 * simpleStringLiteral ::= | 10825 * simpleStringLiteral ::= |
| 9276 * multiLineStringLiteral | 10826 * multiLineStringLiteral |
| 9277 * | singleLineStringLiteral | 10827 * | singleLineStringLiteral |
| 9278 * multiLineStringLiteral ::= | 10828 * multiLineStringLiteral ::= |
| 9279 * "'''" characters "'''" | 10829 * "'''" characters "'''" |
| 9280 * | '"""' characters '"""' | 10830 * | '"""' characters '"""' |
| 9281 * singleLineStringLiteral ::= | 10831 * singleLineStringLiteral ::= |
| 9282 * "'" characters "'" | 10832 * "'" characters "'" |
| 9283 * '"' characters '"' | 10833 * '"' characters '"' |
| 9284 * </pre> | 10834 * </pre> |
| 9285 * @coverage dart.engine.ast | 10835 * @coverage dart.engine.ast |
| 9286 */ | 10836 */ |
| 9287 class SimpleStringLiteral extends StringLiteral { | 10837 class SimpleStringLiteral extends StringLiteral { |
| 10838 |
| 9288 /** | 10839 /** |
| 9289 * The token representing the literal. | 10840 * The token representing the literal. |
| 9290 */ | 10841 */ |
| 9291 Token _literal; | 10842 Token _literal; |
| 10843 |
| 9292 /** | 10844 /** |
| 9293 * The value of the literal. | 10845 * The value of the literal. |
| 9294 */ | 10846 */ |
| 9295 String _value; | 10847 String _value; |
| 10848 |
| 9296 /** | 10849 /** |
| 9297 * Initialize a newly created simple string literal. | 10850 * Initialize a newly created simple string literal. |
| 9298 * @param literal the token representing the literal | 10851 * @param literal the token representing the literal |
| 9299 * @param value the value of the literal | 10852 * @param value the value of the literal |
| 9300 */ | 10853 */ |
| 9301 SimpleStringLiteral.full(Token literal, String value) { | 10854 SimpleStringLiteral.full(Token literal, String value) { |
| 9302 this._literal = literal; | 10855 this._literal = literal; |
| 9303 this._value = StringUtilities.intern(value); | 10856 this._value = StringUtilities.intern(value); |
| 9304 } | 10857 } |
| 10858 |
| 9305 /** | 10859 /** |
| 9306 * Initialize a newly created simple string literal. | 10860 * Initialize a newly created simple string literal. |
| 9307 * @param literal the token representing the literal | 10861 * @param literal the token representing the literal |
| 9308 * @param value the value of the literal | 10862 * @param value the value of the literal |
| 9309 */ | 10863 */ |
| 9310 SimpleStringLiteral({Token literal, String value}) : this.full(literal, value)
; | 10864 SimpleStringLiteral({Token literal, String value}) : this.full(literal, value)
; |
| 9311 accept(ASTVisitor visitor) => visitor.visitSimpleStringLiteral(this); | 10865 accept(ASTVisitor visitor) => visitor.visitSimpleStringLiteral(this); |
| 9312 Token get beginToken => _literal; | 10866 Token get beginToken => _literal; |
| 9313 Token get endToken => _literal; | 10867 Token get endToken => _literal; |
| 10868 |
| 9314 /** | 10869 /** |
| 9315 * Return the token representing the literal. | 10870 * Return the token representing the literal. |
| 9316 * @return the token representing the literal | 10871 * @return the token representing the literal |
| 9317 */ | 10872 */ |
| 9318 Token get literal => _literal; | 10873 Token get literal => _literal; |
| 10874 |
| 9319 /** | 10875 /** |
| 9320 * Return the value of the literal. | 10876 * Return the value of the literal. |
| 9321 * @return the value of the literal | 10877 * @return the value of the literal |
| 9322 */ | 10878 */ |
| 9323 String get value => _value; | 10879 String get value => _value; |
| 10880 |
| 9324 /** | 10881 /** |
| 9325 * Return {@code true} if this string literal is a multi-line string. | 10882 * Return {@code true} if this string literal is a multi-line string. |
| 9326 * @return {@code true} if this string literal is a multi-line string | 10883 * @return {@code true} if this string literal is a multi-line string |
| 9327 */ | 10884 */ |
| 9328 bool isMultiline() { | 10885 bool isMultiline() { |
| 9329 if (_value.length < 6) { | 10886 if (_value.length < 6) { |
| 9330 return false; | 10887 return false; |
| 9331 } | 10888 } |
| 9332 return _value.endsWith("\"\"\"") || _value.endsWith("'''"); | 10889 return _value.endsWith("\"\"\"") || _value.endsWith("'''"); |
| 9333 } | 10890 } |
| 10891 |
| 9334 /** | 10892 /** |
| 9335 * Return {@code true} if this string literal is a raw string. | 10893 * Return {@code true} if this string literal is a raw string. |
| 9336 * @return {@code true} if this string literal is a raw string | 10894 * @return {@code true} if this string literal is a raw string |
| 9337 */ | 10895 */ |
| 9338 bool isRaw() => _value.codeUnitAt(0) == 0x40; | 10896 bool isRaw() => _value.codeUnitAt(0) == 0x40; |
| 9339 bool isSynthetic() => _literal.isSynthetic(); | 10897 bool isSynthetic() => _literal.isSynthetic(); |
| 10898 |
| 9340 /** | 10899 /** |
| 9341 * Set the token representing the literal to the given token. | 10900 * Set the token representing the literal to the given token. |
| 9342 * @param literal the token representing the literal | 10901 * @param literal the token representing the literal |
| 9343 */ | 10902 */ |
| 9344 void set literal(Token literal2) { | 10903 void set literal(Token literal2) { |
| 9345 this._literal = literal2; | 10904 this._literal = literal2; |
| 9346 } | 10905 } |
| 10906 |
| 9347 /** | 10907 /** |
| 9348 * Set the value of the literal to the given string. | 10908 * Set the value of the literal to the given string. |
| 9349 * @param string the value of the literal | 10909 * @param string the value of the literal |
| 9350 */ | 10910 */ |
| 9351 void set value(String string) { | 10911 void set value(String string) { |
| 9352 _value = StringUtilities.intern(_value); | 10912 _value = StringUtilities.intern(_value); |
| 9353 } | 10913 } |
| 9354 void visitChildren(ASTVisitor<Object> visitor) { | 10914 void visitChildren(ASTVisitor<Object> visitor) { |
| 9355 } | 10915 } |
| 10916 void appendStringValue(JavaStringBuilder builder) { |
| 10917 builder.append(value); |
| 10918 } |
| 9356 } | 10919 } |
| 10920 |
| 9357 /** | 10921 /** |
| 9358 * Instances of the class {@code Statement} defines the behavior common to nodes
that represent a | 10922 * Instances of the class {@code Statement} defines the behavior common to nodes
that represent a |
| 9359 * statement. | 10923 * statement. |
| 9360 * <pre> | 10924 * <pre> |
| 9361 * statement ::={@link Block block}| {@link VariableDeclarationStatement initial
izedVariableDeclaration ';'}| {@link ForStatement forStatement}| {@link ForEachS
tatement forEachStatement}| {@link WhileStatement whileStatement}| {@link DoStat
ement doStatement}| {@link SwitchStatement switchStatement}| {@link IfStatement
ifStatement}| {@link TryStatement tryStatement}| {@link BreakStatement breakStat
ement}| {@link ContinueStatement continueStatement}| {@link ReturnStatement retu
rnStatement}| {@link ExpressionStatement expressionStatement}| {@link FunctionDe
clarationStatement functionSignature functionBody}</pre> | 10925 * statement ::={@link Block block}| {@link VariableDeclarationStatement initial
izedVariableDeclaration ';'}| {@link ForStatement forStatement}| {@link ForEachS
tatement forEachStatement}| {@link WhileStatement whileStatement}| {@link DoStat
ement doStatement}| {@link SwitchStatement switchStatement}| {@link IfStatement
ifStatement}| {@link TryStatement tryStatement}| {@link BreakStatement breakStat
ement}| {@link ContinueStatement continueStatement}| {@link ReturnStatement retu
rnStatement}| {@link ExpressionStatement expressionStatement}| {@link FunctionDe
clarationStatement functionSignature functionBody}</pre> |
| 9362 * @coverage dart.engine.ast | 10926 * @coverage dart.engine.ast |
| 9363 */ | 10927 */ |
| 9364 abstract class Statement extends ASTNode { | 10928 abstract class Statement extends ASTNode { |
| 9365 } | 10929 } |
| 10930 |
| 9366 /** | 10931 /** |
| 9367 * Instances of the class {@code StringInterpolation} represent a string interpo
lation literal. | 10932 * Instances of the class {@code StringInterpolation} represent a string interpo
lation literal. |
| 9368 * <pre> | 10933 * <pre> |
| 9369 * stringInterpolation ::= | 10934 * stringInterpolation ::= |
| 9370 * ''' {@link InterpolationElement interpolationElement}* ''' | 10935 * ''' {@link InterpolationElement interpolationElement}* ''' |
| 9371 * | '"' {@link InterpolationElement interpolationElement}* '"' | 10936 * | '"' {@link InterpolationElement interpolationElement}* '"' |
| 9372 * </pre> | 10937 * </pre> |
| 9373 * @coverage dart.engine.ast | 10938 * @coverage dart.engine.ast |
| 9374 */ | 10939 */ |
| 9375 class StringInterpolation extends StringLiteral { | 10940 class StringInterpolation extends StringLiteral { |
| 10941 |
| 9376 /** | 10942 /** |
| 9377 * The elements that will be composed to produce the resulting string. | 10943 * The elements that will be composed to produce the resulting string. |
| 9378 */ | 10944 */ |
| 9379 NodeList<InterpolationElement> _elements; | 10945 NodeList<InterpolationElement> _elements; |
| 10946 |
| 9380 /** | 10947 /** |
| 9381 * Initialize a newly created string interpolation expression. | 10948 * Initialize a newly created string interpolation expression. |
| 9382 * @param elements the elements that will be composed to produce the resulting
string | 10949 * @param elements the elements that will be composed to produce the resulting
string |
| 9383 */ | 10950 */ |
| 9384 StringInterpolation.full(List<InterpolationElement> elements) { | 10951 StringInterpolation.full(List<InterpolationElement> elements) { |
| 9385 this._elements = new NodeList<InterpolationElement>(this); | 10952 this._elements = new NodeList<InterpolationElement>(this); |
| 9386 this._elements.addAll(elements); | 10953 this._elements.addAll(elements); |
| 9387 } | 10954 } |
| 10955 |
| 9388 /** | 10956 /** |
| 9389 * Initialize a newly created string interpolation expression. | 10957 * Initialize a newly created string interpolation expression. |
| 9390 * @param elements the elements that will be composed to produce the resulting
string | 10958 * @param elements the elements that will be composed to produce the resulting
string |
| 9391 */ | 10959 */ |
| 9392 StringInterpolation({List<InterpolationElement> elements}) : this.full(element
s); | 10960 StringInterpolation({List<InterpolationElement> elements}) : this.full(element
s); |
| 9393 accept(ASTVisitor visitor) => visitor.visitStringInterpolation(this); | 10961 accept(ASTVisitor visitor) => visitor.visitStringInterpolation(this); |
| 9394 Token get beginToken => _elements.beginToken; | 10962 Token get beginToken => _elements.beginToken; |
| 10963 |
| 9395 /** | 10964 /** |
| 9396 * Return the elements that will be composed to produce the resulting string. | 10965 * Return the elements that will be composed to produce the resulting string. |
| 9397 * @return the elements that will be composed to produce the resulting string | 10966 * @return the elements that will be composed to produce the resulting string |
| 9398 */ | 10967 */ |
| 9399 NodeList<InterpolationElement> get elements => _elements; | 10968 NodeList<InterpolationElement> get elements => _elements; |
| 9400 Token get endToken => _elements.endToken; | 10969 Token get endToken => _elements.endToken; |
| 9401 void visitChildren(ASTVisitor<Object> visitor) { | 10970 void visitChildren(ASTVisitor<Object> visitor) { |
| 9402 _elements.accept(visitor); | 10971 _elements.accept(visitor); |
| 9403 } | 10972 } |
| 10973 void appendStringValue(JavaStringBuilder builder) { |
| 10974 throw new IllegalArgumentException(); |
| 10975 } |
| 9404 } | 10976 } |
| 10977 |
| 9405 /** | 10978 /** |
| 9406 * Instances of the class {@code StringLiteral} represent a string literal expre
ssion. | 10979 * Instances of the class {@code StringLiteral} represent a string literal expre
ssion. |
| 9407 * <pre> | 10980 * <pre> |
| 9408 * stringLiteral ::={@link SimpleStringLiteral simpleStringLiteral}| {@link Adja
centStrings adjacentStrings}| {@link StringInterpolation stringInterpolation}</p
re> | 10981 * stringLiteral ::={@link SimpleStringLiteral simpleStringLiteral}| {@link Adja
centStrings adjacentStrings}| {@link StringInterpolation stringInterpolation}</p
re> |
| 9409 * @coverage dart.engine.ast | 10982 * @coverage dart.engine.ast |
| 9410 */ | 10983 */ |
| 9411 abstract class StringLiteral extends Literal { | 10984 abstract class StringLiteral extends Literal { |
| 10985 |
| 10986 /** |
| 10987 * Return the value of the string literal, or {@code null} if the string is no
t a constant string |
| 10988 * without any string interpolation. |
| 10989 * @return the value of the string literal |
| 10990 */ |
| 10991 String get stringValue { |
| 10992 JavaStringBuilder builder = new JavaStringBuilder(); |
| 10993 try { |
| 10994 appendStringValue(builder); |
| 10995 } on IllegalArgumentException catch (exception) { |
| 10996 return null; |
| 10997 } |
| 10998 return builder.toString(); |
| 10999 } |
| 11000 |
| 11001 /** |
| 11002 * Append the value of the given string literal to the given string builder. |
| 11003 * @param builder the builder to which the string's value is to be appended |
| 11004 * @throws IllegalArgumentException if the string is not a constant string wit
hout any string |
| 11005 * interpolation |
| 11006 */ |
| 11007 void appendStringValue(JavaStringBuilder builder); |
| 9412 } | 11008 } |
| 11009 |
| 9413 /** | 11010 /** |
| 9414 * Instances of the class {@code SuperConstructorInvocation} represent the invoc
ation of a | 11011 * Instances of the class {@code SuperConstructorInvocation} represent the invoc
ation of a |
| 9415 * superclass' constructor from within a constructor's initialization list. | 11012 * superclass' constructor from within a constructor's initialization list. |
| 9416 * <pre> | 11013 * <pre> |
| 9417 * superInvocation ::= | 11014 * superInvocation ::= |
| 9418 * 'super' ('.' {@link SimpleIdentifier name})? {@link ArgumentList argumentList
}</pre> | 11015 * 'super' ('.' {@link SimpleIdentifier name})? {@link ArgumentList argumentList
}</pre> |
| 9419 * @coverage dart.engine.ast | 11016 * @coverage dart.engine.ast |
| 9420 */ | 11017 */ |
| 9421 class SuperConstructorInvocation extends ConstructorInitializer { | 11018 class SuperConstructorInvocation extends ConstructorInitializer { |
| 11019 |
| 9422 /** | 11020 /** |
| 9423 * The token for the 'super' keyword. | 11021 * The token for the 'super' keyword. |
| 9424 */ | 11022 */ |
| 9425 Token _keyword; | 11023 Token _keyword; |
| 11024 |
| 9426 /** | 11025 /** |
| 9427 * The token for the period before the name of the constructor that is being i
nvoked, or{@code null} if the unnamed constructor is being invoked. | 11026 * The token for the period before the name of the constructor that is being i
nvoked, or{@code null} if the unnamed constructor is being invoked. |
| 9428 */ | 11027 */ |
| 9429 Token _period; | 11028 Token _period; |
| 11029 |
| 9430 /** | 11030 /** |
| 9431 * The name of the constructor that is being invoked, or {@code null} if the u
nnamed constructor | 11031 * The name of the constructor that is being invoked, or {@code null} if the u
nnamed constructor |
| 9432 * is being invoked. | 11032 * is being invoked. |
| 9433 */ | 11033 */ |
| 9434 SimpleIdentifier _constructorName; | 11034 SimpleIdentifier _constructorName; |
| 11035 |
| 9435 /** | 11036 /** |
| 9436 * The list of arguments to the constructor. | 11037 * The list of arguments to the constructor. |
| 9437 */ | 11038 */ |
| 9438 ArgumentList _argumentList; | 11039 ArgumentList _argumentList; |
| 11040 |
| 9439 /** | 11041 /** |
| 9440 * The element associated with the constructor, or {@code null} if the AST str
ucture has not been | 11042 * The element associated with the constructor based on static type informatio
n, or {@code null}if the AST structure has not been resolved or if the construct
or could not be resolved. |
| 11043 */ |
| 11044 ConstructorElement _staticElement; |
| 11045 |
| 11046 /** |
| 11047 * The element associated with the constructor based on propagated type inform
ation, or {@code null} if the AST structure has not been |
| 9441 * resolved or if the constructor could not be resolved. | 11048 * resolved or if the constructor could not be resolved. |
| 9442 */ | 11049 */ |
| 9443 ConstructorElement _element; | 11050 ConstructorElement _propagatedElement; |
| 11051 |
| 9444 /** | 11052 /** |
| 9445 * Initialize a newly created super invocation to invoke the inherited constru
ctor with the given | 11053 * Initialize a newly created super invocation to invoke the inherited constru
ctor with the given |
| 9446 * name with the given arguments. | 11054 * name with the given arguments. |
| 9447 * @param keyword the token for the 'super' keyword | 11055 * @param keyword the token for the 'super' keyword |
| 9448 * @param period the token for the period before the name of the constructor t
hat is being invoked | 11056 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 9449 * @param constructorName the name of the constructor that is being invoked | 11057 * @param constructorName the name of the constructor that is being invoked |
| 9450 * @param argumentList the list of arguments to the constructor | 11058 * @param argumentList the list of arguments to the constructor |
| 9451 */ | 11059 */ |
| 9452 SuperConstructorInvocation.full(Token keyword, Token period, SimpleIdentifier
constructorName, ArgumentList argumentList) { | 11060 SuperConstructorInvocation.full(Token keyword, Token period, SimpleIdentifier
constructorName, ArgumentList argumentList) { |
| 9453 this._keyword = keyword; | 11061 this._keyword = keyword; |
| 9454 this._period = period; | 11062 this._period = period; |
| 9455 this._constructorName = becomeParentOf(constructorName); | 11063 this._constructorName = becomeParentOf(constructorName); |
| 9456 this._argumentList = becomeParentOf(argumentList); | 11064 this._argumentList = becomeParentOf(argumentList); |
| 9457 } | 11065 } |
| 11066 |
| 9458 /** | 11067 /** |
| 9459 * Initialize a newly created super invocation to invoke the inherited constru
ctor with the given | 11068 * Initialize a newly created super invocation to invoke the inherited constru
ctor with the given |
| 9460 * name with the given arguments. | 11069 * name with the given arguments. |
| 9461 * @param keyword the token for the 'super' keyword | 11070 * @param keyword the token for the 'super' keyword |
| 9462 * @param period the token for the period before the name of the constructor t
hat is being invoked | 11071 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 9463 * @param constructorName the name of the constructor that is being invoked | 11072 * @param constructorName the name of the constructor that is being invoked |
| 9464 * @param argumentList the list of arguments to the constructor | 11073 * @param argumentList the list of arguments to the constructor |
| 9465 */ | 11074 */ |
| 9466 SuperConstructorInvocation({Token keyword, Token period, SimpleIdentifier cons
tructorName, ArgumentList argumentList}) : this.full(keyword, period, constructo
rName, argumentList); | 11075 SuperConstructorInvocation({Token keyword, Token period, SimpleIdentifier cons
tructorName, ArgumentList argumentList}) : this.full(keyword, period, constructo
rName, argumentList); |
| 9467 accept(ASTVisitor visitor) => visitor.visitSuperConstructorInvocation(this); | 11076 accept(ASTVisitor visitor) => visitor.visitSuperConstructorInvocation(this); |
| 11077 |
| 9468 /** | 11078 /** |
| 9469 * Return the list of arguments to the constructor. | 11079 * Return the list of arguments to the constructor. |
| 9470 * @return the list of arguments to the constructor | 11080 * @return the list of arguments to the constructor |
| 9471 */ | 11081 */ |
| 9472 ArgumentList get argumentList => _argumentList; | 11082 ArgumentList get argumentList => _argumentList; |
| 9473 Token get beginToken => _keyword; | 11083 Token get beginToken => _keyword; |
| 11084 |
| 9474 /** | 11085 /** |
| 9475 * Return the name of the constructor that is being invoked, or {@code null} i
f the unnamed | 11086 * Return the name of the constructor that is being invoked, or {@code null} i
f the unnamed |
| 9476 * constructor is being invoked. | 11087 * constructor is being invoked. |
| 9477 * @return the name of the constructor that is being invoked | 11088 * @return the name of the constructor that is being invoked |
| 9478 */ | 11089 */ |
| 9479 SimpleIdentifier get constructorName => _constructorName; | 11090 SimpleIdentifier get constructorName => _constructorName; |
| 11091 |
| 9480 /** | 11092 /** |
| 9481 * Return the element associated with the constructor, or {@code null} if the
AST structure has | 11093 * 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 th
e constructor could not be |
| 9482 * not been resolved or if the constructor could not be resolved. | 11094 * resolved. |
| 9483 * @return the element associated with the super constructor | 11095 * @return the element associated with the super constructor |
| 9484 */ | 11096 */ |
| 9485 ConstructorElement get element => _element; | 11097 ConstructorElement get element => _propagatedElement; |
| 9486 Token get endToken => _argumentList.endToken; | 11098 Token get endToken => _argumentList.endToken; |
| 11099 |
| 9487 /** | 11100 /** |
| 9488 * Return the token for the 'super' keyword. | 11101 * Return the token for the 'super' keyword. |
| 9489 * @return the token for the 'super' keyword | 11102 * @return the token for the 'super' keyword |
| 9490 */ | 11103 */ |
| 9491 Token get keyword => _keyword; | 11104 Token get keyword => _keyword; |
| 11105 |
| 9492 /** | 11106 /** |
| 9493 * 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. | 11107 * 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. |
| 9494 * @return the token for the period before the name of the constructor that is
being invoked | 11108 * @return the token for the period before the name of the constructor that is
being invoked |
| 9495 */ | 11109 */ |
| 9496 Token get period => _period; | 11110 Token get period => _period; |
| 11111 |
| 11112 /** |
| 11113 * Return the element associated with the constructor based on static type inf
ormation, or{@code null} if the AST structure has not been resolved or if the co
nstructor could not be |
| 11114 * resolved. |
| 11115 * @return the element associated with the constructor |
| 11116 */ |
| 11117 ConstructorElement get staticElement => _staticElement; |
| 11118 |
| 9497 /** | 11119 /** |
| 9498 * Set the list of arguments to the constructor to the given list. | 11120 * Set the list of arguments to the constructor to the given list. |
| 9499 * @param argumentList the list of arguments to the constructor | 11121 * @param argumentList the list of arguments to the constructor |
| 9500 */ | 11122 */ |
| 9501 void set argumentList(ArgumentList argumentList2) { | 11123 void set argumentList(ArgumentList argumentList2) { |
| 9502 this._argumentList = becomeParentOf(argumentList2); | 11124 this._argumentList = becomeParentOf(argumentList2); |
| 9503 } | 11125 } |
| 11126 |
| 9504 /** | 11127 /** |
| 9505 * Set the name of the constructor that is being invoked to the given identifi
er. | 11128 * Set the name of the constructor that is being invoked to the given identifi
er. |
| 9506 * @param identifier the name of the constructor that is being invoked | 11129 * @param identifier the name of the constructor that is being invoked |
| 9507 */ | 11130 */ |
| 9508 void set constructorName(SimpleIdentifier identifier) { | 11131 void set constructorName(SimpleIdentifier identifier) { |
| 9509 _constructorName = becomeParentOf(identifier); | 11132 _constructorName = becomeParentOf(identifier); |
| 9510 } | 11133 } |
| 11134 |
| 9511 /** | 11135 /** |
| 9512 * Set the element associated with the constructor to the given element. | 11136 * Set the element associated with the constructor based on propagated type in
formation to the |
| 9513 * @param element the element associated with the constructor | 11137 * given element. |
| 11138 * @param element the element to be associated with the constructor |
| 9514 */ | 11139 */ |
| 9515 void set element(ConstructorElement element2) { | 11140 void set element(ConstructorElement element2) { |
| 9516 this._element = element2; | 11141 _propagatedElement = element2; |
| 9517 } | 11142 } |
| 11143 |
| 9518 /** | 11144 /** |
| 9519 * Set the token for the 'super' keyword to the given token. | 11145 * Set the token for the 'super' keyword to the given token. |
| 9520 * @param keyword the token for the 'super' keyword | 11146 * @param keyword the token for the 'super' keyword |
| 9521 */ | 11147 */ |
| 9522 void set keyword(Token keyword2) { | 11148 void set keyword(Token keyword2) { |
| 9523 this._keyword = keyword2; | 11149 this._keyword = keyword2; |
| 9524 } | 11150 } |
| 11151 |
| 9525 /** | 11152 /** |
| 9526 * Set the token for the period before the name of the constructor that is bei
ng invoked to the | 11153 * Set the token for the period before the name of the constructor that is bei
ng invoked to the |
| 9527 * given token. | 11154 * given token. |
| 9528 * @param period the token for the period before the name of the constructor t
hat is being invoked | 11155 * @param period the token for the period before the name of the constructor t
hat is being invoked |
| 9529 */ | 11156 */ |
| 9530 void set period(Token period2) { | 11157 void set period(Token period2) { |
| 9531 this._period = period2; | 11158 this._period = period2; |
| 9532 } | 11159 } |
| 11160 |
| 11161 /** |
| 11162 * Set the element associated with the constructor based on static type inform
ation to the given |
| 11163 * element. |
| 11164 * @param element the element to be associated with the constructor |
| 11165 */ |
| 11166 void set staticElement(ConstructorElement element) { |
| 11167 this._staticElement = element; |
| 11168 } |
| 9533 void visitChildren(ASTVisitor<Object> visitor) { | 11169 void visitChildren(ASTVisitor<Object> visitor) { |
| 9534 safelyVisitChild(_constructorName, visitor); | 11170 safelyVisitChild(_constructorName, visitor); |
| 9535 safelyVisitChild(_argumentList, visitor); | 11171 safelyVisitChild(_argumentList, visitor); |
| 9536 } | 11172 } |
| 9537 } | 11173 } |
| 11174 |
| 9538 /** | 11175 /** |
| 9539 * Instances of the class {@code SuperExpression} represent a super expression. | 11176 * Instances of the class {@code SuperExpression} represent a super expression. |
| 9540 * <pre> | 11177 * <pre> |
| 9541 * superExpression ::= | 11178 * superExpression ::= |
| 9542 * 'super' | 11179 * 'super' |
| 9543 * </pre> | 11180 * </pre> |
| 9544 * @coverage dart.engine.ast | 11181 * @coverage dart.engine.ast |
| 9545 */ | 11182 */ |
| 9546 class SuperExpression extends Expression { | 11183 class SuperExpression extends Expression { |
| 11184 |
| 9547 /** | 11185 /** |
| 9548 * The token representing the keyword. | 11186 * The token representing the keyword. |
| 9549 */ | 11187 */ |
| 9550 Token _keyword; | 11188 Token _keyword; |
| 11189 |
| 9551 /** | 11190 /** |
| 9552 * Initialize a newly created super expression. | 11191 * Initialize a newly created super expression. |
| 9553 * @param keyword the token representing the keyword | 11192 * @param keyword the token representing the keyword |
| 9554 */ | 11193 */ |
| 9555 SuperExpression.full(Token keyword) { | 11194 SuperExpression.full(Token keyword) { |
| 9556 this._keyword = keyword; | 11195 this._keyword = keyword; |
| 9557 } | 11196 } |
| 11197 |
| 9558 /** | 11198 /** |
| 9559 * Initialize a newly created super expression. | 11199 * Initialize a newly created super expression. |
| 9560 * @param keyword the token representing the keyword | 11200 * @param keyword the token representing the keyword |
| 9561 */ | 11201 */ |
| 9562 SuperExpression({Token keyword}) : this.full(keyword); | 11202 SuperExpression({Token keyword}) : this.full(keyword); |
| 9563 accept(ASTVisitor visitor) => visitor.visitSuperExpression(this); | 11203 accept(ASTVisitor visitor) => visitor.visitSuperExpression(this); |
| 9564 Token get beginToken => _keyword; | 11204 Token get beginToken => _keyword; |
| 9565 Token get endToken => _keyword; | 11205 Token get endToken => _keyword; |
| 11206 |
| 9566 /** | 11207 /** |
| 9567 * Return the token representing the keyword. | 11208 * Return the token representing the keyword. |
| 9568 * @return the token representing the keyword | 11209 * @return the token representing the keyword |
| 9569 */ | 11210 */ |
| 9570 Token get keyword => _keyword; | 11211 Token get keyword => _keyword; |
| 11212 |
| 9571 /** | 11213 /** |
| 9572 * Set the token representing the keyword to the given token. | 11214 * Set the token representing the keyword to the given token. |
| 9573 * @param keyword the token representing the keyword | 11215 * @param keyword the token representing the keyword |
| 9574 */ | 11216 */ |
| 9575 void set keyword(Token keyword2) { | 11217 void set keyword(Token keyword2) { |
| 9576 this._keyword = keyword2; | 11218 this._keyword = keyword2; |
| 9577 } | 11219 } |
| 9578 void visitChildren(ASTVisitor<Object> visitor) { | 11220 void visitChildren(ASTVisitor<Object> visitor) { |
| 9579 } | 11221 } |
| 9580 } | 11222 } |
| 11223 |
| 9581 /** | 11224 /** |
| 9582 * Instances of the class {@code SwitchCase} represent the case in a switch stat
ement. | 11225 * Instances of the class {@code SwitchCase} represent the case in a switch stat
ement. |
| 9583 * <pre> | 11226 * <pre> |
| 9584 * switchCase ::={@link SimpleIdentifier label}* 'case' {@link Expression expres
sion} ':' {@link Statement statement}</pre> | 11227 * switchCase ::={@link SimpleIdentifier label}* 'case' {@link Expression expres
sion} ':' {@link Statement statement}</pre> |
| 9585 * @coverage dart.engine.ast | 11228 * @coverage dart.engine.ast |
| 9586 */ | 11229 */ |
| 9587 class SwitchCase extends SwitchMember { | 11230 class SwitchCase extends SwitchMember { |
| 11231 |
| 9588 /** | 11232 /** |
| 9589 * The expression controlling whether the statements will be executed. | 11233 * The expression controlling whether the statements will be executed. |
| 9590 */ | 11234 */ |
| 9591 Expression _expression; | 11235 Expression _expression; |
| 11236 |
| 9592 /** | 11237 /** |
| 9593 * Initialize a newly created switch case. | 11238 * Initialize a newly created switch case. |
| 9594 * @param labels the labels associated with the switch member | 11239 * @param labels the labels associated with the switch member |
| 9595 * @param keyword the token representing the 'case' or 'default' keyword | 11240 * @param keyword the token representing the 'case' or 'default' keyword |
| 9596 * @param expression the expression controlling whether the statements will be
executed | 11241 * @param expression the expression controlling whether the statements will be
executed |
| 9597 * @param colon the colon separating the keyword or the expression from the st
atements | 11242 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9598 * @param statements the statements that will be executed if this switch membe
r is selected | 11243 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9599 */ | 11244 */ |
| 9600 SwitchCase.full(List<Label> labels, Token keyword, Expression expression, Toke
n colon, List<Statement> statements) : super.full(labels, keyword, colon, statem
ents) { | 11245 SwitchCase.full(List<Label> labels, Token keyword, Expression expression, Toke
n colon, List<Statement> statements) : super.full(labels, keyword, colon, statem
ents) { |
| 9601 this._expression = becomeParentOf(expression); | 11246 this._expression = becomeParentOf(expression); |
| 9602 } | 11247 } |
| 11248 |
| 9603 /** | 11249 /** |
| 9604 * Initialize a newly created switch case. | 11250 * Initialize a newly created switch case. |
| 9605 * @param labels the labels associated with the switch member | 11251 * @param labels the labels associated with the switch member |
| 9606 * @param keyword the token representing the 'case' or 'default' keyword | 11252 * @param keyword the token representing the 'case' or 'default' keyword |
| 9607 * @param expression the expression controlling whether the statements will be
executed | 11253 * @param expression the expression controlling whether the statements will be
executed |
| 9608 * @param colon the colon separating the keyword or the expression from the st
atements | 11254 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9609 * @param statements the statements that will be executed if this switch membe
r is selected | 11255 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9610 */ | 11256 */ |
| 9611 SwitchCase({List<Label> labels, Token keyword, Expression expression, Token co
lon, List<Statement> statements}) : this.full(labels, keyword, expression, colon
, statements); | 11257 SwitchCase({List<Label> labels, Token keyword, Expression expression, Token co
lon, List<Statement> statements}) : this.full(labels, keyword, expression, colon
, statements); |
| 9612 accept(ASTVisitor visitor) => visitor.visitSwitchCase(this); | 11258 accept(ASTVisitor visitor) => visitor.visitSwitchCase(this); |
| 11259 |
| 9613 /** | 11260 /** |
| 9614 * Return the expression controlling whether the statements will be executed. | 11261 * Return the expression controlling whether the statements will be executed. |
| 9615 * @return the expression controlling whether the statements will be executed | 11262 * @return the expression controlling whether the statements will be executed |
| 9616 */ | 11263 */ |
| 9617 Expression get expression => _expression; | 11264 Expression get expression => _expression; |
| 11265 |
| 9618 /** | 11266 /** |
| 9619 * Set the expression controlling whether the statements will be executed to t
he given expression. | 11267 * Set the expression controlling whether the statements will be executed to t
he given expression. |
| 9620 * @param expression the expression controlling whether the statements will be
executed | 11268 * @param expression the expression controlling whether the statements will be
executed |
| 9621 */ | 11269 */ |
| 9622 void set expression(Expression expression2) { | 11270 void set expression(Expression expression2) { |
| 9623 this._expression = becomeParentOf(expression2); | 11271 this._expression = becomeParentOf(expression2); |
| 9624 } | 11272 } |
| 9625 void visitChildren(ASTVisitor<Object> visitor) { | 11273 void visitChildren(ASTVisitor<Object> visitor) { |
| 9626 labels.accept(visitor); | 11274 labels.accept(visitor); |
| 9627 safelyVisitChild(_expression, visitor); | 11275 safelyVisitChild(_expression, visitor); |
| 9628 statements.accept(visitor); | 11276 statements.accept(visitor); |
| 9629 } | 11277 } |
| 9630 } | 11278 } |
| 11279 |
| 9631 /** | 11280 /** |
| 9632 * Instances of the class {@code SwitchDefault} represent the default case in a
switch statement. | 11281 * Instances of the class {@code SwitchDefault} represent the default case in a
switch statement. |
| 9633 * <pre> | 11282 * <pre> |
| 9634 * switchDefault ::={@link SimpleIdentifier label}* 'default' ':' {@link Stateme
nt statement}</pre> | 11283 * switchDefault ::={@link SimpleIdentifier label}* 'default' ':' {@link Stateme
nt statement}</pre> |
| 9635 * @coverage dart.engine.ast | 11284 * @coverage dart.engine.ast |
| 9636 */ | 11285 */ |
| 9637 class SwitchDefault extends SwitchMember { | 11286 class SwitchDefault extends SwitchMember { |
| 11287 |
| 9638 /** | 11288 /** |
| 9639 * Initialize a newly created switch default. | 11289 * Initialize a newly created switch default. |
| 9640 * @param labels the labels associated with the switch member | 11290 * @param labels the labels associated with the switch member |
| 9641 * @param keyword the token representing the 'case' or 'default' keyword | 11291 * @param keyword the token representing the 'case' or 'default' keyword |
| 9642 * @param colon the colon separating the keyword or the expression from the st
atements | 11292 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9643 * @param statements the statements that will be executed if this switch membe
r is selected | 11293 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9644 */ | 11294 */ |
| 9645 SwitchDefault.full(List<Label> labels, Token keyword, Token colon, List<Statem
ent> statements) : super.full(labels, keyword, colon, statements) { | 11295 SwitchDefault.full(List<Label> labels, Token keyword, Token colon, List<Statem
ent> statements) : super.full(labels, keyword, colon, statements) { |
| 9646 } | 11296 } |
| 11297 |
| 9647 /** | 11298 /** |
| 9648 * Initialize a newly created switch default. | 11299 * Initialize a newly created switch default. |
| 9649 * @param labels the labels associated with the switch member | 11300 * @param labels the labels associated with the switch member |
| 9650 * @param keyword the token representing the 'case' or 'default' keyword | 11301 * @param keyword the token representing the 'case' or 'default' keyword |
| 9651 * @param colon the colon separating the keyword or the expression from the st
atements | 11302 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9652 * @param statements the statements that will be executed if this switch membe
r is selected | 11303 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9653 */ | 11304 */ |
| 9654 SwitchDefault({List<Label> labels, Token keyword, Token colon, List<Statement>
statements}) : this.full(labels, keyword, colon, statements); | 11305 SwitchDefault({List<Label> labels, Token keyword, Token colon, List<Statement>
statements}) : this.full(labels, keyword, colon, statements); |
| 9655 accept(ASTVisitor visitor) => visitor.visitSwitchDefault(this); | 11306 accept(ASTVisitor visitor) => visitor.visitSwitchDefault(this); |
| 9656 void visitChildren(ASTVisitor<Object> visitor) { | 11307 void visitChildren(ASTVisitor<Object> visitor) { |
| 9657 labels.accept(visitor); | 11308 labels.accept(visitor); |
| 9658 statements.accept(visitor); | 11309 statements.accept(visitor); |
| 9659 } | 11310 } |
| 9660 } | 11311 } |
| 11312 |
| 9661 /** | 11313 /** |
| 9662 * The abstract class {@code SwitchMember} defines the behavior common to object
s representing | 11314 * The abstract class {@code SwitchMember} defines the behavior common to object
s representing |
| 9663 * elements within a switch statement. | 11315 * elements within a switch statement. |
| 9664 * <pre> | 11316 * <pre> |
| 9665 * switchMember ::= | 11317 * switchMember ::= |
| 9666 * switchCase | 11318 * switchCase |
| 9667 * | switchDefault | 11319 * | switchDefault |
| 9668 * </pre> | 11320 * </pre> |
| 9669 * @coverage dart.engine.ast | 11321 * @coverage dart.engine.ast |
| 9670 */ | 11322 */ |
| 9671 abstract class SwitchMember extends ASTNode { | 11323 abstract class SwitchMember extends ASTNode { |
| 11324 |
| 9672 /** | 11325 /** |
| 9673 * The labels associated with the switch member. | 11326 * The labels associated with the switch member. |
| 9674 */ | 11327 */ |
| 9675 NodeList<Label> _labels; | 11328 NodeList<Label> _labels; |
| 11329 |
| 9676 /** | 11330 /** |
| 9677 * The token representing the 'case' or 'default' keyword. | 11331 * The token representing the 'case' or 'default' keyword. |
| 9678 */ | 11332 */ |
| 9679 Token _keyword; | 11333 Token _keyword; |
| 11334 |
| 9680 /** | 11335 /** |
| 9681 * The colon separating the keyword or the expression from the statements. | 11336 * The colon separating the keyword or the expression from the statements. |
| 9682 */ | 11337 */ |
| 9683 Token _colon; | 11338 Token _colon; |
| 11339 |
| 9684 /** | 11340 /** |
| 9685 * The statements that will be executed if this switch member is selected. | 11341 * The statements that will be executed if this switch member is selected. |
| 9686 */ | 11342 */ |
| 9687 NodeList<Statement> _statements; | 11343 NodeList<Statement> _statements; |
| 11344 |
| 9688 /** | 11345 /** |
| 9689 * Initialize a newly created switch member. | 11346 * Initialize a newly created switch member. |
| 9690 * @param labels the labels associated with the switch member | 11347 * @param labels the labels associated with the switch member |
| 9691 * @param keyword the token representing the 'case' or 'default' keyword | 11348 * @param keyword the token representing the 'case' or 'default' keyword |
| 9692 * @param colon the colon separating the keyword or the expression from the st
atements | 11349 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9693 * @param statements the statements that will be executed if this switch membe
r is selected | 11350 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9694 */ | 11351 */ |
| 9695 SwitchMember.full(List<Label> labels, Token keyword, Token colon, List<Stateme
nt> statements) { | 11352 SwitchMember.full(List<Label> labels, Token keyword, Token colon, List<Stateme
nt> statements) { |
| 9696 this._labels = new NodeList<Label>(this); | 11353 this._labels = new NodeList<Label>(this); |
| 9697 this._statements = new NodeList<Statement>(this); | 11354 this._statements = new NodeList<Statement>(this); |
| 9698 this._labels.addAll(labels); | 11355 this._labels.addAll(labels); |
| 9699 this._keyword = keyword; | 11356 this._keyword = keyword; |
| 9700 this._colon = colon; | 11357 this._colon = colon; |
| 9701 this._statements.addAll(statements); | 11358 this._statements.addAll(statements); |
| 9702 } | 11359 } |
| 11360 |
| 9703 /** | 11361 /** |
| 9704 * Initialize a newly created switch member. | 11362 * Initialize a newly created switch member. |
| 9705 * @param labels the labels associated with the switch member | 11363 * @param labels the labels associated with the switch member |
| 9706 * @param keyword the token representing the 'case' or 'default' keyword | 11364 * @param keyword the token representing the 'case' or 'default' keyword |
| 9707 * @param colon the colon separating the keyword or the expression from the st
atements | 11365 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9708 * @param statements the statements that will be executed if this switch membe
r is selected | 11366 * @param statements the statements that will be executed if this switch membe
r is selected |
| 9709 */ | 11367 */ |
| 9710 SwitchMember({List<Label> labels, Token keyword, Token colon, List<Statement>
statements}) : this.full(labels, keyword, colon, statements); | 11368 SwitchMember({List<Label> labels, Token keyword, Token colon, List<Statement>
statements}) : this.full(labels, keyword, colon, statements); |
| 9711 Token get beginToken { | 11369 Token get beginToken { |
| 9712 if (!_labels.isEmpty) { | 11370 if (!_labels.isEmpty) { |
| 9713 return _labels.beginToken; | 11371 return _labels.beginToken; |
| 9714 } | 11372 } |
| 9715 return _keyword; | 11373 return _keyword; |
| 9716 } | 11374 } |
| 11375 |
| 9717 /** | 11376 /** |
| 9718 * Return the colon separating the keyword or the expression from the statemen
ts. | 11377 * Return the colon separating the keyword or the expression from the statemen
ts. |
| 9719 * @return the colon separating the keyword or the expression from the stateme
nts | 11378 * @return the colon separating the keyword or the expression from the stateme
nts |
| 9720 */ | 11379 */ |
| 9721 Token get colon => _colon; | 11380 Token get colon => _colon; |
| 9722 Token get endToken { | 11381 Token get endToken { |
| 9723 if (!_statements.isEmpty) { | 11382 if (!_statements.isEmpty) { |
| 9724 return _statements.endToken; | 11383 return _statements.endToken; |
| 9725 } | 11384 } |
| 9726 return _colon; | 11385 return _colon; |
| 9727 } | 11386 } |
| 11387 |
| 9728 /** | 11388 /** |
| 9729 * Return the token representing the 'case' or 'default' keyword. | 11389 * Return the token representing the 'case' or 'default' keyword. |
| 9730 * @return the token representing the 'case' or 'default' keyword | 11390 * @return the token representing the 'case' or 'default' keyword |
| 9731 */ | 11391 */ |
| 9732 Token get keyword => _keyword; | 11392 Token get keyword => _keyword; |
| 11393 |
| 9733 /** | 11394 /** |
| 9734 * Return the labels associated with the switch member. | 11395 * Return the labels associated with the switch member. |
| 9735 * @return the labels associated with the switch member | 11396 * @return the labels associated with the switch member |
| 9736 */ | 11397 */ |
| 9737 NodeList<Label> get labels => _labels; | 11398 NodeList<Label> get labels => _labels; |
| 11399 |
| 9738 /** | 11400 /** |
| 9739 * Return the statements that will be executed if this switch member is select
ed. | 11401 * Return the statements that will be executed if this switch member is select
ed. |
| 9740 * @return the statements that will be executed if this switch member is selec
ted | 11402 * @return the statements that will be executed if this switch member is selec
ted |
| 9741 */ | 11403 */ |
| 9742 NodeList<Statement> get statements => _statements; | 11404 NodeList<Statement> get statements => _statements; |
| 11405 |
| 9743 /** | 11406 /** |
| 9744 * Set the colon separating the keyword or the expression from the statements
to the given token. | 11407 * Set the colon separating the keyword or the expression from the statements
to the given token. |
| 9745 * @param colon the colon separating the keyword or the expression from the st
atements | 11408 * @param colon the colon separating the keyword or the expression from the st
atements |
| 9746 */ | 11409 */ |
| 9747 void set colon(Token colon2) { | 11410 void set colon(Token colon2) { |
| 9748 this._colon = colon2; | 11411 this._colon = colon2; |
| 9749 } | 11412 } |
| 11413 |
| 9750 /** | 11414 /** |
| 9751 * Set the token representing the 'case' or 'default' keyword to the given tok
en. | 11415 * Set the token representing the 'case' or 'default' keyword to the given tok
en. |
| 9752 * @param keyword the token representing the 'case' or 'default' keyword | 11416 * @param keyword the token representing the 'case' or 'default' keyword |
| 9753 */ | 11417 */ |
| 9754 void set keyword(Token keyword2) { | 11418 void set keyword(Token keyword2) { |
| 9755 this._keyword = keyword2; | 11419 this._keyword = keyword2; |
| 9756 } | 11420 } |
| 9757 } | 11421 } |
| 11422 |
| 9758 /** | 11423 /** |
| 9759 * Instances of the class {@code SwitchStatement} represent a switch statement. | 11424 * Instances of the class {@code SwitchStatement} represent a switch statement. |
| 9760 * <pre> | 11425 * <pre> |
| 9761 * switchStatement ::= | 11426 * switchStatement ::= |
| 9762 * 'switch' '(' {@link Expression expression} ')' '{' {@link SwitchCase switchCa
se}* {@link SwitchDefault defaultCase}? '}' | 11427 * 'switch' '(' {@link Expression expression} ')' '{' {@link SwitchCase switchCa
se}* {@link SwitchDefault defaultCase}? '}' |
| 9763 * </pre> | 11428 * </pre> |
| 9764 * @coverage dart.engine.ast | 11429 * @coverage dart.engine.ast |
| 9765 */ | 11430 */ |
| 9766 class SwitchStatement extends Statement { | 11431 class SwitchStatement extends Statement { |
| 11432 |
| 9767 /** | 11433 /** |
| 9768 * The token representing the 'switch' keyword. | 11434 * The token representing the 'switch' keyword. |
| 9769 */ | 11435 */ |
| 9770 Token _keyword; | 11436 Token _keyword; |
| 11437 |
| 9771 /** | 11438 /** |
| 9772 * The left parenthesis. | 11439 * The left parenthesis. |
| 9773 */ | 11440 */ |
| 9774 Token _leftParenthesis; | 11441 Token _leftParenthesis; |
| 11442 |
| 9775 /** | 11443 /** |
| 9776 * The expression used to determine which of the switch members will be select
ed. | 11444 * The expression used to determine which of the switch members will be select
ed. |
| 9777 */ | 11445 */ |
| 9778 Expression _expression; | 11446 Expression _expression; |
| 11447 |
| 9779 /** | 11448 /** |
| 9780 * The right parenthesis. | 11449 * The right parenthesis. |
| 9781 */ | 11450 */ |
| 9782 Token _rightParenthesis; | 11451 Token _rightParenthesis; |
| 11452 |
| 9783 /** | 11453 /** |
| 9784 * The left curly bracket. | 11454 * The left curly bracket. |
| 9785 */ | 11455 */ |
| 9786 Token _leftBracket; | 11456 Token _leftBracket; |
| 11457 |
| 9787 /** | 11458 /** |
| 9788 * The switch members that can be selected by the expression. | 11459 * The switch members that can be selected by the expression. |
| 9789 */ | 11460 */ |
| 9790 NodeList<SwitchMember> _members; | 11461 NodeList<SwitchMember> _members; |
| 11462 |
| 9791 /** | 11463 /** |
| 9792 * The right curly bracket. | 11464 * The right curly bracket. |
| 9793 */ | 11465 */ |
| 9794 Token _rightBracket; | 11466 Token _rightBracket; |
| 11467 |
| 9795 /** | 11468 /** |
| 9796 * Initialize a newly created switch statement. | 11469 * Initialize a newly created switch statement. |
| 9797 * @param keyword the token representing the 'switch' keyword | 11470 * @param keyword the token representing the 'switch' keyword |
| 9798 * @param leftParenthesis the left parenthesis | 11471 * @param leftParenthesis the left parenthesis |
| 9799 * @param expression the expression used to determine which of the switch memb
ers will be selected | 11472 * @param expression the expression used to determine which of the switch memb
ers will be selected |
| 9800 * @param rightParenthesis the right parenthesis | 11473 * @param rightParenthesis the right parenthesis |
| 9801 * @param leftBracket the left curly bracket | 11474 * @param leftBracket the left curly bracket |
| 9802 * @param members the switch members that can be selected by the expression | 11475 * @param members the switch members that can be selected by the expression |
| 9803 * @param rightBracket the right curly bracket | 11476 * @param rightBracket the right curly bracket |
| 9804 */ | 11477 */ |
| 9805 SwitchStatement.full(Token keyword, Token leftParenthesis, Expression expressi
on, Token rightParenthesis, Token leftBracket, List<SwitchMember> members, Token
rightBracket) { | 11478 SwitchStatement.full(Token keyword, Token leftParenthesis, Expression expressi
on, Token rightParenthesis, Token leftBracket, List<SwitchMember> members, Token
rightBracket) { |
| 9806 this._members = new NodeList<SwitchMember>(this); | 11479 this._members = new NodeList<SwitchMember>(this); |
| 9807 this._keyword = keyword; | 11480 this._keyword = keyword; |
| 9808 this._leftParenthesis = leftParenthesis; | 11481 this._leftParenthesis = leftParenthesis; |
| 9809 this._expression = becomeParentOf(expression); | 11482 this._expression = becomeParentOf(expression); |
| 9810 this._rightParenthesis = rightParenthesis; | 11483 this._rightParenthesis = rightParenthesis; |
| 9811 this._leftBracket = leftBracket; | 11484 this._leftBracket = leftBracket; |
| 9812 this._members.addAll(members); | 11485 this._members.addAll(members); |
| 9813 this._rightBracket = rightBracket; | 11486 this._rightBracket = rightBracket; |
| 9814 } | 11487 } |
| 11488 |
| 9815 /** | 11489 /** |
| 9816 * Initialize a newly created switch statement. | 11490 * Initialize a newly created switch statement. |
| 9817 * @param keyword the token representing the 'switch' keyword | 11491 * @param keyword the token representing the 'switch' keyword |
| 9818 * @param leftParenthesis the left parenthesis | 11492 * @param leftParenthesis the left parenthesis |
| 9819 * @param expression the expression used to determine which of the switch memb
ers will be selected | 11493 * @param expression the expression used to determine which of the switch memb
ers will be selected |
| 9820 * @param rightParenthesis the right parenthesis | 11494 * @param rightParenthesis the right parenthesis |
| 9821 * @param leftBracket the left curly bracket | 11495 * @param leftBracket the left curly bracket |
| 9822 * @param members the switch members that can be selected by the expression | 11496 * @param members the switch members that can be selected by the expression |
| 9823 * @param rightBracket the right curly bracket | 11497 * @param rightBracket the right curly bracket |
| 9824 */ | 11498 */ |
| 9825 SwitchStatement({Token keyword, Token leftParenthesis, Expression expression,
Token rightParenthesis, Token leftBracket, List<SwitchMember> members, Token rig
htBracket}) : this.full(keyword, leftParenthesis, expression, rightParenthesis,
leftBracket, members, rightBracket); | 11499 SwitchStatement({Token keyword, Token leftParenthesis, Expression expression,
Token rightParenthesis, Token leftBracket, List<SwitchMember> members, Token rig
htBracket}) : this.full(keyword, leftParenthesis, expression, rightParenthesis,
leftBracket, members, rightBracket); |
| 9826 accept(ASTVisitor visitor) => visitor.visitSwitchStatement(this); | 11500 accept(ASTVisitor visitor) => visitor.visitSwitchStatement(this); |
| 9827 Token get beginToken => _keyword; | 11501 Token get beginToken => _keyword; |
| 9828 Token get endToken => _rightBracket; | 11502 Token get endToken => _rightBracket; |
| 11503 |
| 9829 /** | 11504 /** |
| 9830 * Return the expression used to determine which of the switch members will be
selected. | 11505 * Return the expression used to determine which of the switch members will be
selected. |
| 9831 * @return the expression used to determine which of the switch members will b
e selected | 11506 * @return the expression used to determine which of the switch members will b
e selected |
| 9832 */ | 11507 */ |
| 9833 Expression get expression => _expression; | 11508 Expression get expression => _expression; |
| 11509 |
| 9834 /** | 11510 /** |
| 9835 * Return the token representing the 'switch' keyword. | 11511 * Return the token representing the 'switch' keyword. |
| 9836 * @return the token representing the 'switch' keyword | 11512 * @return the token representing the 'switch' keyword |
| 9837 */ | 11513 */ |
| 9838 Token get keyword => _keyword; | 11514 Token get keyword => _keyword; |
| 11515 |
| 9839 /** | 11516 /** |
| 9840 * Return the left curly bracket. | 11517 * Return the left curly bracket. |
| 9841 * @return the left curly bracket | 11518 * @return the left curly bracket |
| 9842 */ | 11519 */ |
| 9843 Token get leftBracket => _leftBracket; | 11520 Token get leftBracket => _leftBracket; |
| 11521 |
| 9844 /** | 11522 /** |
| 9845 * Return the left parenthesis. | 11523 * Return the left parenthesis. |
| 9846 * @return the left parenthesis | 11524 * @return the left parenthesis |
| 9847 */ | 11525 */ |
| 9848 Token get leftParenthesis => _leftParenthesis; | 11526 Token get leftParenthesis => _leftParenthesis; |
| 11527 |
| 9849 /** | 11528 /** |
| 9850 * Return the switch members that can be selected by the expression. | 11529 * Return the switch members that can be selected by the expression. |
| 9851 * @return the switch members that can be selected by the expression | 11530 * @return the switch members that can be selected by the expression |
| 9852 */ | 11531 */ |
| 9853 NodeList<SwitchMember> get members => _members; | 11532 NodeList<SwitchMember> get members => _members; |
| 11533 |
| 9854 /** | 11534 /** |
| 9855 * Return the right curly bracket. | 11535 * Return the right curly bracket. |
| 9856 * @return the right curly bracket | 11536 * @return the right curly bracket |
| 9857 */ | 11537 */ |
| 9858 Token get rightBracket => _rightBracket; | 11538 Token get rightBracket => _rightBracket; |
| 11539 |
| 9859 /** | 11540 /** |
| 9860 * Return the right parenthesis. | 11541 * Return the right parenthesis. |
| 9861 * @return the right parenthesis | 11542 * @return the right parenthesis |
| 9862 */ | 11543 */ |
| 9863 Token get rightParenthesis => _rightParenthesis; | 11544 Token get rightParenthesis => _rightParenthesis; |
| 11545 |
| 9864 /** | 11546 /** |
| 9865 * Set the expression used to determine which of the switch members will be se
lected to the given | 11547 * Set the expression used to determine which of the switch members will be se
lected to the given |
| 9866 * expression. | 11548 * expression. |
| 9867 * @param expression the expression used to determine which of the switch memb
ers will be selected | 11549 * @param expression the expression used to determine which of the switch memb
ers will be selected |
| 9868 */ | 11550 */ |
| 9869 void set expression(Expression expression2) { | 11551 void set expression(Expression expression2) { |
| 9870 this._expression = becomeParentOf(expression2); | 11552 this._expression = becomeParentOf(expression2); |
| 9871 } | 11553 } |
| 11554 |
| 9872 /** | 11555 /** |
| 9873 * Set the token representing the 'switch' keyword to the given token. | 11556 * Set the token representing the 'switch' keyword to the given token. |
| 9874 * @param keyword the token representing the 'switch' keyword | 11557 * @param keyword the token representing the 'switch' keyword |
| 9875 */ | 11558 */ |
| 9876 void set keyword(Token keyword2) { | 11559 void set keyword(Token keyword2) { |
| 9877 this._keyword = keyword2; | 11560 this._keyword = keyword2; |
| 9878 } | 11561 } |
| 11562 |
| 9879 /** | 11563 /** |
| 9880 * Set the left curly bracket to the given token. | 11564 * Set the left curly bracket to the given token. |
| 9881 * @param leftBracket the left curly bracket | 11565 * @param leftBracket the left curly bracket |
| 9882 */ | 11566 */ |
| 9883 void set leftBracket(Token leftBracket2) { | 11567 void set leftBracket(Token leftBracket2) { |
| 9884 this._leftBracket = leftBracket2; | 11568 this._leftBracket = leftBracket2; |
| 9885 } | 11569 } |
| 11570 |
| 9886 /** | 11571 /** |
| 9887 * Set the left parenthesis to the given token. | 11572 * Set the left parenthesis to the given token. |
| 9888 * @param leftParenthesis the left parenthesis | 11573 * @param leftParenthesis the left parenthesis |
| 9889 */ | 11574 */ |
| 9890 void set leftParenthesis(Token leftParenthesis2) { | 11575 void set leftParenthesis(Token leftParenthesis2) { |
| 9891 this._leftParenthesis = leftParenthesis2; | 11576 this._leftParenthesis = leftParenthesis2; |
| 9892 } | 11577 } |
| 11578 |
| 9893 /** | 11579 /** |
| 9894 * Set the right curly bracket to the given token. | 11580 * Set the right curly bracket to the given token. |
| 9895 * @param rightBracket the right curly bracket | 11581 * @param rightBracket the right curly bracket |
| 9896 */ | 11582 */ |
| 9897 void set rightBracket(Token rightBracket2) { | 11583 void set rightBracket(Token rightBracket2) { |
| 9898 this._rightBracket = rightBracket2; | 11584 this._rightBracket = rightBracket2; |
| 9899 } | 11585 } |
| 11586 |
| 9900 /** | 11587 /** |
| 9901 * Set the right parenthesis to the given token. | 11588 * Set the right parenthesis to the given token. |
| 9902 * @param rightParenthesis the right parenthesis | 11589 * @param rightParenthesis the right parenthesis |
| 9903 */ | 11590 */ |
| 9904 void set rightParenthesis(Token rightParenthesis2) { | 11591 void set rightParenthesis(Token rightParenthesis2) { |
| 9905 this._rightParenthesis = rightParenthesis2; | 11592 this._rightParenthesis = rightParenthesis2; |
| 9906 } | 11593 } |
| 9907 void visitChildren(ASTVisitor<Object> visitor) { | 11594 void visitChildren(ASTVisitor<Object> visitor) { |
| 9908 safelyVisitChild(_expression, visitor); | 11595 safelyVisitChild(_expression, visitor); |
| 9909 _members.accept(visitor); | 11596 _members.accept(visitor); |
| 9910 } | 11597 } |
| 9911 } | 11598 } |
| 11599 |
| 9912 /** | 11600 /** |
| 9913 * Instances of the class {@code ThisExpression} represent a this expression. | 11601 * Instances of the class {@code ThisExpression} represent a this expression. |
| 9914 * <pre> | 11602 * <pre> |
| 9915 * thisExpression ::= | 11603 * thisExpression ::= |
| 9916 * 'this' | 11604 * 'this' |
| 9917 * </pre> | 11605 * </pre> |
| 9918 * @coverage dart.engine.ast | 11606 * @coverage dart.engine.ast |
| 9919 */ | 11607 */ |
| 9920 class ThisExpression extends Expression { | 11608 class ThisExpression extends Expression { |
| 11609 |
| 9921 /** | 11610 /** |
| 9922 * The token representing the keyword. | 11611 * The token representing the keyword. |
| 9923 */ | 11612 */ |
| 9924 Token _keyword; | 11613 Token _keyword; |
| 11614 |
| 9925 /** | 11615 /** |
| 9926 * Initialize a newly created this expression. | 11616 * Initialize a newly created this expression. |
| 9927 * @param keyword the token representing the keyword | 11617 * @param keyword the token representing the keyword |
| 9928 */ | 11618 */ |
| 9929 ThisExpression.full(Token keyword) { | 11619 ThisExpression.full(Token keyword) { |
| 9930 this._keyword = keyword; | 11620 this._keyword = keyword; |
| 9931 } | 11621 } |
| 11622 |
| 9932 /** | 11623 /** |
| 9933 * Initialize a newly created this expression. | 11624 * Initialize a newly created this expression. |
| 9934 * @param keyword the token representing the keyword | 11625 * @param keyword the token representing the keyword |
| 9935 */ | 11626 */ |
| 9936 ThisExpression({Token keyword}) : this.full(keyword); | 11627 ThisExpression({Token keyword}) : this.full(keyword); |
| 9937 accept(ASTVisitor visitor) => visitor.visitThisExpression(this); | 11628 accept(ASTVisitor visitor) => visitor.visitThisExpression(this); |
| 9938 Token get beginToken => _keyword; | 11629 Token get beginToken => _keyword; |
| 9939 Token get endToken => _keyword; | 11630 Token get endToken => _keyword; |
| 11631 |
| 9940 /** | 11632 /** |
| 9941 * Return the token representing the keyword. | 11633 * Return the token representing the keyword. |
| 9942 * @return the token representing the keyword | 11634 * @return the token representing the keyword |
| 9943 */ | 11635 */ |
| 9944 Token get keyword => _keyword; | 11636 Token get keyword => _keyword; |
| 11637 |
| 9945 /** | 11638 /** |
| 9946 * Set the token representing the keyword to the given token. | 11639 * Set the token representing the keyword to the given token. |
| 9947 * @param keyword the token representing the keyword | 11640 * @param keyword the token representing the keyword |
| 9948 */ | 11641 */ |
| 9949 void set keyword(Token keyword2) { | 11642 void set keyword(Token keyword2) { |
| 9950 this._keyword = keyword2; | 11643 this._keyword = keyword2; |
| 9951 } | 11644 } |
| 9952 void visitChildren(ASTVisitor<Object> visitor) { | 11645 void visitChildren(ASTVisitor<Object> visitor) { |
| 9953 } | 11646 } |
| 9954 } | 11647 } |
| 11648 |
| 9955 /** | 11649 /** |
| 9956 * Instances of the class {@code ThrowExpression} represent a throw expression. | 11650 * Instances of the class {@code ThrowExpression} represent a throw expression. |
| 9957 * <pre> | 11651 * <pre> |
| 9958 * throwExpression ::= | 11652 * throwExpression ::= |
| 9959 * 'throw' {@link Expression expression}</pre> | 11653 * 'throw' {@link Expression expression}</pre> |
| 9960 * @coverage dart.engine.ast | 11654 * @coverage dart.engine.ast |
| 9961 */ | 11655 */ |
| 9962 class ThrowExpression extends Expression { | 11656 class ThrowExpression extends Expression { |
| 11657 |
| 9963 /** | 11658 /** |
| 9964 * The token representing the 'throw' keyword. | 11659 * The token representing the 'throw' keyword. |
| 9965 */ | 11660 */ |
| 9966 Token _keyword; | 11661 Token _keyword; |
| 11662 |
| 9967 /** | 11663 /** |
| 9968 * The expression computing the exception to be thrown. | 11664 * The expression computing the exception to be thrown. |
| 9969 */ | 11665 */ |
| 9970 Expression _expression; | 11666 Expression _expression; |
| 11667 |
| 9971 /** | 11668 /** |
| 9972 * Initialize a newly created throw expression. | 11669 * Initialize a newly created throw expression. |
| 9973 * @param keyword the token representing the 'throw' keyword | 11670 * @param keyword the token representing the 'throw' keyword |
| 9974 * @param expression the expression computing the exception to be thrown | 11671 * @param expression the expression computing the exception to be thrown |
| 9975 */ | 11672 */ |
| 9976 ThrowExpression.full(Token keyword, Expression expression) { | 11673 ThrowExpression.full(Token keyword, Expression expression) { |
| 9977 this._keyword = keyword; | 11674 this._keyword = keyword; |
| 9978 this._expression = becomeParentOf(expression); | 11675 this._expression = becomeParentOf(expression); |
| 9979 } | 11676 } |
| 11677 |
| 9980 /** | 11678 /** |
| 9981 * Initialize a newly created throw expression. | 11679 * Initialize a newly created throw expression. |
| 9982 * @param keyword the token representing the 'throw' keyword | 11680 * @param keyword the token representing the 'throw' keyword |
| 9983 * @param expression the expression computing the exception to be thrown | 11681 * @param expression the expression computing the exception to be thrown |
| 9984 */ | 11682 */ |
| 9985 ThrowExpression({Token keyword, Expression expression}) : this.full(keyword, e
xpression); | 11683 ThrowExpression({Token keyword, Expression expression}) : this.full(keyword, e
xpression); |
| 9986 accept(ASTVisitor visitor) => visitor.visitThrowExpression(this); | 11684 accept(ASTVisitor visitor) => visitor.visitThrowExpression(this); |
| 9987 Token get beginToken => _keyword; | 11685 Token get beginToken => _keyword; |
| 9988 Token get endToken { | 11686 Token get endToken { |
| 9989 if (_expression != null) { | 11687 if (_expression != null) { |
| 9990 return _expression.endToken; | 11688 return _expression.endToken; |
| 9991 } | 11689 } |
| 9992 return _keyword; | 11690 return _keyword; |
| 9993 } | 11691 } |
| 11692 |
| 9994 /** | 11693 /** |
| 9995 * Return the expression computing the exception to be thrown. | 11694 * Return the expression computing the exception to be thrown. |
| 9996 * @return the expression computing the exception to be thrown | 11695 * @return the expression computing the exception to be thrown |
| 9997 */ | 11696 */ |
| 9998 Expression get expression => _expression; | 11697 Expression get expression => _expression; |
| 11698 |
| 9999 /** | 11699 /** |
| 10000 * Return the token representing the 'throw' keyword. | 11700 * Return the token representing the 'throw' keyword. |
| 10001 * @return the token representing the 'throw' keyword | 11701 * @return the token representing the 'throw' keyword |
| 10002 */ | 11702 */ |
| 10003 Token get keyword => _keyword; | 11703 Token get keyword => _keyword; |
| 11704 |
| 10004 /** | 11705 /** |
| 10005 * Set the expression computing the exception to be thrown to the given expres
sion. | 11706 * Set the expression computing the exception to be thrown to the given expres
sion. |
| 10006 * @param expression the expression computing the exception to be thrown | 11707 * @param expression the expression computing the exception to be thrown |
| 10007 */ | 11708 */ |
| 10008 void set expression(Expression expression2) { | 11709 void set expression(Expression expression2) { |
| 10009 this._expression = becomeParentOf(expression2); | 11710 this._expression = becomeParentOf(expression2); |
| 10010 } | 11711 } |
| 11712 |
| 10011 /** | 11713 /** |
| 10012 * Set the token representing the 'throw' keyword to the given token. | 11714 * Set the token representing the 'throw' keyword to the given token. |
| 10013 * @param keyword the token representing the 'throw' keyword | 11715 * @param keyword the token representing the 'throw' keyword |
| 10014 */ | 11716 */ |
| 10015 void set keyword(Token keyword2) { | 11717 void set keyword(Token keyword2) { |
| 10016 this._keyword = keyword2; | 11718 this._keyword = keyword2; |
| 10017 } | 11719 } |
| 10018 void visitChildren(ASTVisitor<Object> visitor) { | 11720 void visitChildren(ASTVisitor<Object> visitor) { |
| 10019 safelyVisitChild(_expression, visitor); | 11721 safelyVisitChild(_expression, visitor); |
| 10020 } | 11722 } |
| 10021 } | 11723 } |
| 11724 |
| 10022 /** | 11725 /** |
| 10023 * Instances of the class {@code TopLevelVariableDeclaration} represent the decl
aration of one or | 11726 * Instances of the class {@code TopLevelVariableDeclaration} represent the decl
aration of one or |
| 10024 * more top-level variables of the same type. | 11727 * more top-level variables of the same type. |
| 10025 * <pre> | 11728 * <pre> |
| 10026 * topLevelVariableDeclaration ::= | 11729 * topLevelVariableDeclaration ::= |
| 10027 * ('final' | 'const') type? staticFinalDeclarationList ';' | 11730 * ('final' | 'const') type? staticFinalDeclarationList ';' |
| 10028 * | variableDeclaration ';' | 11731 * | variableDeclaration ';' |
| 10029 * </pre> | 11732 * </pre> |
| 10030 * @coverage dart.engine.ast | 11733 * @coverage dart.engine.ast |
| 10031 */ | 11734 */ |
| 10032 class TopLevelVariableDeclaration extends CompilationUnitMember { | 11735 class TopLevelVariableDeclaration extends CompilationUnitMember { |
| 11736 |
| 10033 /** | 11737 /** |
| 10034 * The top-level variables being declared. | 11738 * The top-level variables being declared. |
| 10035 */ | 11739 */ |
| 10036 VariableDeclarationList _variableList; | 11740 VariableDeclarationList _variableList; |
| 11741 |
| 10037 /** | 11742 /** |
| 10038 * The semicolon terminating the declaration. | 11743 * The semicolon terminating the declaration. |
| 10039 */ | 11744 */ |
| 10040 Token _semicolon; | 11745 Token _semicolon; |
| 11746 |
| 10041 /** | 11747 /** |
| 10042 * Initialize a newly created top-level variable declaration. | 11748 * Initialize a newly created top-level variable declaration. |
| 10043 * @param comment the documentation comment associated with this variable | 11749 * @param comment the documentation comment associated with this variable |
| 10044 * @param metadata the annotations associated with this variable | 11750 * @param metadata the annotations associated with this variable |
| 10045 * @param variableList the top-level variables being declared | 11751 * @param variableList the top-level variables being declared |
| 10046 * @param semicolon the semicolon terminating the declaration | 11752 * @param semicolon the semicolon terminating the declaration |
| 10047 */ | 11753 */ |
| 10048 TopLevelVariableDeclaration.full(Comment comment, List<Annotation> metadata, V
ariableDeclarationList variableList, Token semicolon) : super.full(comment, meta
data) { | 11754 TopLevelVariableDeclaration.full(Comment comment, List<Annotation> metadata, V
ariableDeclarationList variableList, Token semicolon) : super.full(comment, meta
data) { |
| 10049 this._variableList = becomeParentOf(variableList); | 11755 this._variableList = becomeParentOf(variableList); |
| 10050 this._semicolon = semicolon; | 11756 this._semicolon = semicolon; |
| 10051 } | 11757 } |
| 11758 |
| 10052 /** | 11759 /** |
| 10053 * Initialize a newly created top-level variable declaration. | 11760 * Initialize a newly created top-level variable declaration. |
| 10054 * @param comment the documentation comment associated with this variable | 11761 * @param comment the documentation comment associated with this variable |
| 10055 * @param metadata the annotations associated with this variable | 11762 * @param metadata the annotations associated with this variable |
| 10056 * @param variableList the top-level variables being declared | 11763 * @param variableList the top-level variables being declared |
| 10057 * @param semicolon the semicolon terminating the declaration | 11764 * @param semicolon the semicolon terminating the declaration |
| 10058 */ | 11765 */ |
| 10059 TopLevelVariableDeclaration({Comment comment, List<Annotation> metadata, Varia
bleDeclarationList variableList, Token semicolon}) : this.full(comment, metadata
, variableList, semicolon); | 11766 TopLevelVariableDeclaration({Comment comment, List<Annotation> metadata, Varia
bleDeclarationList variableList, Token semicolon}) : this.full(comment, metadata
, variableList, semicolon); |
| 10060 accept(ASTVisitor visitor) => visitor.visitTopLevelVariableDeclaration(this); | 11767 accept(ASTVisitor visitor) => visitor.visitTopLevelVariableDeclaration(this); |
| 10061 Element get element => null; | 11768 Element get element => null; |
| 10062 Token get endToken => _semicolon; | 11769 Token get endToken => _semicolon; |
| 11770 |
| 10063 /** | 11771 /** |
| 10064 * Return the semicolon terminating the declaration. | 11772 * Return the semicolon terminating the declaration. |
| 10065 * @return the semicolon terminating the declaration | 11773 * @return the semicolon terminating the declaration |
| 10066 */ | 11774 */ |
| 10067 Token get semicolon => _semicolon; | 11775 Token get semicolon => _semicolon; |
| 11776 |
| 10068 /** | 11777 /** |
| 10069 * Return the top-level variables being declared. | 11778 * Return the top-level variables being declared. |
| 10070 * @return the top-level variables being declared | 11779 * @return the top-level variables being declared |
| 10071 */ | 11780 */ |
| 10072 VariableDeclarationList get variables => _variableList; | 11781 VariableDeclarationList get variables => _variableList; |
| 11782 |
| 10073 /** | 11783 /** |
| 10074 * Set the semicolon terminating the declaration to the given token. | 11784 * Set the semicolon terminating the declaration to the given token. |
| 10075 * @param semicolon the semicolon terminating the declaration | 11785 * @param semicolon the semicolon terminating the declaration |
| 10076 */ | 11786 */ |
| 10077 void set semicolon(Token semicolon2) { | 11787 void set semicolon(Token semicolon2) { |
| 10078 this._semicolon = semicolon2; | 11788 this._semicolon = semicolon2; |
| 10079 } | 11789 } |
| 11790 |
| 10080 /** | 11791 /** |
| 10081 * Set the top-level variables being declared to the given list of variables. | 11792 * Set the top-level variables being declared to the given list of variables. |
| 10082 * @param variableList the top-level variables being declared | 11793 * @param variableList the top-level variables being declared |
| 10083 */ | 11794 */ |
| 10084 void set variables(VariableDeclarationList variableList) { | 11795 void set variables(VariableDeclarationList variableList) { |
| 10085 variableList = becomeParentOf(variableList); | 11796 variableList = becomeParentOf(variableList); |
| 10086 } | 11797 } |
| 10087 void visitChildren(ASTVisitor<Object> visitor) { | 11798 void visitChildren(ASTVisitor<Object> visitor) { |
| 10088 super.visitChildren(visitor); | 11799 super.visitChildren(visitor); |
| 10089 safelyVisitChild(_variableList, visitor); | 11800 safelyVisitChild(_variableList, visitor); |
| 10090 } | 11801 } |
| 10091 Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken; | 11802 Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken; |
| 10092 } | 11803 } |
| 11804 |
| 10093 /** | 11805 /** |
| 10094 * Instances of the class {@code TryStatement} represent a try statement. | 11806 * Instances of the class {@code TryStatement} represent a try statement. |
| 10095 * <pre> | 11807 * <pre> |
| 10096 * tryStatement ::= | 11808 * tryStatement ::= |
| 10097 * 'try' {@link Block block} ({@link CatchClause catchClause}+ finallyClause? |
finallyClause) | 11809 * 'try' {@link Block block} ({@link CatchClause catchClause}+ finallyClause? |
finallyClause) |
| 10098 * finallyClause ::= | 11810 * finallyClause ::= |
| 10099 * 'finally' {@link Block block}</pre> | 11811 * 'finally' {@link Block block}</pre> |
| 10100 * @coverage dart.engine.ast | 11812 * @coverage dart.engine.ast |
| 10101 */ | 11813 */ |
| 10102 class TryStatement extends Statement { | 11814 class TryStatement extends Statement { |
| 11815 |
| 10103 /** | 11816 /** |
| 10104 * The token representing the 'try' keyword. | 11817 * The token representing the 'try' keyword. |
| 10105 */ | 11818 */ |
| 10106 Token _tryKeyword; | 11819 Token _tryKeyword; |
| 11820 |
| 10107 /** | 11821 /** |
| 10108 * The body of the statement. | 11822 * The body of the statement. |
| 10109 */ | 11823 */ |
| 10110 Block _body; | 11824 Block _body; |
| 11825 |
| 10111 /** | 11826 /** |
| 10112 * The catch clauses contained in the try statement. | 11827 * The catch clauses contained in the try statement. |
| 10113 */ | 11828 */ |
| 10114 NodeList<CatchClause> _catchClauses; | 11829 NodeList<CatchClause> _catchClauses; |
| 11830 |
| 10115 /** | 11831 /** |
| 10116 * The token representing the 'finally' keyword, or {@code null} if the statem
ent does not contain | 11832 * The token representing the 'finally' keyword, or {@code null} if the statem
ent does not contain |
| 10117 * a finally clause. | 11833 * a finally clause. |
| 10118 */ | 11834 */ |
| 10119 Token _finallyKeyword; | 11835 Token _finallyKeyword; |
| 11836 |
| 10120 /** | 11837 /** |
| 10121 * The finally clause contained in the try statement, or {@code null} if the s
tatement does not | 11838 * The finally clause contained in the try statement, or {@code null} if the s
tatement does not |
| 10122 * contain a finally clause. | 11839 * contain a finally clause. |
| 10123 */ | 11840 */ |
| 10124 Block _finallyClause; | 11841 Block _finallyClause; |
| 11842 |
| 10125 /** | 11843 /** |
| 10126 * Initialize a newly created try statement. | 11844 * Initialize a newly created try statement. |
| 10127 * @param tryKeyword the token representing the 'try' keyword | 11845 * @param tryKeyword the token representing the 'try' keyword |
| 10128 * @param body the body of the statement | 11846 * @param body the body of the statement |
| 10129 * @param catchClauses the catch clauses contained in the try statement | 11847 * @param catchClauses the catch clauses contained in the try statement |
| 10130 * @param finallyKeyword the token representing the 'finally' keyword | 11848 * @param finallyKeyword the token representing the 'finally' keyword |
| 10131 * @param finallyClause the finally clause contained in the try statement | 11849 * @param finallyClause the finally clause contained in the try statement |
| 10132 */ | 11850 */ |
| 10133 TryStatement.full(Token tryKeyword, Block body, List<CatchClause> catchClauses
, Token finallyKeyword, Block finallyClause) { | 11851 TryStatement.full(Token tryKeyword, Block body, List<CatchClause> catchClauses
, Token finallyKeyword, Block finallyClause) { |
| 10134 this._catchClauses = new NodeList<CatchClause>(this); | 11852 this._catchClauses = new NodeList<CatchClause>(this); |
| 10135 this._tryKeyword = tryKeyword; | 11853 this._tryKeyword = tryKeyword; |
| 10136 this._body = becomeParentOf(body); | 11854 this._body = becomeParentOf(body); |
| 10137 this._catchClauses.addAll(catchClauses); | 11855 this._catchClauses.addAll(catchClauses); |
| 10138 this._finallyKeyword = finallyKeyword; | 11856 this._finallyKeyword = finallyKeyword; |
| 10139 this._finallyClause = becomeParentOf(finallyClause); | 11857 this._finallyClause = becomeParentOf(finallyClause); |
| 10140 } | 11858 } |
| 11859 |
| 10141 /** | 11860 /** |
| 10142 * Initialize a newly created try statement. | 11861 * Initialize a newly created try statement. |
| 10143 * @param tryKeyword the token representing the 'try' keyword | 11862 * @param tryKeyword the token representing the 'try' keyword |
| 10144 * @param body the body of the statement | 11863 * @param body the body of the statement |
| 10145 * @param catchClauses the catch clauses contained in the try statement | 11864 * @param catchClauses the catch clauses contained in the try statement |
| 10146 * @param finallyKeyword the token representing the 'finally' keyword | 11865 * @param finallyKeyword the token representing the 'finally' keyword |
| 10147 * @param finallyClause the finally clause contained in the try statement | 11866 * @param finallyClause the finally clause contained in the try statement |
| 10148 */ | 11867 */ |
| 10149 TryStatement({Token tryKeyword, Block body, List<CatchClause> catchClauses, To
ken finallyKeyword, Block finallyClause}) : this.full(tryKeyword, body, catchCla
uses, finallyKeyword, finallyClause); | 11868 TryStatement({Token tryKeyword, Block body, List<CatchClause> catchClauses, To
ken finallyKeyword, Block finallyClause}) : this.full(tryKeyword, body, catchCla
uses, finallyKeyword, finallyClause); |
| 10150 accept(ASTVisitor visitor) => visitor.visitTryStatement(this); | 11869 accept(ASTVisitor visitor) => visitor.visitTryStatement(this); |
| 10151 Token get beginToken => _tryKeyword; | 11870 Token get beginToken => _tryKeyword; |
| 11871 |
| 10152 /** | 11872 /** |
| 10153 * Return the body of the statement. | 11873 * Return the body of the statement. |
| 10154 * @return the body of the statement | 11874 * @return the body of the statement |
| 10155 */ | 11875 */ |
| 10156 Block get body => _body; | 11876 Block get body => _body; |
| 11877 |
| 10157 /** | 11878 /** |
| 10158 * Return the catch clauses contained in the try statement. | 11879 * Return the catch clauses contained in the try statement. |
| 10159 * @return the catch clauses contained in the try statement | 11880 * @return the catch clauses contained in the try statement |
| 10160 */ | 11881 */ |
| 10161 NodeList<CatchClause> get catchClauses => _catchClauses; | 11882 NodeList<CatchClause> get catchClauses => _catchClauses; |
| 10162 Token get endToken { | 11883 Token get endToken { |
| 10163 if (_finallyClause != null) { | 11884 if (_finallyClause != null) { |
| 10164 return _finallyClause.endToken; | 11885 return _finallyClause.endToken; |
| 10165 } else if (_finallyKeyword != null) { | 11886 } else if (_finallyKeyword != null) { |
| 10166 return _finallyKeyword; | 11887 return _finallyKeyword; |
| 10167 } else if (!_catchClauses.isEmpty) { | 11888 } else if (!_catchClauses.isEmpty) { |
| 10168 return _catchClauses.endToken; | 11889 return _catchClauses.endToken; |
| 10169 } | 11890 } |
| 10170 return _body.endToken; | 11891 return _body.endToken; |
| 10171 } | 11892 } |
| 11893 |
| 10172 /** | 11894 /** |
| 10173 * Return the finally clause contained in the try statement, or {@code null} i
f the statement does | 11895 * Return the finally clause contained in the try statement, or {@code null} i
f the statement does |
| 10174 * not contain a finally clause. | 11896 * not contain a finally clause. |
| 10175 * @return the finally clause contained in the try statement | 11897 * @return the finally clause contained in the try statement |
| 10176 */ | 11898 */ |
| 10177 Block get finallyClause => _finallyClause; | 11899 Block get finallyClause => _finallyClause; |
| 11900 |
| 10178 /** | 11901 /** |
| 10179 * Return the token representing the 'finally' keyword, or {@code null} if the
statement does not | 11902 * Return the token representing the 'finally' keyword, or {@code null} if the
statement does not |
| 10180 * contain a finally clause. | 11903 * contain a finally clause. |
| 10181 * @return the token representing the 'finally' keyword | 11904 * @return the token representing the 'finally' keyword |
| 10182 */ | 11905 */ |
| 10183 Token get finallyKeyword => _finallyKeyword; | 11906 Token get finallyKeyword => _finallyKeyword; |
| 11907 |
| 10184 /** | 11908 /** |
| 10185 * Return the token representing the 'try' keyword. | 11909 * Return the token representing the 'try' keyword. |
| 10186 * @return the token representing the 'try' keyword | 11910 * @return the token representing the 'try' keyword |
| 10187 */ | 11911 */ |
| 10188 Token get tryKeyword => _tryKeyword; | 11912 Token get tryKeyword => _tryKeyword; |
| 11913 |
| 10189 /** | 11914 /** |
| 10190 * Set the body of the statement to the given block. | 11915 * Set the body of the statement to the given block. |
| 10191 * @param block the body of the statement | 11916 * @param block the body of the statement |
| 10192 */ | 11917 */ |
| 10193 void set body(Block block) { | 11918 void set body(Block block) { |
| 10194 _body = becomeParentOf(block); | 11919 _body = becomeParentOf(block); |
| 10195 } | 11920 } |
| 11921 |
| 10196 /** | 11922 /** |
| 10197 * Set the finally clause contained in the try statement to the given block. | 11923 * Set the finally clause contained in the try statement to the given block. |
| 10198 * @param block the finally clause contained in the try statement | 11924 * @param block the finally clause contained in the try statement |
| 10199 */ | 11925 */ |
| 10200 void set finallyClause(Block block) { | 11926 void set finallyClause(Block block) { |
| 10201 _finallyClause = becomeParentOf(block); | 11927 _finallyClause = becomeParentOf(block); |
| 10202 } | 11928 } |
| 11929 |
| 10203 /** | 11930 /** |
| 10204 * Set the token representing the 'finally' keyword to the given token. | 11931 * Set the token representing the 'finally' keyword to the given token. |
| 10205 * @param finallyKeyword the token representing the 'finally' keyword | 11932 * @param finallyKeyword the token representing the 'finally' keyword |
| 10206 */ | 11933 */ |
| 10207 void set finallyKeyword(Token finallyKeyword2) { | 11934 void set finallyKeyword(Token finallyKeyword2) { |
| 10208 this._finallyKeyword = finallyKeyword2; | 11935 this._finallyKeyword = finallyKeyword2; |
| 10209 } | 11936 } |
| 11937 |
| 10210 /** | 11938 /** |
| 10211 * Set the token representing the 'try' keyword to the given token. | 11939 * Set the token representing the 'try' keyword to the given token. |
| 10212 * @param tryKeyword the token representing the 'try' keyword | 11940 * @param tryKeyword the token representing the 'try' keyword |
| 10213 */ | 11941 */ |
| 10214 void set tryKeyword(Token tryKeyword2) { | 11942 void set tryKeyword(Token tryKeyword2) { |
| 10215 this._tryKeyword = tryKeyword2; | 11943 this._tryKeyword = tryKeyword2; |
| 10216 } | 11944 } |
| 10217 void visitChildren(ASTVisitor<Object> visitor) { | 11945 void visitChildren(ASTVisitor<Object> visitor) { |
| 10218 safelyVisitChild(_body, visitor); | 11946 safelyVisitChild(_body, visitor); |
| 10219 _catchClauses.accept(visitor); | 11947 _catchClauses.accept(visitor); |
| 10220 safelyVisitChild(_finallyClause, visitor); | 11948 safelyVisitChild(_finallyClause, visitor); |
| 10221 } | 11949 } |
| 10222 } | 11950 } |
| 11951 |
| 10223 /** | 11952 /** |
| 10224 * The abstract class {@code TypeAlias} defines the behavior common to declarati
ons of type aliases. | 11953 * The abstract class {@code TypeAlias} defines the behavior common to declarati
ons of type aliases. |
| 10225 * <pre> | 11954 * <pre> |
| 10226 * typeAlias ::= | 11955 * typeAlias ::= |
| 10227 * 'typedef' typeAliasBody | 11956 * 'typedef' typeAliasBody |
| 10228 * typeAliasBody ::= | 11957 * typeAliasBody ::= |
| 10229 * classTypeAlias | 11958 * classTypeAlias |
| 10230 * | functionTypeAlias | 11959 * | functionTypeAlias |
| 10231 * </pre> | 11960 * </pre> |
| 10232 * @coverage dart.engine.ast | 11961 * @coverage dart.engine.ast |
| 10233 */ | 11962 */ |
| 10234 abstract class TypeAlias extends CompilationUnitMember { | 11963 abstract class TypeAlias extends CompilationUnitMember { |
| 11964 |
| 10235 /** | 11965 /** |
| 10236 * The token representing the 'typedef' keyword. | 11966 * The token representing the 'typedef' keyword. |
| 10237 */ | 11967 */ |
| 10238 Token _keyword; | 11968 Token _keyword; |
| 11969 |
| 10239 /** | 11970 /** |
| 10240 * The semicolon terminating the declaration. | 11971 * The semicolon terminating the declaration. |
| 10241 */ | 11972 */ |
| 10242 Token _semicolon; | 11973 Token _semicolon; |
| 11974 |
| 10243 /** | 11975 /** |
| 10244 * Initialize a newly created type alias. | 11976 * Initialize a newly created type alias. |
| 10245 * @param comment the documentation comment associated with this type alias | 11977 * @param comment the documentation comment associated with this type alias |
| 10246 * @param metadata the annotations associated with this type alias | 11978 * @param metadata the annotations associated with this type alias |
| 10247 * @param keyword the token representing the 'typedef' keyword | 11979 * @param keyword the token representing the 'typedef' keyword |
| 10248 * @param semicolon the semicolon terminating the declaration | 11980 * @param semicolon the semicolon terminating the declaration |
| 10249 */ | 11981 */ |
| 10250 TypeAlias.full(Comment comment, List<Annotation> metadata, Token keyword, Toke
n semicolon) : super.full(comment, metadata) { | 11982 TypeAlias.full(Comment comment, List<Annotation> metadata, Token keyword, Toke
n semicolon) : super.full(comment, metadata) { |
| 10251 this._keyword = keyword; | 11983 this._keyword = keyword; |
| 10252 this._semicolon = semicolon; | 11984 this._semicolon = semicolon; |
| 10253 } | 11985 } |
| 11986 |
| 10254 /** | 11987 /** |
| 10255 * Initialize a newly created type alias. | 11988 * Initialize a newly created type alias. |
| 10256 * @param comment the documentation comment associated with this type alias | 11989 * @param comment the documentation comment associated with this type alias |
| 10257 * @param metadata the annotations associated with this type alias | 11990 * @param metadata the annotations associated with this type alias |
| 10258 * @param keyword the token representing the 'typedef' keyword | 11991 * @param keyword the token representing the 'typedef' keyword |
| 10259 * @param semicolon the semicolon terminating the declaration | 11992 * @param semicolon the semicolon terminating the declaration |
| 10260 */ | 11993 */ |
| 10261 TypeAlias({Comment comment, List<Annotation> metadata, Token keyword, Token se
micolon}) : this.full(comment, metadata, keyword, semicolon); | 11994 TypeAlias({Comment comment, List<Annotation> metadata, Token keyword, Token se
micolon}) : this.full(comment, metadata, keyword, semicolon); |
| 10262 Token get endToken => _semicolon; | 11995 Token get endToken => _semicolon; |
| 11996 |
| 10263 /** | 11997 /** |
| 10264 * Return the token representing the 'typedef' keyword. | 11998 * Return the token representing the 'typedef' keyword. |
| 10265 * @return the token representing the 'typedef' keyword | 11999 * @return the token representing the 'typedef' keyword |
| 10266 */ | 12000 */ |
| 10267 Token get keyword => _keyword; | 12001 Token get keyword => _keyword; |
| 12002 |
| 10268 /** | 12003 /** |
| 10269 * Return the semicolon terminating the declaration. | 12004 * Return the semicolon terminating the declaration. |
| 10270 * @return the semicolon terminating the declaration | 12005 * @return the semicolon terminating the declaration |
| 10271 */ | 12006 */ |
| 10272 Token get semicolon => _semicolon; | 12007 Token get semicolon => _semicolon; |
| 12008 |
| 10273 /** | 12009 /** |
| 10274 * Set the token representing the 'typedef' keyword to the given token. | 12010 * Set the token representing the 'typedef' keyword to the given token. |
| 10275 * @param keyword the token representing the 'typedef' keyword | 12011 * @param keyword the token representing the 'typedef' keyword |
| 10276 */ | 12012 */ |
| 10277 void set keyword(Token keyword2) { | 12013 void set keyword(Token keyword2) { |
| 10278 this._keyword = keyword2; | 12014 this._keyword = keyword2; |
| 10279 } | 12015 } |
| 12016 |
| 10280 /** | 12017 /** |
| 10281 * Set the semicolon terminating the declaration to the given token. | 12018 * Set the semicolon terminating the declaration to the given token. |
| 10282 * @param semicolon the semicolon terminating the declaration | 12019 * @param semicolon the semicolon terminating the declaration |
| 10283 */ | 12020 */ |
| 10284 void set semicolon(Token semicolon2) { | 12021 void set semicolon(Token semicolon2) { |
| 10285 this._semicolon = semicolon2; | 12022 this._semicolon = semicolon2; |
| 10286 } | 12023 } |
| 10287 Token get firstTokenAfterCommentAndMetadata => _keyword; | 12024 Token get firstTokenAfterCommentAndMetadata => _keyword; |
| 10288 } | 12025 } |
| 12026 |
| 10289 /** | 12027 /** |
| 10290 * Instances of the class {@code TypeArgumentList} represent a list of type argu
ments. | 12028 * Instances of the class {@code TypeArgumentList} represent a list of type argu
ments. |
| 10291 * <pre> | 12029 * <pre> |
| 10292 * typeArguments ::= | 12030 * typeArguments ::= |
| 10293 * '<' typeName (',' typeName)* '>' | 12031 * '<' typeName (',' typeName)* '>' |
| 10294 * </pre> | 12032 * </pre> |
| 10295 * @coverage dart.engine.ast | 12033 * @coverage dart.engine.ast |
| 10296 */ | 12034 */ |
| 10297 class TypeArgumentList extends ASTNode { | 12035 class TypeArgumentList extends ASTNode { |
| 12036 |
| 10298 /** | 12037 /** |
| 10299 * The left bracket. | 12038 * The left bracket. |
| 10300 */ | 12039 */ |
| 10301 Token _leftBracket; | 12040 Token _leftBracket; |
| 12041 |
| 10302 /** | 12042 /** |
| 10303 * The type arguments associated with the type. | 12043 * The type arguments associated with the type. |
| 10304 */ | 12044 */ |
| 10305 NodeList<TypeName> _arguments; | 12045 NodeList<TypeName> _arguments; |
| 12046 |
| 10306 /** | 12047 /** |
| 10307 * The right bracket. | 12048 * The right bracket. |
| 10308 */ | 12049 */ |
| 10309 Token _rightBracket; | 12050 Token _rightBracket; |
| 12051 |
| 10310 /** | 12052 /** |
| 10311 * Initialize a newly created list of type arguments. | 12053 * Initialize a newly created list of type arguments. |
| 10312 * @param leftBracket the left bracket | 12054 * @param leftBracket the left bracket |
| 10313 * @param arguments the type arguments associated with the type | 12055 * @param arguments the type arguments associated with the type |
| 10314 * @param rightBracket the right bracket | 12056 * @param rightBracket the right bracket |
| 10315 */ | 12057 */ |
| 10316 TypeArgumentList.full(Token leftBracket, List<TypeName> arguments, Token right
Bracket) { | 12058 TypeArgumentList.full(Token leftBracket, List<TypeName> arguments, Token right
Bracket) { |
| 10317 this._arguments = new NodeList<TypeName>(this); | 12059 this._arguments = new NodeList<TypeName>(this); |
| 10318 this._leftBracket = leftBracket; | 12060 this._leftBracket = leftBracket; |
| 10319 this._arguments.addAll(arguments); | 12061 this._arguments.addAll(arguments); |
| 10320 this._rightBracket = rightBracket; | 12062 this._rightBracket = rightBracket; |
| 10321 } | 12063 } |
| 12064 |
| 10322 /** | 12065 /** |
| 10323 * Initialize a newly created list of type arguments. | 12066 * Initialize a newly created list of type arguments. |
| 10324 * @param leftBracket the left bracket | 12067 * @param leftBracket the left bracket |
| 10325 * @param arguments the type arguments associated with the type | 12068 * @param arguments the type arguments associated with the type |
| 10326 * @param rightBracket the right bracket | 12069 * @param rightBracket the right bracket |
| 10327 */ | 12070 */ |
| 10328 TypeArgumentList({Token leftBracket, List<TypeName> arguments, Token rightBrac
ket}) : this.full(leftBracket, arguments, rightBracket); | 12071 TypeArgumentList({Token leftBracket, List<TypeName> arguments, Token rightBrac
ket}) : this.full(leftBracket, arguments, rightBracket); |
| 10329 accept(ASTVisitor visitor) => visitor.visitTypeArgumentList(this); | 12072 accept(ASTVisitor visitor) => visitor.visitTypeArgumentList(this); |
| 12073 |
| 10330 /** | 12074 /** |
| 10331 * Return the type arguments associated with the type. | 12075 * Return the type arguments associated with the type. |
| 10332 * @return the type arguments associated with the type | 12076 * @return the type arguments associated with the type |
| 10333 */ | 12077 */ |
| 10334 NodeList<TypeName> get arguments => _arguments; | 12078 NodeList<TypeName> get arguments => _arguments; |
| 10335 Token get beginToken => _leftBracket; | 12079 Token get beginToken => _leftBracket; |
| 10336 Token get endToken => _rightBracket; | 12080 Token get endToken => _rightBracket; |
| 12081 |
| 10337 /** | 12082 /** |
| 10338 * Return the left bracket. | 12083 * Return the left bracket. |
| 10339 * @return the left bracket | 12084 * @return the left bracket |
| 10340 */ | 12085 */ |
| 10341 Token get leftBracket => _leftBracket; | 12086 Token get leftBracket => _leftBracket; |
| 12087 |
| 10342 /** | 12088 /** |
| 10343 * Return the right bracket. | 12089 * Return the right bracket. |
| 10344 * @return the right bracket | 12090 * @return the right bracket |
| 10345 */ | 12091 */ |
| 10346 Token get rightBracket => _rightBracket; | 12092 Token get rightBracket => _rightBracket; |
| 12093 |
| 10347 /** | 12094 /** |
| 10348 * Set the left bracket to the given token. | 12095 * Set the left bracket to the given token. |
| 10349 * @param leftBracket the left bracket | 12096 * @param leftBracket the left bracket |
| 10350 */ | 12097 */ |
| 10351 void set leftBracket(Token leftBracket2) { | 12098 void set leftBracket(Token leftBracket2) { |
| 10352 this._leftBracket = leftBracket2; | 12099 this._leftBracket = leftBracket2; |
| 10353 } | 12100 } |
| 12101 |
| 10354 /** | 12102 /** |
| 10355 * Set the right bracket to the given token. | 12103 * Set the right bracket to the given token. |
| 10356 * @param rightBracket the right bracket | 12104 * @param rightBracket the right bracket |
| 10357 */ | 12105 */ |
| 10358 void set rightBracket(Token rightBracket2) { | 12106 void set rightBracket(Token rightBracket2) { |
| 10359 this._rightBracket = rightBracket2; | 12107 this._rightBracket = rightBracket2; |
| 10360 } | 12108 } |
| 10361 void visitChildren(ASTVisitor<Object> visitor) { | 12109 void visitChildren(ASTVisitor<Object> visitor) { |
| 10362 _arguments.accept(visitor); | 12110 _arguments.accept(visitor); |
| 10363 } | 12111 } |
| 10364 } | 12112 } |
| 12113 |
| 10365 /** | 12114 /** |
| 10366 * Instances of the class {@code TypeName} represent the name of a type, which c
an optionally | 12115 * Instances of the class {@code TypeName} represent the name of a type, which c
an optionally |
| 10367 * include type arguments. | 12116 * include type arguments. |
| 10368 * <pre> | 12117 * <pre> |
| 10369 * typeName ::={@link Identifier identifier} typeArguments? | 12118 * typeName ::={@link Identifier identifier} typeArguments? |
| 10370 * </pre> | 12119 * </pre> |
| 10371 * @coverage dart.engine.ast | 12120 * @coverage dart.engine.ast |
| 10372 */ | 12121 */ |
| 10373 class TypeName extends ASTNode { | 12122 class TypeName extends ASTNode { |
| 12123 |
| 10374 /** | 12124 /** |
| 10375 * The name of the type. | 12125 * The name of the type. |
| 10376 */ | 12126 */ |
| 10377 Identifier _name; | 12127 Identifier _name; |
| 12128 |
| 10378 /** | 12129 /** |
| 10379 * The type arguments associated with the type, or {@code null} if there are n
o type arguments. | 12130 * The type arguments associated with the type, or {@code null} if there are n
o type arguments. |
| 10380 */ | 12131 */ |
| 10381 TypeArgumentList _typeArguments; | 12132 TypeArgumentList _typeArguments; |
| 12133 |
| 10382 /** | 12134 /** |
| 10383 * The type being named, or {@code null} if the AST structure has not been res
olved. | 12135 * The type being named, or {@code null} if the AST structure has not been res
olved. |
| 10384 */ | 12136 */ |
| 10385 Type2 _type; | 12137 Type2 _type; |
| 12138 |
| 10386 /** | 12139 /** |
| 10387 * Initialize a newly created type name. | 12140 * Initialize a newly created type name. |
| 10388 * @param name the name of the type | 12141 * @param name the name of the type |
| 10389 * @param typeArguments the type arguments associated with the type, or {@code
null} if there are | 12142 * @param typeArguments the type arguments associated with the type, or {@code
null} if there are |
| 10390 * no type arguments | 12143 * no type arguments |
| 10391 */ | 12144 */ |
| 10392 TypeName.full(Identifier name, TypeArgumentList typeArguments) { | 12145 TypeName.full(Identifier name, TypeArgumentList typeArguments) { |
| 10393 this._name = becomeParentOf(name); | 12146 this._name = becomeParentOf(name); |
| 10394 this._typeArguments = becomeParentOf(typeArguments); | 12147 this._typeArguments = becomeParentOf(typeArguments); |
| 10395 } | 12148 } |
| 12149 |
| 10396 /** | 12150 /** |
| 10397 * Initialize a newly created type name. | 12151 * Initialize a newly created type name. |
| 10398 * @param name the name of the type | 12152 * @param name the name of the type |
| 10399 * @param typeArguments the type arguments associated with the type, or {@code
null} if there are | 12153 * @param typeArguments the type arguments associated with the type, or {@code
null} if there are |
| 10400 * no type arguments | 12154 * no type arguments |
| 10401 */ | 12155 */ |
| 10402 TypeName({Identifier name, TypeArgumentList typeArguments}) : this.full(name,
typeArguments); | 12156 TypeName({Identifier name, TypeArgumentList typeArguments}) : this.full(name,
typeArguments); |
| 10403 accept(ASTVisitor visitor) => visitor.visitTypeName(this); | 12157 accept(ASTVisitor visitor) => visitor.visitTypeName(this); |
| 10404 Token get beginToken => _name.beginToken; | 12158 Token get beginToken => _name.beginToken; |
| 10405 Token get endToken { | 12159 Token get endToken { |
| 10406 if (_typeArguments != null) { | 12160 if (_typeArguments != null) { |
| 10407 return _typeArguments.endToken; | 12161 return _typeArguments.endToken; |
| 10408 } | 12162 } |
| 10409 return _name.endToken; | 12163 return _name.endToken; |
| 10410 } | 12164 } |
| 12165 |
| 10411 /** | 12166 /** |
| 10412 * Return the name of the type. | 12167 * Return the name of the type. |
| 10413 * @return the name of the type | 12168 * @return the name of the type |
| 10414 */ | 12169 */ |
| 10415 Identifier get name => _name; | 12170 Identifier get name => _name; |
| 12171 |
| 10416 /** | 12172 /** |
| 10417 * Return the type being named, or {@code null} if the AST structure has not b
een resolved. | 12173 * Return the type being named, or {@code null} if the AST structure has not b
een resolved. |
| 10418 * @return the type being named | 12174 * @return the type being named |
| 10419 */ | 12175 */ |
| 10420 Type2 get type => _type; | 12176 Type2 get type => _type; |
| 12177 |
| 10421 /** | 12178 /** |
| 10422 * Return the type arguments associated with the type, or {@code null} if ther
e are no type | 12179 * Return the type arguments associated with the type, or {@code null} if ther
e are no type |
| 10423 * arguments. | 12180 * arguments. |
| 10424 * @return the type arguments associated with the type | 12181 * @return the type arguments associated with the type |
| 10425 */ | 12182 */ |
| 10426 TypeArgumentList get typeArguments => _typeArguments; | 12183 TypeArgumentList get typeArguments => _typeArguments; |
| 10427 bool isSynthetic() => _name.isSynthetic() && _typeArguments == null; | 12184 bool isSynthetic() => _name.isSynthetic() && _typeArguments == null; |
| 12185 |
| 10428 /** | 12186 /** |
| 10429 * Set the name of the type to the given identifier. | 12187 * Set the name of the type to the given identifier. |
| 10430 * @param identifier the name of the type | 12188 * @param identifier the name of the type |
| 10431 */ | 12189 */ |
| 10432 void set name(Identifier identifier) { | 12190 void set name(Identifier identifier) { |
| 10433 _name = becomeParentOf(identifier); | 12191 _name = becomeParentOf(identifier); |
| 10434 } | 12192 } |
| 12193 |
| 10435 /** | 12194 /** |
| 10436 * Set the type being named to the given type. | 12195 * Set the type being named to the given type. |
| 10437 * @param type the type being named | 12196 * @param type the type being named |
| 10438 */ | 12197 */ |
| 10439 void set type(Type2 type2) { | 12198 void set type(Type2 type2) { |
| 10440 this._type = type2; | 12199 this._type = type2; |
| 10441 } | 12200 } |
| 12201 |
| 10442 /** | 12202 /** |
| 10443 * Set the type arguments associated with the type to the given type arguments
. | 12203 * Set the type arguments associated with the type to the given type arguments
. |
| 10444 * @param typeArguments the type arguments associated with the type | 12204 * @param typeArguments the type arguments associated with the type |
| 10445 */ | 12205 */ |
| 10446 void set typeArguments(TypeArgumentList typeArguments2) { | 12206 void set typeArguments(TypeArgumentList typeArguments2) { |
| 10447 this._typeArguments = becomeParentOf(typeArguments2); | 12207 this._typeArguments = becomeParentOf(typeArguments2); |
| 10448 } | 12208 } |
| 10449 void visitChildren(ASTVisitor<Object> visitor) { | 12209 void visitChildren(ASTVisitor<Object> visitor) { |
| 10450 safelyVisitChild(_name, visitor); | 12210 safelyVisitChild(_name, visitor); |
| 10451 safelyVisitChild(_typeArguments, visitor); | 12211 safelyVisitChild(_typeArguments, visitor); |
| 10452 } | 12212 } |
| 10453 } | 12213 } |
| 12214 |
| 10454 /** | 12215 /** |
| 10455 * Instances of the class {@code TypeParameter} represent a type parameter. | 12216 * Instances of the class {@code TypeParameter} represent a type parameter. |
| 10456 * <pre> | 12217 * <pre> |
| 10457 * typeParameter ::={@link SimpleIdentifier name} ('extends' {@link TypeName bou
nd})? | 12218 * typeParameter ::={@link SimpleIdentifier name} ('extends' {@link TypeName bou
nd})? |
| 10458 * </pre> | 12219 * </pre> |
| 10459 * @coverage dart.engine.ast | 12220 * @coverage dart.engine.ast |
| 10460 */ | 12221 */ |
| 10461 class TypeParameter extends Declaration { | 12222 class TypeParameter extends Declaration { |
| 12223 |
| 10462 /** | 12224 /** |
| 10463 * The name of the type parameter. | 12225 * The name of the type parameter. |
| 10464 */ | 12226 */ |
| 10465 SimpleIdentifier _name; | 12227 SimpleIdentifier _name; |
| 12228 |
| 10466 /** | 12229 /** |
| 10467 * The token representing the 'extends' keyword, or {@code null} if there was
no explicit upper | 12230 * The token representing the 'extends' keyword, or {@code null} if there was
no explicit upper |
| 10468 * bound. | 12231 * bound. |
| 10469 */ | 12232 */ |
| 10470 Token _keyword; | 12233 Token _keyword; |
| 12234 |
| 10471 /** | 12235 /** |
| 10472 * The name of the upper bound for legal arguments, or {@code null} if there w
as no explicit upper | 12236 * The name of the upper bound for legal arguments, or {@code null} if there w
as no explicit upper |
| 10473 * bound. | 12237 * bound. |
| 10474 */ | 12238 */ |
| 10475 TypeName _bound; | 12239 TypeName _bound; |
| 12240 |
| 10476 /** | 12241 /** |
| 10477 * Initialize a newly created type parameter. | 12242 * Initialize a newly created type parameter. |
| 10478 * @param comment the documentation comment associated with the type parameter | 12243 * @param comment the documentation comment associated with the type parameter |
| 10479 * @param metadata the annotations associated with the type parameter | 12244 * @param metadata the annotations associated with the type parameter |
| 10480 * @param name the name of the type parameter | 12245 * @param name the name of the type parameter |
| 10481 * @param keyword the token representing the 'extends' keyword | 12246 * @param keyword the token representing the 'extends' keyword |
| 10482 * @param bound the name of the upper bound for legal arguments | 12247 * @param bound the name of the upper bound for legal arguments |
| 10483 */ | 12248 */ |
| 10484 TypeParameter.full(Comment comment, List<Annotation> metadata, SimpleIdentifie
r name, Token keyword, TypeName bound) : super.full(comment, metadata) { | 12249 TypeParameter.full(Comment comment, List<Annotation> metadata, SimpleIdentifie
r name, Token keyword, TypeName bound) : super.full(comment, metadata) { |
| 10485 this._name = becomeParentOf(name); | 12250 this._name = becomeParentOf(name); |
| 10486 this._keyword = keyword; | 12251 this._keyword = keyword; |
| 10487 this._bound = becomeParentOf(bound); | 12252 this._bound = becomeParentOf(bound); |
| 10488 } | 12253 } |
| 12254 |
| 10489 /** | 12255 /** |
| 10490 * Initialize a newly created type parameter. | 12256 * Initialize a newly created type parameter. |
| 10491 * @param comment the documentation comment associated with the type parameter | 12257 * @param comment the documentation comment associated with the type parameter |
| 10492 * @param metadata the annotations associated with the type parameter | 12258 * @param metadata the annotations associated with the type parameter |
| 10493 * @param name the name of the type parameter | 12259 * @param name the name of the type parameter |
| 10494 * @param keyword the token representing the 'extends' keyword | 12260 * @param keyword the token representing the 'extends' keyword |
| 10495 * @param bound the name of the upper bound for legal arguments | 12261 * @param bound the name of the upper bound for legal arguments |
| 10496 */ | 12262 */ |
| 10497 TypeParameter({Comment comment, List<Annotation> metadata, SimpleIdentifier na
me, Token keyword, TypeName bound}) : this.full(comment, metadata, name, keyword
, bound); | 12263 TypeParameter({Comment comment, List<Annotation> metadata, SimpleIdentifier na
me, Token keyword, TypeName bound}) : this.full(comment, metadata, name, keyword
, bound); |
| 10498 accept(ASTVisitor visitor) => visitor.visitTypeParameter(this); | 12264 accept(ASTVisitor visitor) => visitor.visitTypeParameter(this); |
| 12265 |
| 10499 /** | 12266 /** |
| 10500 * Return the name of the upper bound for legal arguments, or {@code null} if
there was no | 12267 * Return the name of the upper bound for legal arguments, or {@code null} if
there was no |
| 10501 * explicit upper bound. | 12268 * explicit upper bound. |
| 10502 * @return the name of the upper bound for legal arguments | 12269 * @return the name of the upper bound for legal arguments |
| 10503 */ | 12270 */ |
| 10504 TypeName get bound => _bound; | 12271 TypeName get bound => _bound; |
| 10505 TypeVariableElement get element => _name != null ? (_name.element as TypeVaria
bleElement) : null; | 12272 TypeVariableElement get element => _name != null ? (_name.element as TypeVaria
bleElement) : null; |
| 10506 Token get endToken { | 12273 Token get endToken { |
| 10507 if (_bound == null) { | 12274 if (_bound == null) { |
| 10508 return _name.endToken; | 12275 return _name.endToken; |
| 10509 } | 12276 } |
| 10510 return _bound.endToken; | 12277 return _bound.endToken; |
| 10511 } | 12278 } |
| 12279 |
| 10512 /** | 12280 /** |
| 10513 * Return the token representing the 'assert' keyword. | 12281 * Return the token representing the 'assert' keyword. |
| 10514 * @return the token representing the 'assert' keyword | 12282 * @return the token representing the 'assert' keyword |
| 10515 */ | 12283 */ |
| 10516 Token get keyword => _keyword; | 12284 Token get keyword => _keyword; |
| 12285 |
| 10517 /** | 12286 /** |
| 10518 * Return the name of the type parameter. | 12287 * Return the name of the type parameter. |
| 10519 * @return the name of the type parameter | 12288 * @return the name of the type parameter |
| 10520 */ | 12289 */ |
| 10521 SimpleIdentifier get name => _name; | 12290 SimpleIdentifier get name => _name; |
| 12291 |
| 10522 /** | 12292 /** |
| 10523 * Set the name of the upper bound for legal arguments to the given type name. | 12293 * Set the name of the upper bound for legal arguments to the given type name. |
| 10524 * @param typeName the name of the upper bound for legal arguments | 12294 * @param typeName the name of the upper bound for legal arguments |
| 10525 */ | 12295 */ |
| 10526 void set bound(TypeName typeName) { | 12296 void set bound(TypeName typeName) { |
| 10527 _bound = becomeParentOf(typeName); | 12297 _bound = becomeParentOf(typeName); |
| 10528 } | 12298 } |
| 12299 |
| 10529 /** | 12300 /** |
| 10530 * Set the token representing the 'assert' keyword to the given token. | 12301 * Set the token representing the 'assert' keyword to the given token. |
| 10531 * @param keyword the token representing the 'assert' keyword | 12302 * @param keyword the token representing the 'assert' keyword |
| 10532 */ | 12303 */ |
| 10533 void set keyword(Token keyword2) { | 12304 void set keyword(Token keyword2) { |
| 10534 this._keyword = keyword2; | 12305 this._keyword = keyword2; |
| 10535 } | 12306 } |
| 12307 |
| 10536 /** | 12308 /** |
| 10537 * Set the name of the type parameter to the given identifier. | 12309 * Set the name of the type parameter to the given identifier. |
| 10538 * @param identifier the name of the type parameter | 12310 * @param identifier the name of the type parameter |
| 10539 */ | 12311 */ |
| 10540 void set name(SimpleIdentifier identifier) { | 12312 void set name(SimpleIdentifier identifier) { |
| 10541 _name = becomeParentOf(identifier); | 12313 _name = becomeParentOf(identifier); |
| 10542 } | 12314 } |
| 10543 void visitChildren(ASTVisitor<Object> visitor) { | 12315 void visitChildren(ASTVisitor<Object> visitor) { |
| 10544 super.visitChildren(visitor); | 12316 super.visitChildren(visitor); |
| 10545 safelyVisitChild(_name, visitor); | 12317 safelyVisitChild(_name, visitor); |
| 10546 safelyVisitChild(_bound, visitor); | 12318 safelyVisitChild(_bound, visitor); |
| 10547 } | 12319 } |
| 10548 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; | 12320 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; |
| 10549 } | 12321 } |
| 12322 |
| 10550 /** | 12323 /** |
| 10551 * Instances of the class {@code TypeParameterList} represent type parameters wi
thin a declaration. | 12324 * Instances of the class {@code TypeParameterList} represent type parameters wi
thin a declaration. |
| 10552 * <pre> | 12325 * <pre> |
| 10553 * typeParameterList ::= | 12326 * typeParameterList ::= |
| 10554 * '<' {@link TypeParameter typeParameter} (',' {@link TypeParameter typeParamet
er})* '>' | 12327 * '<' {@link TypeParameter typeParameter} (',' {@link TypeParameter typeParamet
er})* '>' |
| 10555 * </pre> | 12328 * </pre> |
| 10556 * @coverage dart.engine.ast | 12329 * @coverage dart.engine.ast |
| 10557 */ | 12330 */ |
| 10558 class TypeParameterList extends ASTNode { | 12331 class TypeParameterList extends ASTNode { |
| 12332 |
| 10559 /** | 12333 /** |
| 10560 * The left angle bracket. | 12334 * The left angle bracket. |
| 10561 */ | 12335 */ |
| 10562 Token _leftBracket; | 12336 Token _leftBracket; |
| 12337 |
| 10563 /** | 12338 /** |
| 10564 * The type parameters in the list. | 12339 * The type parameters in the list. |
| 10565 */ | 12340 */ |
| 10566 NodeList<TypeParameter> _typeParameters; | 12341 NodeList<TypeParameter> _typeParameters; |
| 12342 |
| 10567 /** | 12343 /** |
| 10568 * The right angle bracket. | 12344 * The right angle bracket. |
| 10569 */ | 12345 */ |
| 10570 Token _rightBracket; | 12346 Token _rightBracket; |
| 12347 |
| 10571 /** | 12348 /** |
| 10572 * Initialize a newly created list of type parameters. | 12349 * Initialize a newly created list of type parameters. |
| 10573 * @param leftBracket the left angle bracket | 12350 * @param leftBracket the left angle bracket |
| 10574 * @param typeParameters the type parameters in the list | 12351 * @param typeParameters the type parameters in the list |
| 10575 * @param rightBracket the right angle bracket | 12352 * @param rightBracket the right angle bracket |
| 10576 */ | 12353 */ |
| 10577 TypeParameterList.full(Token leftBracket, List<TypeParameter> typeParameters,
Token rightBracket) { | 12354 TypeParameterList.full(Token leftBracket, List<TypeParameter> typeParameters,
Token rightBracket) { |
| 10578 this._typeParameters = new NodeList<TypeParameter>(this); | 12355 this._typeParameters = new NodeList<TypeParameter>(this); |
| 10579 this._leftBracket = leftBracket; | 12356 this._leftBracket = leftBracket; |
| 10580 this._typeParameters.addAll(typeParameters); | 12357 this._typeParameters.addAll(typeParameters); |
| 10581 this._rightBracket = rightBracket; | 12358 this._rightBracket = rightBracket; |
| 10582 } | 12359 } |
| 12360 |
| 10583 /** | 12361 /** |
| 10584 * Initialize a newly created list of type parameters. | 12362 * Initialize a newly created list of type parameters. |
| 10585 * @param leftBracket the left angle bracket | 12363 * @param leftBracket the left angle bracket |
| 10586 * @param typeParameters the type parameters in the list | 12364 * @param typeParameters the type parameters in the list |
| 10587 * @param rightBracket the right angle bracket | 12365 * @param rightBracket the right angle bracket |
| 10588 */ | 12366 */ |
| 10589 TypeParameterList({Token leftBracket, List<TypeParameter> typeParameters, Toke
n rightBracket}) : this.full(leftBracket, typeParameters, rightBracket); | 12367 TypeParameterList({Token leftBracket, List<TypeParameter> typeParameters, Toke
n rightBracket}) : this.full(leftBracket, typeParameters, rightBracket); |
| 10590 accept(ASTVisitor visitor) => visitor.visitTypeParameterList(this); | 12368 accept(ASTVisitor visitor) => visitor.visitTypeParameterList(this); |
| 10591 Token get beginToken => _leftBracket; | 12369 Token get beginToken => _leftBracket; |
| 10592 Token get endToken => _rightBracket; | 12370 Token get endToken => _rightBracket; |
| 12371 |
| 10593 /** | 12372 /** |
| 10594 * Return the left angle bracket. | 12373 * Return the left angle bracket. |
| 10595 * @return the left angle bracket | 12374 * @return the left angle bracket |
| 10596 */ | 12375 */ |
| 10597 Token get leftBracket => _leftBracket; | 12376 Token get leftBracket => _leftBracket; |
| 12377 |
| 10598 /** | 12378 /** |
| 10599 * Return the right angle bracket. | 12379 * Return the right angle bracket. |
| 10600 * @return the right angle bracket | 12380 * @return the right angle bracket |
| 10601 */ | 12381 */ |
| 10602 Token get rightBracket => _rightBracket; | 12382 Token get rightBracket => _rightBracket; |
| 12383 |
| 10603 /** | 12384 /** |
| 10604 * Return the type parameters for the type. | 12385 * Return the type parameters for the type. |
| 10605 * @return the type parameters for the type | 12386 * @return the type parameters for the type |
| 10606 */ | 12387 */ |
| 10607 NodeList<TypeParameter> get typeParameters => _typeParameters; | 12388 NodeList<TypeParameter> get typeParameters => _typeParameters; |
| 10608 void visitChildren(ASTVisitor<Object> visitor) { | 12389 void visitChildren(ASTVisitor<Object> visitor) { |
| 10609 _typeParameters.accept(visitor); | 12390 _typeParameters.accept(visitor); |
| 10610 } | 12391 } |
| 10611 } | 12392 } |
| 12393 |
| 10612 /** | 12394 /** |
| 10613 * The abstract class {@code TypedLiteral} defines the behavior common to litera
ls that have a type | 12395 * The abstract class {@code TypedLiteral} defines the behavior common to litera
ls that have a type |
| 10614 * associated with them. | 12396 * associated with them. |
| 10615 * <pre> | 12397 * <pre> |
| 10616 * listLiteral ::={@link ListLiteral listLiteral}| {@link MapLiteral mapLiteral}
</pre> | 12398 * listLiteral ::={@link ListLiteral listLiteral}| {@link MapLiteral mapLiteral}
</pre> |
| 10617 * @coverage dart.engine.ast | 12399 * @coverage dart.engine.ast |
| 10618 */ | 12400 */ |
| 10619 abstract class TypedLiteral extends Literal { | 12401 abstract class TypedLiteral extends Literal { |
| 12402 |
| 10620 /** | 12403 /** |
| 10621 * The const modifier associated with this literal, or {@code null} if the lit
eral is not a | 12404 * The const modifier associated with this literal, or {@code null} if the lit
eral is not a |
| 10622 * constant. | 12405 * constant. |
| 10623 */ | 12406 */ |
| 10624 Token _modifier; | 12407 Token _modifier; |
| 12408 |
| 10625 /** | 12409 /** |
| 10626 * The type argument associated with this literal, or {@code null} if no type
arguments were | 12410 * The type argument associated with this literal, or {@code null} if no type
arguments were |
| 10627 * declared. | 12411 * declared. |
| 10628 */ | 12412 */ |
| 10629 TypeArgumentList _typeArguments; | 12413 TypeArgumentList _typeArguments; |
| 12414 |
| 10630 /** | 12415 /** |
| 10631 * Initialize a newly created typed literal. | 12416 * Initialize a newly created typed literal. |
| 10632 * @param modifier the const modifier associated with this literal | 12417 * @param modifier the const modifier associated with this literal |
| 10633 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 12418 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 10634 * arguments were declared | 12419 * arguments were declared |
| 10635 */ | 12420 */ |
| 10636 TypedLiteral.full(Token modifier, TypeArgumentList typeArguments) { | 12421 TypedLiteral.full(Token modifier, TypeArgumentList typeArguments) { |
| 10637 this._modifier = modifier; | 12422 this._modifier = modifier; |
| 10638 this._typeArguments = becomeParentOf(typeArguments); | 12423 this._typeArguments = becomeParentOf(typeArguments); |
| 10639 } | 12424 } |
| 12425 |
| 10640 /** | 12426 /** |
| 10641 * Initialize a newly created typed literal. | 12427 * Initialize a newly created typed literal. |
| 10642 * @param modifier the const modifier associated with this literal | 12428 * @param modifier the const modifier associated with this literal |
| 10643 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type | 12429 * @param typeArguments the type argument associated with this literal, or {@c
ode null} if no type |
| 10644 * arguments were declared | 12430 * arguments were declared |
| 10645 */ | 12431 */ |
| 10646 TypedLiteral({Token modifier, TypeArgumentList typeArguments}) : this.full(mod
ifier, typeArguments); | 12432 TypedLiteral({Token modifier, TypeArgumentList typeArguments}) : this.full(mod
ifier, typeArguments); |
| 12433 |
| 10647 /** | 12434 /** |
| 10648 * Return the const modifier associated with this literal. | 12435 * Return the const modifier associated with this literal. |
| 10649 * @return the const modifier associated with this literal | 12436 * @return the const modifier associated with this literal |
| 10650 */ | 12437 */ |
| 10651 Token get modifier => _modifier; | 12438 Token get modifier => _modifier; |
| 12439 |
| 10652 /** | 12440 /** |
| 10653 * Return the type argument associated with this literal, or {@code null} if n
o type arguments | 12441 * Return the type argument associated with this literal, or {@code null} if n
o type arguments |
| 10654 * were declared. | 12442 * were declared. |
| 10655 * @return the type argument associated with this literal | 12443 * @return the type argument associated with this literal |
| 10656 */ | 12444 */ |
| 10657 TypeArgumentList get typeArguments => _typeArguments; | 12445 TypeArgumentList get typeArguments => _typeArguments; |
| 12446 |
| 10658 /** | 12447 /** |
| 10659 * Set the modifiers associated with this literal to the given modifiers. | 12448 * Set the modifiers associated with this literal to the given modifiers. |
| 10660 * @param modifiers the modifiers associated with this literal | 12449 * @param modifiers the modifiers associated with this literal |
| 10661 */ | 12450 */ |
| 10662 void set modifier(Token modifier2) { | 12451 void set modifier(Token modifier2) { |
| 10663 this._modifier = modifier2; | 12452 this._modifier = modifier2; |
| 10664 } | 12453 } |
| 12454 |
| 10665 /** | 12455 /** |
| 10666 * Set the type argument associated with this literal to the given arguments. | 12456 * Set the type argument associated with this literal to the given arguments. |
| 10667 * @param typeArguments the type argument associated with this literal | 12457 * @param typeArguments the type argument associated with this literal |
| 10668 */ | 12458 */ |
| 10669 void set typeArguments(TypeArgumentList typeArguments2) { | 12459 void set typeArguments(TypeArgumentList typeArguments2) { |
| 10670 this._typeArguments = typeArguments2; | 12460 this._typeArguments = typeArguments2; |
| 10671 } | 12461 } |
| 10672 void visitChildren(ASTVisitor<Object> visitor) { | 12462 void visitChildren(ASTVisitor<Object> visitor) { |
| 10673 safelyVisitChild(_typeArguments, visitor); | 12463 safelyVisitChild(_typeArguments, visitor); |
| 10674 } | 12464 } |
| 10675 } | 12465 } |
| 12466 |
| 10676 /** | 12467 /** |
| 10677 * The abstract class {@code UriBasedDirective} defines the behavior common to n
odes that represent | 12468 * The abstract class {@code UriBasedDirective} defines the behavior common to n
odes that represent |
| 10678 * a directive that references a URI. | 12469 * a directive that references a URI. |
| 10679 * <pre> | 12470 * <pre> |
| 10680 * uriBasedDirective ::={@link ExportDirective exportDirective}| {@link ImportDi
rective importDirective}| {@link PartDirective partDirective}</pre> | 12471 * uriBasedDirective ::={@link ExportDirective exportDirective}| {@link ImportDi
rective importDirective}| {@link PartDirective partDirective}</pre> |
| 10681 * @coverage dart.engine.ast | 12472 * @coverage dart.engine.ast |
| 10682 */ | 12473 */ |
| 10683 abstract class UriBasedDirective extends Directive { | 12474 abstract class UriBasedDirective extends Directive { |
| 12475 |
| 10684 /** | 12476 /** |
| 10685 * The URI referenced by this directive. | 12477 * The URI referenced by this directive. |
| 10686 */ | 12478 */ |
| 10687 StringLiteral _uri; | 12479 StringLiteral _uri; |
| 12480 |
| 10688 /** | 12481 /** |
| 10689 * Initialize a newly create URI-based directive. | 12482 * Initialize a newly create URI-based directive. |
| 10690 * @param comment the documentation comment associated with this directive | 12483 * @param comment the documentation comment associated with this directive |
| 10691 * @param metadata the annotations associated with the directive | 12484 * @param metadata the annotations associated with the directive |
| 10692 * @param uri the URI referenced by this directive | 12485 * @param uri the URI referenced by this directive |
| 10693 */ | 12486 */ |
| 10694 UriBasedDirective.full(Comment comment, List<Annotation> metadata, StringLiter
al uri) : super.full(comment, metadata) { | 12487 UriBasedDirective.full(Comment comment, List<Annotation> metadata, StringLiter
al uri) : super.full(comment, metadata) { |
| 10695 this._uri = becomeParentOf(uri); | 12488 this._uri = becomeParentOf(uri); |
| 10696 } | 12489 } |
| 12490 |
| 10697 /** | 12491 /** |
| 10698 * Initialize a newly create URI-based directive. | 12492 * Initialize a newly create URI-based directive. |
| 10699 * @param comment the documentation comment associated with this directive | 12493 * @param comment the documentation comment associated with this directive |
| 10700 * @param metadata the annotations associated with the directive | 12494 * @param metadata the annotations associated with the directive |
| 10701 * @param uri the URI referenced by this directive | 12495 * @param uri the URI referenced by this directive |
| 10702 */ | 12496 */ |
| 10703 UriBasedDirective({Comment comment, List<Annotation> metadata, StringLiteral u
ri}) : this.full(comment, metadata, uri); | 12497 UriBasedDirective({Comment comment, List<Annotation> metadata, StringLiteral u
ri}) : this.full(comment, metadata, uri); |
| 12498 |
| 10704 /** | 12499 /** |
| 10705 * Return the URI referenced by this directive. | 12500 * Return the URI referenced by this directive. |
| 10706 * @return the URI referenced by this directive | 12501 * @return the URI referenced by this directive |
| 10707 */ | 12502 */ |
| 10708 StringLiteral get uri => _uri; | 12503 StringLiteral get uri => _uri; |
| 12504 |
| 12505 /** |
| 12506 * Return the element associated with the URI of this directive, or {@code nul
l} if the AST |
| 12507 * structure has not been resolved or if this URI could not be resolved. Examp
les of the latter |
| 12508 * case include a directive that contains an invalid URL or a URL that does no
t exist. |
| 12509 * @return the element associated with this directive |
| 12510 */ |
| 12511 Element get uriElement; |
| 12512 |
| 10709 /** | 12513 /** |
| 10710 * Set the URI referenced by this directive to the given URI. | 12514 * Set the URI referenced by this directive to the given URI. |
| 10711 * @param uri the URI referenced by this directive | 12515 * @param uri the URI referenced by this directive |
| 10712 */ | 12516 */ |
| 10713 void set uri(StringLiteral uri2) { | 12517 void set uri(StringLiteral uri2) { |
| 10714 this._uri = becomeParentOf(uri2); | 12518 this._uri = becomeParentOf(uri2); |
| 10715 } | 12519 } |
| 10716 void visitChildren(ASTVisitor<Object> visitor) { | 12520 void visitChildren(ASTVisitor<Object> visitor) { |
| 10717 super.visitChildren(visitor); | 12521 super.visitChildren(visitor); |
| 10718 safelyVisitChild(_uri, visitor); | 12522 safelyVisitChild(_uri, visitor); |
| 10719 } | 12523 } |
| 10720 } | 12524 } |
| 12525 |
| 10721 /** | 12526 /** |
| 10722 * Instances of the class {@code VariableDeclaration} represent an identifier th
at has an initial | 12527 * Instances of the class {@code VariableDeclaration} represent an identifier th
at has an initial |
| 10723 * value associated with it. Instances of this class are always children of the
class{@link VariableDeclarationList}. | 12528 * value associated with it. Instances of this class are always children of the
class{@link VariableDeclarationList}. |
| 10724 * <pre> | 12529 * <pre> |
| 10725 * variableDeclaration ::={@link SimpleIdentifier identifier} ('=' {@link Expres
sion initialValue})? | 12530 * variableDeclaration ::={@link SimpleIdentifier identifier} ('=' {@link Expres
sion initialValue})? |
| 10726 * </pre> | 12531 * </pre> |
| 10727 * @coverage dart.engine.ast | 12532 * @coverage dart.engine.ast |
| 10728 */ | 12533 */ |
| 10729 class VariableDeclaration extends Declaration { | 12534 class VariableDeclaration extends Declaration { |
| 12535 |
| 10730 /** | 12536 /** |
| 10731 * The name of the variable being declared. | 12537 * The name of the variable being declared. |
| 10732 */ | 12538 */ |
| 10733 SimpleIdentifier _name; | 12539 SimpleIdentifier _name; |
| 12540 |
| 10734 /** | 12541 /** |
| 10735 * The equal sign separating the variable name from the initial value, or {@co
de null} if the | 12542 * The equal sign separating the variable name from the initial value, or {@co
de null} if the |
| 10736 * initial value was not specified. | 12543 * initial value was not specified. |
| 10737 */ | 12544 */ |
| 10738 Token _equals; | 12545 Token _equals; |
| 12546 |
| 10739 /** | 12547 /** |
| 10740 * The expression used to compute the initial value for the variable, or {@cod
e null} if the | 12548 * The expression used to compute the initial value for the variable, or {@cod
e null} if the |
| 10741 * initial value was not specified. | 12549 * initial value was not specified. |
| 10742 */ | 12550 */ |
| 10743 Expression _initializer; | 12551 Expression _initializer; |
| 12552 |
| 10744 /** | 12553 /** |
| 10745 * Initialize a newly created variable declaration. | 12554 * Initialize a newly created variable declaration. |
| 10746 * @param comment the documentation comment associated with this declaration | 12555 * @param comment the documentation comment associated with this declaration |
| 10747 * @param metadata the annotations associated with this member | 12556 * @param metadata the annotations associated with this member |
| 10748 * @param name the name of the variable being declared | 12557 * @param name the name of the variable being declared |
| 10749 * @param equals the equal sign separating the variable name from the initial
value | 12558 * @param equals the equal sign separating the variable name from the initial
value |
| 10750 * @param initializer the expression used to compute the initial value for the
variable | 12559 * @param initializer the expression used to compute the initial value for the
variable |
| 10751 */ | 12560 */ |
| 10752 VariableDeclaration.full(Comment comment, List<Annotation> metadata, SimpleIde
ntifier name, Token equals, Expression initializer) : super.full(comment, metada
ta) { | 12561 VariableDeclaration.full(Comment comment, List<Annotation> metadata, SimpleIde
ntifier name, Token equals, Expression initializer) : super.full(comment, metada
ta) { |
| 10753 this._name = becomeParentOf(name); | 12562 this._name = becomeParentOf(name); |
| 10754 this._equals = equals; | 12563 this._equals = equals; |
| 10755 this._initializer = becomeParentOf(initializer); | 12564 this._initializer = becomeParentOf(initializer); |
| 10756 } | 12565 } |
| 12566 |
| 10757 /** | 12567 /** |
| 10758 * Initialize a newly created variable declaration. | 12568 * Initialize a newly created variable declaration. |
| 10759 * @param comment the documentation comment associated with this declaration | 12569 * @param comment the documentation comment associated with this declaration |
| 10760 * @param metadata the annotations associated with this member | 12570 * @param metadata the annotations associated with this member |
| 10761 * @param name the name of the variable being declared | 12571 * @param name the name of the variable being declared |
| 10762 * @param equals the equal sign separating the variable name from the initial
value | 12572 * @param equals the equal sign separating the variable name from the initial
value |
| 10763 * @param initializer the expression used to compute the initial value for the
variable | 12573 * @param initializer the expression used to compute the initial value for the
variable |
| 10764 */ | 12574 */ |
| 10765 VariableDeclaration({Comment comment, List<Annotation> metadata, SimpleIdentif
ier name, Token equals, Expression initializer}) : this.full(comment, metadata,
name, equals, initializer); | 12575 VariableDeclaration({Comment comment, List<Annotation> metadata, SimpleIdentif
ier name, Token equals, Expression initializer}) : this.full(comment, metadata,
name, equals, initializer); |
| 10766 accept(ASTVisitor visitor) => visitor.visitVariableDeclaration(this); | 12576 accept(ASTVisitor visitor) => visitor.visitVariableDeclaration(this); |
| 10767 VariableElement get element => _name != null ? (_name.element as VariableEleme
nt) : null; | 12577 VariableElement get element => _name != null ? (_name.element as VariableEleme
nt) : null; |
| 10768 Token get endToken { | 12578 Token get endToken { |
| 10769 if (_initializer != null) { | 12579 if (_initializer != null) { |
| 10770 return _initializer.endToken; | 12580 return _initializer.endToken; |
| 10771 } | 12581 } |
| 10772 return _name.endToken; | 12582 return _name.endToken; |
| 10773 } | 12583 } |
| 12584 |
| 10774 /** | 12585 /** |
| 10775 * Return the equal sign separating the variable name from the initial value,
or {@code null} if | 12586 * Return the equal sign separating the variable name from the initial value,
or {@code null} if |
| 10776 * the initial value was not specified. | 12587 * the initial value was not specified. |
| 10777 * @return the equal sign separating the variable name from the initial value | 12588 * @return the equal sign separating the variable name from the initial value |
| 10778 */ | 12589 */ |
| 10779 Token get equals => _equals; | 12590 Token get equals => _equals; |
| 12591 |
| 10780 /** | 12592 /** |
| 10781 * Return the expression used to compute the initial value for the variable, o
r {@code null} if | 12593 * Return the expression used to compute the initial value for the variable, o
r {@code null} if |
| 10782 * the initial value was not specified. | 12594 * the initial value was not specified. |
| 10783 * @return the expression used to compute the initial value for the variable | 12595 * @return the expression used to compute the initial value for the variable |
| 10784 */ | 12596 */ |
| 10785 Expression get initializer => _initializer; | 12597 Expression get initializer => _initializer; |
| 12598 |
| 10786 /** | 12599 /** |
| 10787 * Return the name of the variable being declared. | 12600 * Return the name of the variable being declared. |
| 10788 * @return the name of the variable being declared | 12601 * @return the name of the variable being declared |
| 10789 */ | 12602 */ |
| 10790 SimpleIdentifier get name => _name; | 12603 SimpleIdentifier get name => _name; |
| 12604 |
| 10791 /** | 12605 /** |
| 10792 * Return {@code true} if this variable was declared with the 'const' modifier
. | 12606 * Return {@code true} if this variable was declared with the 'const' modifier
. |
| 10793 * @return {@code true} if this variable was declared with the 'const' modifie
r | 12607 * @return {@code true} if this variable was declared with the 'const' modifie
r |
| 10794 */ | 12608 */ |
| 10795 bool isConst() { | 12609 bool isConst() { |
| 10796 ASTNode parent2 = parent; | 12610 ASTNode parent2 = parent; |
| 10797 return parent2 is VariableDeclarationList && ((parent2 as VariableDeclaratio
nList)).isConst(); | 12611 return parent2 is VariableDeclarationList && ((parent2 as VariableDeclaratio
nList)).isConst(); |
| 10798 } | 12612 } |
| 12613 |
| 10799 /** | 12614 /** |
| 10800 * Return {@code true} if this variable was declared with the 'final' modifier
. Variables that are | 12615 * Return {@code true} if this variable was declared with the 'final' modifier
. Variables that are |
| 10801 * declared with the 'const' modifier will return {@code false} even though th
ey are implicitly | 12616 * declared with the 'const' modifier will return {@code false} even though th
ey are implicitly |
| 10802 * final. | 12617 * final. |
| 10803 * @return {@code true} if this variable was declared with the 'final' modifie
r | 12618 * @return {@code true} if this variable was declared with the 'final' modifie
r |
| 10804 */ | 12619 */ |
| 10805 bool isFinal() { | 12620 bool isFinal() { |
| 10806 ASTNode parent2 = parent; | 12621 ASTNode parent2 = parent; |
| 10807 return parent2 is VariableDeclarationList && ((parent2 as VariableDeclaratio
nList)).isFinal(); | 12622 return parent2 is VariableDeclarationList && ((parent2 as VariableDeclaratio
nList)).isFinal(); |
| 10808 } | 12623 } |
| 12624 |
| 10809 /** | 12625 /** |
| 10810 * Set the equal sign separating the variable name from the initial value to t
he given token. | 12626 * Set the equal sign separating the variable name from the initial value to t
he given token. |
| 10811 * @param equals the equal sign separating the variable name from the initial
value | 12627 * @param equals the equal sign separating the variable name from the initial
value |
| 10812 */ | 12628 */ |
| 10813 void set equals(Token equals2) { | 12629 void set equals(Token equals2) { |
| 10814 this._equals = equals2; | 12630 this._equals = equals2; |
| 10815 } | 12631 } |
| 12632 |
| 10816 /** | 12633 /** |
| 10817 * Set the expression used to compute the initial value for the variable to th
e given expression. | 12634 * Set the expression used to compute the initial value for the variable to th
e given expression. |
| 10818 * @param initializer the expression used to compute the initial value for the
variable | 12635 * @param initializer the expression used to compute the initial value for the
variable |
| 10819 */ | 12636 */ |
| 10820 void set initializer(Expression initializer2) { | 12637 void set initializer(Expression initializer2) { |
| 10821 this._initializer = becomeParentOf(initializer2); | 12638 this._initializer = becomeParentOf(initializer2); |
| 10822 } | 12639 } |
| 12640 |
| 10823 /** | 12641 /** |
| 10824 * Set the name of the variable being declared to the given identifier. | 12642 * Set the name of the variable being declared to the given identifier. |
| 10825 * @param name the name of the variable being declared | 12643 * @param name the name of the variable being declared |
| 10826 */ | 12644 */ |
| 10827 void set name(SimpleIdentifier name2) { | 12645 void set name(SimpleIdentifier name2) { |
| 10828 this._name = becomeParentOf(name2); | 12646 this._name = becomeParentOf(name2); |
| 10829 } | 12647 } |
| 10830 void visitChildren(ASTVisitor<Object> visitor) { | 12648 void visitChildren(ASTVisitor<Object> visitor) { |
| 10831 super.visitChildren(visitor); | 12649 super.visitChildren(visitor); |
| 10832 safelyVisitChild(_name, visitor); | 12650 safelyVisitChild(_name, visitor); |
| 10833 safelyVisitChild(_initializer, visitor); | 12651 safelyVisitChild(_initializer, visitor); |
| 10834 } | 12652 } |
| 10835 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; | 12653 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; |
| 10836 } | 12654 } |
| 12655 |
| 10837 /** | 12656 /** |
| 10838 * Instances of the class {@code VariableDeclarationList} represent the declarat
ion of one or more | 12657 * Instances of the class {@code VariableDeclarationList} represent the declarat
ion of one or more |
| 10839 * variables of the same type. | 12658 * variables of the same type. |
| 10840 * <pre> | 12659 * <pre> |
| 10841 * variableDeclarationList ::= | 12660 * variableDeclarationList ::= |
| 10842 * finalConstVarOrType {@link VariableDeclaration variableDeclaration} (',' {@li
nk VariableDeclaration variableDeclaration}) | 12661 * finalConstVarOrType {@link VariableDeclaration variableDeclaration} (',' {@li
nk VariableDeclaration variableDeclaration}) |
| 10843 * finalConstVarOrType ::= | 12662 * finalConstVarOrType ::= |
| 10844 * | 'final' {@link TypeName type}? | 12663 * | 'final' {@link TypeName type}? |
| 10845 * | 'const' {@link TypeName type}? | 12664 * | 'const' {@link TypeName type}? |
| 10846 * | 'var' | 12665 * | 'var' |
| 10847 * | {@link TypeName type}</pre> | 12666 * | {@link TypeName type}</pre> |
| 10848 * @coverage dart.engine.ast | 12667 * @coverage dart.engine.ast |
| 10849 */ | 12668 */ |
| 10850 class VariableDeclarationList extends AnnotatedNode { | 12669 class VariableDeclarationList extends AnnotatedNode { |
| 12670 |
| 10851 /** | 12671 /** |
| 10852 * The token representing the 'final', 'const' or 'var' keyword, or {@code nul
l} if no keyword was | 12672 * The token representing the 'final', 'const' or 'var' keyword, or {@code nul
l} if no keyword was |
| 10853 * included. | 12673 * included. |
| 10854 */ | 12674 */ |
| 10855 Token _keyword; | 12675 Token _keyword; |
| 12676 |
| 10856 /** | 12677 /** |
| 10857 * The type of the variables being declared, or {@code null} if no type was pr
ovided. | 12678 * The type of the variables being declared, or {@code null} if no type was pr
ovided. |
| 10858 */ | 12679 */ |
| 10859 TypeName _type; | 12680 TypeName _type; |
| 12681 |
| 10860 /** | 12682 /** |
| 10861 * A list containing the individual variables being declared. | 12683 * A list containing the individual variables being declared. |
| 10862 */ | 12684 */ |
| 10863 NodeList<VariableDeclaration> _variables; | 12685 NodeList<VariableDeclaration> _variables; |
| 12686 |
| 10864 /** | 12687 /** |
| 10865 * Initialize a newly created variable declaration list. | 12688 * Initialize a newly created variable declaration list. |
| 10866 * @param comment the documentation comment associated with this declaration l
ist | 12689 * @param comment the documentation comment associated with this declaration l
ist |
| 10867 * @param metadata the annotations associated with this declaration list | 12690 * @param metadata the annotations associated with this declaration list |
| 10868 * @param keyword the token representing the 'final', 'const' or 'var' keyword | 12691 * @param keyword the token representing the 'final', 'const' or 'var' keyword |
| 10869 * @param type the type of the variables being declared | 12692 * @param type the type of the variables being declared |
| 10870 * @param variables a list containing the individual variables being declared | 12693 * @param variables a list containing the individual variables being declared |
| 10871 */ | 12694 */ |
| 10872 VariableDeclarationList.full(Comment comment, List<Annotation> metadata, Token
keyword, TypeName type, List<VariableDeclaration> variables) : super.full(comme
nt, metadata) { | 12695 VariableDeclarationList.full(Comment comment, List<Annotation> metadata, Token
keyword, TypeName type, List<VariableDeclaration> variables) : super.full(comme
nt, metadata) { |
| 10873 this._variables = new NodeList<VariableDeclaration>(this); | 12696 this._variables = new NodeList<VariableDeclaration>(this); |
| 10874 this._keyword = keyword; | 12697 this._keyword = keyword; |
| 10875 this._type = becomeParentOf(type); | 12698 this._type = becomeParentOf(type); |
| 10876 this._variables.addAll(variables); | 12699 this._variables.addAll(variables); |
| 10877 } | 12700 } |
| 12701 |
| 10878 /** | 12702 /** |
| 10879 * Initialize a newly created variable declaration list. | 12703 * Initialize a newly created variable declaration list. |
| 10880 * @param comment the documentation comment associated with this declaration l
ist | 12704 * @param comment the documentation comment associated with this declaration l
ist |
| 10881 * @param metadata the annotations associated with this declaration list | 12705 * @param metadata the annotations associated with this declaration list |
| 10882 * @param keyword the token representing the 'final', 'const' or 'var' keyword | 12706 * @param keyword the token representing the 'final', 'const' or 'var' keyword |
| 10883 * @param type the type of the variables being declared | 12707 * @param type the type of the variables being declared |
| 10884 * @param variables a list containing the individual variables being declared | 12708 * @param variables a list containing the individual variables being declared |
| 10885 */ | 12709 */ |
| 10886 VariableDeclarationList({Comment comment, List<Annotation> metadata, Token key
word, TypeName type, List<VariableDeclaration> variables}) : this.full(comment,
metadata, keyword, type, variables); | 12710 VariableDeclarationList({Comment comment, List<Annotation> metadata, Token key
word, TypeName type, List<VariableDeclaration> variables}) : this.full(comment,
metadata, keyword, type, variables); |
| 10887 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationList(this); | 12711 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationList(this); |
| 10888 Token get endToken => _variables.endToken; | 12712 Token get endToken => _variables.endToken; |
| 12713 |
| 10889 /** | 12714 /** |
| 10890 * Return the token representing the 'final', 'const' or 'var' keyword, or {@c
ode null} if no | 12715 * Return the token representing the 'final', 'const' or 'var' keyword, or {@c
ode null} if no |
| 10891 * keyword was included. | 12716 * keyword was included. |
| 10892 * @return the token representing the 'final', 'const' or 'var' keyword | 12717 * @return the token representing the 'final', 'const' or 'var' keyword |
| 10893 */ | 12718 */ |
| 10894 Token get keyword => _keyword; | 12719 Token get keyword => _keyword; |
| 12720 |
| 10895 /** | 12721 /** |
| 10896 * Return the type of the variables being declared, or {@code null} if no type
was provided. | 12722 * Return the type of the variables being declared, or {@code null} if no type
was provided. |
| 10897 * @return the type of the variables being declared | 12723 * @return the type of the variables being declared |
| 10898 */ | 12724 */ |
| 10899 TypeName get type => _type; | 12725 TypeName get type => _type; |
| 12726 |
| 10900 /** | 12727 /** |
| 10901 * Return a list containing the individual variables being declared. | 12728 * Return a list containing the individual variables being declared. |
| 10902 * @return a list containing the individual variables being declared | 12729 * @return a list containing the individual variables being declared |
| 10903 */ | 12730 */ |
| 10904 NodeList<VariableDeclaration> get variables => _variables; | 12731 NodeList<VariableDeclaration> get variables => _variables; |
| 12732 |
| 10905 /** | 12733 /** |
| 10906 * Return {@code true} if the variables in this list were declared with the 'c
onst' modifier. | 12734 * Return {@code true} if the variables in this list were declared with the 'c
onst' modifier. |
| 10907 * @return {@code true} if the variables in this list were declared with the '
const' modifier | 12735 * @return {@code true} if the variables in this list were declared with the '
const' modifier |
| 10908 */ | 12736 */ |
| 10909 bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.CONST); | 12737 bool isConst() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.CONST); |
| 12738 |
| 10910 /** | 12739 /** |
| 10911 * Return {@code true} if the variables in this list were declared with the 'f
inal' modifier. | 12740 * Return {@code true} if the variables in this list were declared with the 'f
inal' modifier. |
| 10912 * Variables that are declared with the 'const' modifier will return {@code fa
lse} even though | 12741 * Variables that are declared with the 'const' modifier will return {@code fa
lse} even though |
| 10913 * they are implicitly final. | 12742 * they are implicitly final. |
| 10914 * @return {@code true} if the variables in this list were declared with the '
final' modifier | 12743 * @return {@code true} if the variables in this list were declared with the '
final' modifier |
| 10915 */ | 12744 */ |
| 10916 bool isFinal() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.FINAL); | 12745 bool isFinal() => _keyword is KeywordToken && identical(((_keyword as KeywordT
oken)).keyword, Keyword.FINAL); |
| 12746 |
| 10917 /** | 12747 /** |
| 10918 * Set the token representing the 'final', 'const' or 'var' keyword to the giv
en token. | 12748 * Set the token representing the 'final', 'const' or 'var' keyword to the giv
en token. |
| 10919 * @param keyword the token representing the 'final', 'const' or 'var' keyword | 12749 * @param keyword the token representing the 'final', 'const' or 'var' keyword |
| 10920 */ | 12750 */ |
| 10921 void set keyword(Token keyword2) { | 12751 void set keyword(Token keyword2) { |
| 10922 this._keyword = keyword2; | 12752 this._keyword = keyword2; |
| 10923 } | 12753 } |
| 12754 |
| 10924 /** | 12755 /** |
| 10925 * Set the type of the variables being declared to the given type name. | 12756 * Set the type of the variables being declared to the given type name. |
| 10926 * @param typeName the type of the variables being declared | 12757 * @param typeName the type of the variables being declared |
| 10927 */ | 12758 */ |
| 10928 void set type(TypeName typeName) { | 12759 void set type(TypeName typeName) { |
| 10929 _type = becomeParentOf(typeName); | 12760 _type = becomeParentOf(typeName); |
| 10930 } | 12761 } |
| 10931 void visitChildren(ASTVisitor<Object> visitor) { | 12762 void visitChildren(ASTVisitor<Object> visitor) { |
| 10932 safelyVisitChild(_type, visitor); | 12763 safelyVisitChild(_type, visitor); |
| 10933 _variables.accept(visitor); | 12764 _variables.accept(visitor); |
| 10934 } | 12765 } |
| 10935 Token get firstTokenAfterCommentAndMetadata { | 12766 Token get firstTokenAfterCommentAndMetadata { |
| 10936 if (_keyword != null) { | 12767 if (_keyword != null) { |
| 10937 return _keyword; | 12768 return _keyword; |
| 10938 } else if (_type != null) { | 12769 } else if (_type != null) { |
| 10939 return _type.beginToken; | 12770 return _type.beginToken; |
| 10940 } | 12771 } |
| 10941 return _variables.beginToken; | 12772 return _variables.beginToken; |
| 10942 } | 12773 } |
| 10943 } | 12774 } |
| 12775 |
| 10944 /** | 12776 /** |
| 10945 * Instances of the class {@code VariableDeclarationStatement} represent a list
of variables that | 12777 * Instances of the class {@code VariableDeclarationStatement} represent a list
of variables that |
| 10946 * are being declared in a context where a statement is required. | 12778 * are being declared in a context where a statement is required. |
| 10947 * <pre> | 12779 * <pre> |
| 10948 * variableDeclarationStatement ::={@link VariableDeclarationList variableList}
';' | 12780 * variableDeclarationStatement ::={@link VariableDeclarationList variableList}
';' |
| 10949 * </pre> | 12781 * </pre> |
| 10950 * @coverage dart.engine.ast | 12782 * @coverage dart.engine.ast |
| 10951 */ | 12783 */ |
| 10952 class VariableDeclarationStatement extends Statement { | 12784 class VariableDeclarationStatement extends Statement { |
| 12785 |
| 10953 /** | 12786 /** |
| 10954 * The variables being declared. | 12787 * The variables being declared. |
| 10955 */ | 12788 */ |
| 10956 VariableDeclarationList _variableList; | 12789 VariableDeclarationList _variableList; |
| 12790 |
| 10957 /** | 12791 /** |
| 10958 * The semicolon terminating the statement. | 12792 * The semicolon terminating the statement. |
| 10959 */ | 12793 */ |
| 10960 Token _semicolon; | 12794 Token _semicolon; |
| 12795 |
| 10961 /** | 12796 /** |
| 10962 * Initialize a newly created variable declaration statement. | 12797 * Initialize a newly created variable declaration statement. |
| 10963 * @param variableList the fields being declared | 12798 * @param variableList the fields being declared |
| 10964 * @param semicolon the semicolon terminating the statement | 12799 * @param semicolon the semicolon terminating the statement |
| 10965 */ | 12800 */ |
| 10966 VariableDeclarationStatement.full(VariableDeclarationList variableList, Token
semicolon) { | 12801 VariableDeclarationStatement.full(VariableDeclarationList variableList, Token
semicolon) { |
| 10967 this._variableList = becomeParentOf(variableList); | 12802 this._variableList = becomeParentOf(variableList); |
| 10968 this._semicolon = semicolon; | 12803 this._semicolon = semicolon; |
| 10969 } | 12804 } |
| 12805 |
| 10970 /** | 12806 /** |
| 10971 * Initialize a newly created variable declaration statement. | 12807 * Initialize a newly created variable declaration statement. |
| 10972 * @param variableList the fields being declared | 12808 * @param variableList the fields being declared |
| 10973 * @param semicolon the semicolon terminating the statement | 12809 * @param semicolon the semicolon terminating the statement |
| 10974 */ | 12810 */ |
| 10975 VariableDeclarationStatement({VariableDeclarationList variableList, Token semi
colon}) : this.full(variableList, semicolon); | 12811 VariableDeclarationStatement({VariableDeclarationList variableList, Token semi
colon}) : this.full(variableList, semicolon); |
| 10976 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationStatement(this); | 12812 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationStatement(this); |
| 10977 Token get beginToken => _variableList.beginToken; | 12813 Token get beginToken => _variableList.beginToken; |
| 10978 Token get endToken => _semicolon; | 12814 Token get endToken => _semicolon; |
| 12815 |
| 10979 /** | 12816 /** |
| 10980 * Return the semicolon terminating the statement. | 12817 * Return the semicolon terminating the statement. |
| 10981 * @return the semicolon terminating the statement | 12818 * @return the semicolon terminating the statement |
| 10982 */ | 12819 */ |
| 10983 Token get semicolon => _semicolon; | 12820 Token get semicolon => _semicolon; |
| 12821 |
| 10984 /** | 12822 /** |
| 10985 * Return the variables being declared. | 12823 * Return the variables being declared. |
| 10986 * @return the variables being declared | 12824 * @return the variables being declared |
| 10987 */ | 12825 */ |
| 10988 VariableDeclarationList get variables => _variableList; | 12826 VariableDeclarationList get variables => _variableList; |
| 12827 |
| 10989 /** | 12828 /** |
| 10990 * Set the semicolon terminating the statement to the given token. | 12829 * Set the semicolon terminating the statement to the given token. |
| 10991 * @param semicolon the semicolon terminating the statement | 12830 * @param semicolon the semicolon terminating the statement |
| 10992 */ | 12831 */ |
| 10993 void set semicolon(Token semicolon2) { | 12832 void set semicolon(Token semicolon2) { |
| 10994 this._semicolon = semicolon2; | 12833 this._semicolon = semicolon2; |
| 10995 } | 12834 } |
| 12835 |
| 10996 /** | 12836 /** |
| 10997 * Set the variables being declared to the given list of variables. | 12837 * Set the variables being declared to the given list of variables. |
| 10998 * @param variableList the variables being declared | 12838 * @param variableList the variables being declared |
| 10999 */ | 12839 */ |
| 11000 void set variables(VariableDeclarationList variableList2) { | 12840 void set variables(VariableDeclarationList variableList2) { |
| 11001 this._variableList = becomeParentOf(variableList2); | 12841 this._variableList = becomeParentOf(variableList2); |
| 11002 } | 12842 } |
| 11003 void visitChildren(ASTVisitor<Object> visitor) { | 12843 void visitChildren(ASTVisitor<Object> visitor) { |
| 11004 safelyVisitChild(_variableList, visitor); | 12844 safelyVisitChild(_variableList, visitor); |
| 11005 } | 12845 } |
| 11006 } | 12846 } |
| 12847 |
| 11007 /** | 12848 /** |
| 11008 * Instances of the class {@code WhileStatement} represent a while statement. | 12849 * Instances of the class {@code WhileStatement} represent a while statement. |
| 11009 * <pre> | 12850 * <pre> |
| 11010 * whileStatement ::= | 12851 * whileStatement ::= |
| 11011 * 'while' '(' {@link Expression condition} ')' {@link Statement body}</pre> | 12852 * 'while' '(' {@link Expression condition} ')' {@link Statement body}</pre> |
| 11012 * @coverage dart.engine.ast | 12853 * @coverage dart.engine.ast |
| 11013 */ | 12854 */ |
| 11014 class WhileStatement extends Statement { | 12855 class WhileStatement extends Statement { |
| 12856 |
| 11015 /** | 12857 /** |
| 11016 * The token representing the 'while' keyword. | 12858 * The token representing the 'while' keyword. |
| 11017 */ | 12859 */ |
| 11018 Token _keyword; | 12860 Token _keyword; |
| 12861 |
| 11019 /** | 12862 /** |
| 11020 * The left parenthesis. | 12863 * The left parenthesis. |
| 11021 */ | 12864 */ |
| 11022 Token _leftParenthesis; | 12865 Token _leftParenthesis; |
| 12866 |
| 11023 /** | 12867 /** |
| 11024 * The expression used to determine whether to execute the body of the loop. | 12868 * The expression used to determine whether to execute the body of the loop. |
| 11025 */ | 12869 */ |
| 11026 Expression _condition; | 12870 Expression _condition; |
| 12871 |
| 11027 /** | 12872 /** |
| 11028 * The right parenthesis. | 12873 * The right parenthesis. |
| 11029 */ | 12874 */ |
| 11030 Token _rightParenthesis; | 12875 Token _rightParenthesis; |
| 12876 |
| 11031 /** | 12877 /** |
| 11032 * The body of the loop. | 12878 * The body of the loop. |
| 11033 */ | 12879 */ |
| 11034 Statement _body; | 12880 Statement _body; |
| 12881 |
| 11035 /** | 12882 /** |
| 11036 * Initialize a newly created while statement. | 12883 * Initialize a newly created while statement. |
| 11037 * @param keyword the token representing the 'while' keyword | 12884 * @param keyword the token representing the 'while' keyword |
| 11038 * @param leftParenthesis the left parenthesis | 12885 * @param leftParenthesis the left parenthesis |
| 11039 * @param condition the expression used to determine whether to execute the bo
dy of the loop | 12886 * @param condition the expression used to determine whether to execute the bo
dy of the loop |
| 11040 * @param rightParenthesis the right parenthesis | 12887 * @param rightParenthesis the right parenthesis |
| 11041 * @param body the body of the loop | 12888 * @param body the body of the loop |
| 11042 */ | 12889 */ |
| 11043 WhileStatement.full(Token keyword, Token leftParenthesis, Expression condition
, Token rightParenthesis, Statement body) { | 12890 WhileStatement.full(Token keyword, Token leftParenthesis, Expression condition
, Token rightParenthesis, Statement body) { |
| 11044 this._keyword = keyword; | 12891 this._keyword = keyword; |
| 11045 this._leftParenthesis = leftParenthesis; | 12892 this._leftParenthesis = leftParenthesis; |
| 11046 this._condition = becomeParentOf(condition); | 12893 this._condition = becomeParentOf(condition); |
| 11047 this._rightParenthesis = rightParenthesis; | 12894 this._rightParenthesis = rightParenthesis; |
| 11048 this._body = becomeParentOf(body); | 12895 this._body = becomeParentOf(body); |
| 11049 } | 12896 } |
| 12897 |
| 11050 /** | 12898 /** |
| 11051 * Initialize a newly created while statement. | 12899 * Initialize a newly created while statement. |
| 11052 * @param keyword the token representing the 'while' keyword | 12900 * @param keyword the token representing the 'while' keyword |
| 11053 * @param leftParenthesis the left parenthesis | 12901 * @param leftParenthesis the left parenthesis |
| 11054 * @param condition the expression used to determine whether to execute the bo
dy of the loop | 12902 * @param condition the expression used to determine whether to execute the bo
dy of the loop |
| 11055 * @param rightParenthesis the right parenthesis | 12903 * @param rightParenthesis the right parenthesis |
| 11056 * @param body the body of the loop | 12904 * @param body the body of the loop |
| 11057 */ | 12905 */ |
| 11058 WhileStatement({Token keyword, Token leftParenthesis, Expression condition, To
ken rightParenthesis, Statement body}) : this.full(keyword, leftParenthesis, con
dition, rightParenthesis, body); | 12906 WhileStatement({Token keyword, Token leftParenthesis, Expression condition, To
ken rightParenthesis, Statement body}) : this.full(keyword, leftParenthesis, con
dition, rightParenthesis, body); |
| 11059 accept(ASTVisitor visitor) => visitor.visitWhileStatement(this); | 12907 accept(ASTVisitor visitor) => visitor.visitWhileStatement(this); |
| 11060 Token get beginToken => _keyword; | 12908 Token get beginToken => _keyword; |
| 12909 |
| 11061 /** | 12910 /** |
| 11062 * Return the body of the loop. | 12911 * Return the body of the loop. |
| 11063 * @return the body of the loop | 12912 * @return the body of the loop |
| 11064 */ | 12913 */ |
| 11065 Statement get body => _body; | 12914 Statement get body => _body; |
| 12915 |
| 11066 /** | 12916 /** |
| 11067 * Return the expression used to determine whether to execute the body of the
loop. | 12917 * Return the expression used to determine whether to execute the body of the
loop. |
| 11068 * @return the expression used to determine whether to execute the body of the
loop | 12918 * @return the expression used to determine whether to execute the body of the
loop |
| 11069 */ | 12919 */ |
| 11070 Expression get condition => _condition; | 12920 Expression get condition => _condition; |
| 11071 Token get endToken => _body.endToken; | 12921 Token get endToken => _body.endToken; |
| 12922 |
| 11072 /** | 12923 /** |
| 11073 * Return the token representing the 'while' keyword. | 12924 * Return the token representing the 'while' keyword. |
| 11074 * @return the token representing the 'while' keyword | 12925 * @return the token representing the 'while' keyword |
| 11075 */ | 12926 */ |
| 11076 Token get keyword => _keyword; | 12927 Token get keyword => _keyword; |
| 12928 |
| 11077 /** | 12929 /** |
| 11078 * Return the left parenthesis. | 12930 * Return the left parenthesis. |
| 11079 * @return the left parenthesis | 12931 * @return the left parenthesis |
| 11080 */ | 12932 */ |
| 11081 Token get leftParenthesis => _leftParenthesis; | 12933 Token get leftParenthesis => _leftParenthesis; |
| 12934 |
| 11082 /** | 12935 /** |
| 11083 * Return the right parenthesis. | 12936 * Return the right parenthesis. |
| 11084 * @return the right parenthesis | 12937 * @return the right parenthesis |
| 11085 */ | 12938 */ |
| 11086 Token get rightParenthesis => _rightParenthesis; | 12939 Token get rightParenthesis => _rightParenthesis; |
| 12940 |
| 11087 /** | 12941 /** |
| 11088 * Set the body of the loop to the given statement. | 12942 * Set the body of the loop to the given statement. |
| 11089 * @param statement the body of the loop | 12943 * @param statement the body of the loop |
| 11090 */ | 12944 */ |
| 11091 void set body(Statement statement) { | 12945 void set body(Statement statement) { |
| 11092 _body = becomeParentOf(statement); | 12946 _body = becomeParentOf(statement); |
| 11093 } | 12947 } |
| 12948 |
| 11094 /** | 12949 /** |
| 11095 * Set the expression used to determine whether to execute the body of the loo
p to the given | 12950 * Set the expression used to determine whether to execute the body of the loo
p to the given |
| 11096 * expression. | 12951 * expression. |
| 11097 * @param expression the expression used to determine whether to execute the b
ody of the loop | 12952 * @param expression the expression used to determine whether to execute the b
ody of the loop |
| 11098 */ | 12953 */ |
| 11099 void set condition(Expression expression) { | 12954 void set condition(Expression expression) { |
| 11100 _condition = becomeParentOf(expression); | 12955 _condition = becomeParentOf(expression); |
| 11101 } | 12956 } |
| 12957 |
| 11102 /** | 12958 /** |
| 11103 * Set the token representing the 'while' keyword to the given token. | 12959 * Set the token representing the 'while' keyword to the given token. |
| 11104 * @param keyword the token representing the 'while' keyword | 12960 * @param keyword the token representing the 'while' keyword |
| 11105 */ | 12961 */ |
| 11106 void set keyword(Token keyword2) { | 12962 void set keyword(Token keyword2) { |
| 11107 this._keyword = keyword2; | 12963 this._keyword = keyword2; |
| 11108 } | 12964 } |
| 12965 |
| 11109 /** | 12966 /** |
| 11110 * Set the left parenthesis to the given token. | 12967 * Set the left parenthesis to the given token. |
| 11111 * @param leftParenthesis the left parenthesis | 12968 * @param leftParenthesis the left parenthesis |
| 11112 */ | 12969 */ |
| 11113 void set leftParenthesis(Token leftParenthesis2) { | 12970 void set leftParenthesis(Token leftParenthesis2) { |
| 11114 this._leftParenthesis = leftParenthesis2; | 12971 this._leftParenthesis = leftParenthesis2; |
| 11115 } | 12972 } |
| 12973 |
| 11116 /** | 12974 /** |
| 11117 * Set the right parenthesis to the given token. | 12975 * Set the right parenthesis to the given token. |
| 11118 * @param rightParenthesis the right parenthesis | 12976 * @param rightParenthesis the right parenthesis |
| 11119 */ | 12977 */ |
| 11120 void set rightParenthesis(Token rightParenthesis2) { | 12978 void set rightParenthesis(Token rightParenthesis2) { |
| 11121 this._rightParenthesis = rightParenthesis2; | 12979 this._rightParenthesis = rightParenthesis2; |
| 11122 } | 12980 } |
| 11123 void visitChildren(ASTVisitor<Object> visitor) { | 12981 void visitChildren(ASTVisitor<Object> visitor) { |
| 11124 safelyVisitChild(_condition, visitor); | 12982 safelyVisitChild(_condition, visitor); |
| 11125 safelyVisitChild(_body, visitor); | 12983 safelyVisitChild(_body, visitor); |
| 11126 } | 12984 } |
| 11127 } | 12985 } |
| 12986 |
| 11128 /** | 12987 /** |
| 11129 * Instances of the class {@code WithClause} represent the with clause in a clas
s declaration. | 12988 * Instances of the class {@code WithClause} represent the with clause in a clas
s declaration. |
| 11130 * <pre> | 12989 * <pre> |
| 11131 * withClause ::= | 12990 * withClause ::= |
| 11132 * 'with' {@link TypeName mixin} (',' {@link TypeName mixin}) | 12991 * 'with' {@link TypeName mixin} (',' {@link TypeName mixin}) |
| 11133 * </pre> | 12992 * </pre> |
| 11134 * @coverage dart.engine.ast | 12993 * @coverage dart.engine.ast |
| 11135 */ | 12994 */ |
| 11136 class WithClause extends ASTNode { | 12995 class WithClause extends ASTNode { |
| 12996 |
| 11137 /** | 12997 /** |
| 11138 * The token representing the 'with' keyword. | 12998 * The token representing the 'with' keyword. |
| 11139 */ | 12999 */ |
| 11140 Token _withKeyword; | 13000 Token _withKeyword; |
| 13001 |
| 11141 /** | 13002 /** |
| 11142 * The names of the mixins that were specified. | 13003 * The names of the mixins that were specified. |
| 11143 */ | 13004 */ |
| 11144 NodeList<TypeName> _mixinTypes; | 13005 NodeList<TypeName> _mixinTypes; |
| 13006 |
| 11145 /** | 13007 /** |
| 11146 * Initialize a newly created with clause. | 13008 * Initialize a newly created with clause. |
| 11147 * @param withKeyword the token representing the 'with' keyword | 13009 * @param withKeyword the token representing the 'with' keyword |
| 11148 * @param mixinTypes the names of the mixins that were specified | 13010 * @param mixinTypes the names of the mixins that were specified |
| 11149 */ | 13011 */ |
| 11150 WithClause.full(Token withKeyword, List<TypeName> mixinTypes) { | 13012 WithClause.full(Token withKeyword, List<TypeName> mixinTypes) { |
| 11151 this._mixinTypes = new NodeList<TypeName>(this); | 13013 this._mixinTypes = new NodeList<TypeName>(this); |
| 11152 this._withKeyword = withKeyword; | 13014 this._withKeyword = withKeyword; |
| 11153 this._mixinTypes.addAll(mixinTypes); | 13015 this._mixinTypes.addAll(mixinTypes); |
| 11154 } | 13016 } |
| 13017 |
| 11155 /** | 13018 /** |
| 11156 * Initialize a newly created with clause. | 13019 * Initialize a newly created with clause. |
| 11157 * @param withKeyword the token representing the 'with' keyword | 13020 * @param withKeyword the token representing the 'with' keyword |
| 11158 * @param mixinTypes the names of the mixins that were specified | 13021 * @param mixinTypes the names of the mixins that were specified |
| 11159 */ | 13022 */ |
| 11160 WithClause({Token withKeyword, List<TypeName> mixinTypes}) : this.full(withKey
word, mixinTypes); | 13023 WithClause({Token withKeyword, List<TypeName> mixinTypes}) : this.full(withKey
word, mixinTypes); |
| 11161 accept(ASTVisitor visitor) => visitor.visitWithClause(this); | 13024 accept(ASTVisitor visitor) => visitor.visitWithClause(this); |
| 11162 Token get beginToken => _withKeyword; | 13025 Token get beginToken => _withKeyword; |
| 11163 Token get endToken => _mixinTypes.endToken; | 13026 Token get endToken => _mixinTypes.endToken; |
| 13027 |
| 11164 /** | 13028 /** |
| 11165 * Return the names of the mixins that were specified. | 13029 * Return the names of the mixins that were specified. |
| 11166 * @return the names of the mixins that were specified | 13030 * @return the names of the mixins that were specified |
| 11167 */ | 13031 */ |
| 11168 NodeList<TypeName> get mixinTypes => _mixinTypes; | 13032 NodeList<TypeName> get mixinTypes => _mixinTypes; |
| 13033 |
| 11169 /** | 13034 /** |
| 11170 * Return the token representing the 'with' keyword. | 13035 * Return the token representing the 'with' keyword. |
| 11171 * @return the token representing the 'with' keyword | 13036 * @return the token representing the 'with' keyword |
| 11172 */ | 13037 */ |
| 11173 Token get withKeyword => _withKeyword; | 13038 Token get withKeyword => _withKeyword; |
| 13039 |
| 11174 /** | 13040 /** |
| 11175 * Set the token representing the 'with' keyword to the given token. | 13041 * Set the token representing the 'with' keyword to the given token. |
| 11176 * @param withKeyword the token representing the 'with' keyword | 13042 * @param withKeyword the token representing the 'with' keyword |
| 11177 */ | 13043 */ |
| 11178 void set mixinKeyword(Token withKeyword2) { | 13044 void set mixinKeyword(Token withKeyword2) { |
| 11179 this._withKeyword = withKeyword2; | 13045 this._withKeyword = withKeyword2; |
| 11180 } | 13046 } |
| 11181 void visitChildren(ASTVisitor<Object> visitor) { | 13047 void visitChildren(ASTVisitor<Object> visitor) { |
| 11182 _mixinTypes.accept(visitor); | 13048 _mixinTypes.accept(visitor); |
| 11183 } | 13049 } |
| 11184 } | 13050 } |
| 13051 |
| 13052 /** |
| 13053 * Instances of the class {@code BreadthFirstVisitor} implement an AST visitor t
hat will recursively |
| 13054 * visit all of the nodes in an AST structure, similar to {@link GeneralizingAST
Visitor}. This |
| 13055 * visitor uses a breadth-first ordering rather than the depth-first ordering of
{@link GeneralizingASTVisitor}. |
| 13056 * @coverage dart.engine.ast |
| 13057 */ |
| 13058 class BreadthFirstVisitor<R> extends GeneralizingASTVisitor<R> { |
| 13059 Queue<ASTNode> _queue = new Queue<ASTNode>(); |
| 13060 GeneralizingASTVisitor<Object> _childVisitor; |
| 13061 |
| 13062 /** |
| 13063 * Visit all nodes in the tree starting at the given {@code root} node, in dep
th-first order. |
| 13064 * @param root the root of the ASTNode tree |
| 13065 */ |
| 13066 void visitAllNodes(ASTNode root) { |
| 13067 _queue.add(root); |
| 13068 while (!_queue.isEmpty) { |
| 13069 ASTNode next = _queue.removeFirst(); |
| 13070 next.accept(this); |
| 13071 } |
| 13072 } |
| 13073 R visitNode(ASTNode node) { |
| 13074 node.visitChildren(_childVisitor); |
| 13075 return null; |
| 13076 } |
| 13077 BreadthFirstVisitor() { |
| 13078 this._childVisitor = new GeneralizingASTVisitor_1(this); |
| 13079 } |
| 13080 } |
| 13081 class GeneralizingASTVisitor_1 extends GeneralizingASTVisitor<Object> { |
| 13082 final BreadthFirstVisitor BreadthFirstVisitor_this; |
| 13083 GeneralizingASTVisitor_1(this.BreadthFirstVisitor_this) : super(); |
| 13084 Object visitNode(ASTNode node) { |
| 13085 BreadthFirstVisitor_this._queue.add(node); |
| 13086 return null; |
| 13087 } |
| 13088 } |
| 13089 |
| 11185 /** | 13090 /** |
| 11186 * Instances of the class {@code ConstantEvaluator} evaluate constant expression
s to produce their | 13091 * Instances of the class {@code ConstantEvaluator} evaluate constant expression
s to produce their |
| 11187 * compile-time value. According to the Dart Language Specification: <blockquote
> A constant | 13092 * compile-time value. According to the Dart Language Specification: <blockquote
> A constant |
| 11188 * expression is one of the following: | 13093 * expression is one of the following: |
| 11189 * <ul> | 13094 * <ul> |
| 11190 * <li>A literal number.</li> | 13095 * <li>A literal number.</li> |
| 11191 * <li>A literal boolean.</li> | 13096 * <li>A literal boolean.</li> |
| 11192 * <li>A literal string where any interpolated expression is a compile-time cons
tant that evaluates | 13097 * <li>A literal string where any interpolated expression is a compile-time cons
tant that evaluates |
| 11193 * to a numeric, string or boolean value or to {@code null}.</li> | 13098 * to a numeric, string or boolean value or to {@code null}.</li> |
| 11194 * <li>{@code null}.</li> | 13099 * <li>{@code null}.</li> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 11208 * </ul> | 13113 * </ul> |
| 11209 * </blockquote> The values returned by instances of this class are therefore {@
code null} and | 13114 * </blockquote> The values returned by instances of this class are therefore {@
code null} and |
| 11210 * instances of the classes {@code Boolean}, {@code BigInteger}, {@code Double},
{@code String}, and{@code DartObject}. | 13115 * instances of the classes {@code Boolean}, {@code BigInteger}, {@code Double},
{@code String}, and{@code DartObject}. |
| 11211 * <p> | 13116 * <p> |
| 11212 * In addition, this class defines several values that can be returned to indica
te various | 13117 * In addition, this class defines several values that can be returned to indica
te various |
| 11213 * conditions encountered during evaluation. These are documented with the stati
c field that define | 13118 * conditions encountered during evaluation. These are documented with the stati
c field that define |
| 11214 * those values. | 13119 * those values. |
| 11215 * @coverage dart.engine.ast | 13120 * @coverage dart.engine.ast |
| 11216 */ | 13121 */ |
| 11217 class ConstantEvaluator extends GeneralizingASTVisitor<Object> { | 13122 class ConstantEvaluator extends GeneralizingASTVisitor<Object> { |
| 13123 |
| 11218 /** | 13124 /** |
| 11219 * The value returned for expressions (or non-expression nodes) that are not c
ompile-time constant | 13125 * The value returned for expressions (or non-expression nodes) that are not c
ompile-time constant |
| 11220 * expressions. | 13126 * expressions. |
| 11221 */ | 13127 */ |
| 11222 static Object NOT_A_CONSTANT = new Object(); | 13128 static Object NOT_A_CONSTANT = new Object(); |
| 11223 /** | |
| 11224 * Initialize a newly created constant evaluator. | |
| 11225 */ | |
| 11226 ConstantEvaluator() { | |
| 11227 } | |
| 11228 Object visitAdjacentStrings(AdjacentStrings node) { | 13129 Object visitAdjacentStrings(AdjacentStrings node) { |
| 11229 JavaStringBuilder builder = new JavaStringBuilder(); | 13130 JavaStringBuilder builder = new JavaStringBuilder(); |
| 11230 for (StringLiteral string in node.strings) { | 13131 for (StringLiteral string in node.strings) { |
| 11231 Object value = string.accept(this); | 13132 Object value = string.accept(this); |
| 11232 if (identical(value, NOT_A_CONSTANT)) { | 13133 if (identical(value, NOT_A_CONSTANT)) { |
| 11233 return value; | 13134 return value; |
| 11234 } | 13135 } |
| 11235 builder.append(value); | 13136 builder.append(value); |
| 11236 } | 13137 } |
| 11237 return builder.toString(); | 13138 return builder.toString(); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11442 JavaStringBuilder builder = new JavaStringBuilder(); | 13343 JavaStringBuilder builder = new JavaStringBuilder(); |
| 11443 for (InterpolationElement element in node.elements) { | 13344 for (InterpolationElement element in node.elements) { |
| 11444 Object value = element.accept(this); | 13345 Object value = element.accept(this); |
| 11445 if (identical(value, NOT_A_CONSTANT)) { | 13346 if (identical(value, NOT_A_CONSTANT)) { |
| 11446 return value; | 13347 return value; |
| 11447 } | 13348 } |
| 11448 builder.append(value); | 13349 builder.append(value); |
| 11449 } | 13350 } |
| 11450 return builder.toString(); | 13351 return builder.toString(); |
| 11451 } | 13352 } |
| 13353 |
| 11452 /** | 13354 /** |
| 11453 * Return the constant value of the static constant represented by the given e
lement. | 13355 * Return the constant value of the static constant represented by the given e
lement. |
| 11454 * @param element the element whose value is to be returned | 13356 * @param element the element whose value is to be returned |
| 11455 * @return the constant value of the static constant | 13357 * @return the constant value of the static constant |
| 11456 */ | 13358 */ |
| 11457 Object getConstantValue(Element element) { | 13359 Object getConstantValue(Element element) { |
| 11458 if (element is FieldElement) { | 13360 if (element is FieldElement) { |
| 11459 FieldElement field = element as FieldElement; | 13361 FieldElement field = element as FieldElement; |
| 11460 if (field.isStatic() && field.isConst()) { | 13362 if (field.isStatic() && field.isConst()) { |
| 11461 } | 13363 } |
| 11462 } | 13364 } |
| 11463 return NOT_A_CONSTANT; | 13365 return NOT_A_CONSTANT; |
| 11464 } | 13366 } |
| 11465 } | 13367 } |
| 13368 |
| 11466 /** | 13369 /** |
| 11467 * Instances of the class {@code ElementLocator} locate the {@link Element Dart
model element}associated with a given {@link ASTNode AST node}. | 13370 * Instances of the class {@code ElementLocator} locate the {@link Element Dart
model element}associated with a given {@link ASTNode AST node}. |
| 11468 * @coverage dart.engine.ast | 13371 * @coverage dart.engine.ast |
| 11469 */ | 13372 */ |
| 11470 class ElementLocator { | 13373 class ElementLocator { |
| 13374 |
| 11471 /** | 13375 /** |
| 11472 * Locate the {@link Element Dart model element} associated with the given {@l
ink ASTNode AST | 13376 * Locate the {@link Element Dart model element} associated with the given {@l
ink ASTNode AST |
| 11473 * node}. | 13377 * node}. |
| 11474 * @param node the node (not {@code null}) | 13378 * @param node the node (not {@code null}) |
| 11475 * @return the associated element, or {@code null} if none is found | 13379 * @return the associated element, or {@code null} if none is found |
| 11476 */ | 13380 */ |
| 11477 static Element locate(ASTNode node) { | 13381 static Element locate(ASTNode node) { |
| 11478 ElementLocator_ElementMapper mapper = new ElementLocator_ElementMapper(); | 13382 ElementLocator_ElementMapper mapper = new ElementLocator_ElementMapper(); |
| 11479 return node.accept(mapper); | 13383 return node.accept(mapper); |
| 11480 } | 13384 } |
| 11481 /** | |
| 11482 * Clients should use {@link #locate(ASTNode)}. | |
| 11483 */ | |
| 11484 ElementLocator() { | |
| 11485 } | |
| 11486 } | 13385 } |
| 13386 |
| 11487 /** | 13387 /** |
| 11488 * Visitor that maps nodes to elements. | 13388 * Visitor that maps nodes to elements. |
| 11489 */ | 13389 */ |
| 11490 class ElementLocator_ElementMapper extends GeneralizingASTVisitor<Element> { | 13390 class ElementLocator_ElementMapper extends GeneralizingASTVisitor<Element> { |
| 11491 Element visitBinaryExpression(BinaryExpression node) => node.element; | 13391 Element visitBinaryExpression(BinaryExpression node) => node.element; |
| 11492 Element visitClassDeclaration(ClassDeclaration node) => node.element; | 13392 Element visitClassDeclaration(ClassDeclaration node) => node.element; |
| 11493 Element visitCompilationUnit(CompilationUnit node) => node.element; | 13393 Element visitCompilationUnit(CompilationUnit node) => node.element; |
| 11494 Element visitConstructorDeclaration(ConstructorDeclaration node) => node.eleme
nt; | 13394 Element visitConstructorDeclaration(ConstructorDeclaration node) => node.eleme
nt; |
| 11495 Element visitFunctionDeclaration(FunctionDeclaration node) => node.element; | 13395 Element visitFunctionDeclaration(FunctionDeclaration node) => node.element; |
| 11496 Element visitIdentifier(Identifier node) { | 13396 Element visitIdentifier(Identifier node) { |
| 11497 ASTNode parent2 = node.parent; | 13397 ASTNode parent2 = node.parent; |
| 11498 if (parent2 is ConstructorDeclaration) { | 13398 if (parent2 is ConstructorDeclaration) { |
| 11499 ConstructorDeclaration decl = parent2 as ConstructorDeclaration; | 13399 ConstructorDeclaration decl = parent2 as ConstructorDeclaration; |
| 11500 Identifier returnType2 = decl.returnType; | 13400 Identifier returnType2 = decl.returnType; |
| 11501 if (identical(returnType2, node)) { | 13401 if (identical(returnType2, node)) { |
| 11502 SimpleIdentifier name2 = decl.name; | 13402 SimpleIdentifier name2 = decl.name; |
| 11503 if (name2 != null) { | 13403 if (name2 != null) { |
| 11504 return name2.element; | 13404 return name2.element; |
| 11505 } | 13405 } |
| 11506 Element element2 = node.element; | 13406 Element element2 = node.element; |
| 11507 if (element2 is ClassElement) { | 13407 if (element2 is ClassElement) { |
| 11508 return ((element2 as ClassElement)).unnamedConstructor; | 13408 return ((element2 as ClassElement)).unnamedConstructor; |
| 11509 } | 13409 } |
| 11510 } | 13410 } |
| 11511 } | 13411 } |
| 13412 if (parent2 is LibraryIdentifier) { |
| 13413 ASTNode grandParent = ((parent2 as LibraryIdentifier)).parent; |
| 13414 if (grandParent is PartOfDirective) { |
| 13415 Element element3 = ((grandParent as PartOfDirective)).element; |
| 13416 if (element3 is LibraryElement) { |
| 13417 return ((element3 as LibraryElement)).definingCompilationUnit; |
| 13418 } |
| 13419 } |
| 13420 } |
| 11512 return node.element; | 13421 return node.element; |
| 11513 } | 13422 } |
| 11514 Element visitImportDirective(ImportDirective node) => node.element; | 13423 Element visitImportDirective(ImportDirective node) => node.element; |
| 11515 Element visitIndexExpression(IndexExpression node) => node.element; | 13424 Element visitIndexExpression(IndexExpression node) => node.element; |
| 11516 Element visitInstanceCreationExpression(InstanceCreationExpression node) => no
de.element; | 13425 Element visitInstanceCreationExpression(InstanceCreationExpression node) => no
de.element; |
| 11517 Element visitLibraryDirective(LibraryDirective node) => node.element; | 13426 Element visitLibraryDirective(LibraryDirective node) => node.element; |
| 11518 Element visitMethodDeclaration(MethodDeclaration node) => node.element; | 13427 Element visitMethodDeclaration(MethodDeclaration node) => node.element; |
| 11519 Element visitMethodInvocation(MethodInvocation node) => node.methodName.elemen
t; | 13428 Element visitMethodInvocation(MethodInvocation node) => node.methodName.elemen
t; |
| 11520 Element visitPostfixExpression(PostfixExpression node) => node.element; | 13429 Element visitPostfixExpression(PostfixExpression node) => node.element; |
| 11521 Element visitPrefixedIdentifier(PrefixedIdentifier node) => node.element; | 13430 Element visitPrefixedIdentifier(PrefixedIdentifier node) => node.element; |
| 11522 Element visitPrefixExpression(PrefixExpression node) => node.element; | 13431 Element visitPrefixExpression(PrefixExpression node) => node.element; |
| 11523 Element visitStringLiteral(StringLiteral node) { | 13432 Element visitStringLiteral(StringLiteral node) { |
| 11524 ASTNode parent2 = node.parent; | 13433 ASTNode parent2 = node.parent; |
| 11525 if (parent2 is UriBasedDirective) { | 13434 if (parent2 is UriBasedDirective) { |
| 11526 return ((parent2 as UriBasedDirective)).element; | 13435 return ((parent2 as UriBasedDirective)).uriElement; |
| 11527 } | 13436 } |
| 11528 return null; | 13437 return null; |
| 11529 } | 13438 } |
| 11530 Element visitVariableDeclaration(VariableDeclaration node) => node.element; | 13439 Element visitVariableDeclaration(VariableDeclaration node) => node.element; |
| 11531 } | 13440 } |
| 13441 |
| 11532 /** | 13442 /** |
| 11533 * Instances of the class {@code GeneralizingASTVisitor} implement an AST visito
r that will | 13443 * Instances of the class {@code GeneralizingASTVisitor} implement an AST visito
r that will |
| 11534 * 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 | 13444 * 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 |
| 11535 * will the visit method for that specific type of node be invoked, but addition
al methods for the | 13445 * will the visit method for that specific type of node be invoked, but addition
al methods for the |
| 11536 * superclasses of that node will also be invoked. For example, using an instanc
e of this class to | 13446 * superclasses of that node will also be invoked. For example, using an instanc
e of this class to |
| 11537 * visit a {@link Block} will cause the method {@link #visitBlock(Block)} to be
invoked but will | 13447 * visit a {@link Block} will cause the method {@link #visitBlock(Block)} to be
invoked but will |
| 11538 * also cause the methods {@link #visitStatement(Statement)} and {@link #visitNo
de(ASTNode)} to be | 13448 * also cause the methods {@link #visitStatement(Statement)} and {@link #visitNo
de(ASTNode)} to be |
| 11539 * subsequently invoked. This allows visitors to be written that visit all state
ments without | 13449 * subsequently invoked. This allows visitors to be written that visit all state
ments without |
| 11540 * needing to override the visit method for each of the specific subclasses of {
@link Statement}. | 13450 * needing to override the visit method for each of the specific subclasses of {
@link Statement}. |
| 11541 * <p> | 13451 * <p> |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11588 R visitExpressionFunctionBody(ExpressionFunctionBody node) => visitFunctionBod
y(node); | 13498 R visitExpressionFunctionBody(ExpressionFunctionBody node) => visitFunctionBod
y(node); |
| 11589 R visitExpressionStatement(ExpressionStatement node) => visitStatement(node); | 13499 R visitExpressionStatement(ExpressionStatement node) => visitStatement(node); |
| 11590 R visitExtendsClause(ExtendsClause node) => visitNode(node); | 13500 R visitExtendsClause(ExtendsClause node) => visitNode(node); |
| 11591 R visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node); | 13501 R visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node); |
| 11592 R visitFieldFormalParameter(FieldFormalParameter node) => visitNormalFormalPar
ameter(node); | 13502 R visitFieldFormalParameter(FieldFormalParameter node) => visitNormalFormalPar
ameter(node); |
| 11593 R visitForEachStatement(ForEachStatement node) => visitStatement(node); | 13503 R visitForEachStatement(ForEachStatement node) => visitStatement(node); |
| 11594 R visitFormalParameter(FormalParameter node) => visitNode(node); | 13504 R visitFormalParameter(FormalParameter node) => visitNode(node); |
| 11595 R visitFormalParameterList(FormalParameterList node) => visitNode(node); | 13505 R visitFormalParameterList(FormalParameterList node) => visitNode(node); |
| 11596 R visitForStatement(ForStatement node) => visitStatement(node); | 13506 R visitForStatement(ForStatement node) => visitStatement(node); |
| 11597 R visitFunctionBody(FunctionBody node) => visitNode(node); | 13507 R visitFunctionBody(FunctionBody node) => visitNode(node); |
| 11598 R visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node); | 13508 R visitFunctionDeclaration(FunctionDeclaration node) => visitCompilationUnitMe
mber(node); |
| 11599 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) => visi
tStatement(node); | 13509 R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) => visi
tStatement(node); |
| 11600 R visitFunctionExpression(FunctionExpression node) => visitExpression(node); | 13510 R visitFunctionExpression(FunctionExpression node) => visitExpression(node); |
| 11601 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) => visi
tExpression(node); | 13511 R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) => visi
tExpression(node); |
| 11602 R visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node); | 13512 R visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node); |
| 11603 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) => visi
tNormalFormalParameter(node); | 13513 R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) => visi
tNormalFormalParameter(node); |
| 11604 R visitHideCombinator(HideCombinator node) => visitCombinator(node); | 13514 R visitHideCombinator(HideCombinator node) => visitCombinator(node); |
| 11605 R visitIdentifier(Identifier node) => visitExpression(node); | 13515 R visitIdentifier(Identifier node) => visitExpression(node); |
| 11606 R visitIfStatement(IfStatement node) => visitStatement(node); | 13516 R visitIfStatement(IfStatement node) => visitStatement(node); |
| 11607 R visitImplementsClause(ImplementsClause node) => visitNode(node); | 13517 R visitImplementsClause(ImplementsClause node) => visitNode(node); |
| 11608 R visitImportDirective(ImportDirective node) => visitNamespaceDirective(node); | 13518 R visitImportDirective(ImportDirective node) => visitNamespaceDirective(node); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11666 R visitTypeName(TypeName node) => visitNode(node); | 13576 R visitTypeName(TypeName node) => visitNode(node); |
| 11667 R visitTypeParameter(TypeParameter node) => visitNode(node); | 13577 R visitTypeParameter(TypeParameter node) => visitNode(node); |
| 11668 R visitTypeParameterList(TypeParameterList node) => visitNode(node); | 13578 R visitTypeParameterList(TypeParameterList node) => visitNode(node); |
| 11669 R visitUriBasedDirective(UriBasedDirective node) => visitDirective(node); | 13579 R visitUriBasedDirective(UriBasedDirective node) => visitDirective(node); |
| 11670 R visitVariableDeclaration(VariableDeclaration node) => visitDeclaration(node)
; | 13580 R visitVariableDeclaration(VariableDeclaration node) => visitDeclaration(node)
; |
| 11671 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); | 13581 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); |
| 11672 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tStatement(node); | 13582 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tStatement(node); |
| 11673 R visitWhileStatement(WhileStatement node) => visitStatement(node); | 13583 R visitWhileStatement(WhileStatement node) => visitStatement(node); |
| 11674 R visitWithClause(WithClause node) => visitNode(node); | 13584 R visitWithClause(WithClause node) => visitNode(node); |
| 11675 } | 13585 } |
| 13586 |
| 11676 /** | 13587 /** |
| 11677 * Instances of the class {@code NodeLocator} locate the {@link ASTNode AST node
} associated with a | 13588 * Instances of the class {@code NodeLocator} locate the {@link ASTNode AST node
} associated with a |
| 11678 * source range, given the AST structure built from the source. More specificall
y, they will return | 13589 * source range, given the AST structure built from the source. More specificall
y, they will return |
| 11679 * the {@link ASTNode AST node} with the shortest length whose source range comp
letely encompasses | 13590 * the {@link ASTNode AST node} with the shortest length whose source range comp
letely encompasses |
| 11680 * the specified range. | 13591 * the specified range. |
| 11681 * @coverage dart.engine.ast | 13592 * @coverage dart.engine.ast |
| 11682 */ | 13593 */ |
| 11683 class NodeLocator extends GeneralizingASTVisitor<Object> { | 13594 class NodeLocator extends GeneralizingASTVisitor<Object> { |
| 13595 |
| 11684 /** | 13596 /** |
| 11685 * The start offset of the range used to identify the node. | 13597 * The start offset of the range used to identify the node. |
| 11686 */ | 13598 */ |
| 11687 int _startOffset = 0; | 13599 int _startOffset = 0; |
| 13600 |
| 11688 /** | 13601 /** |
| 11689 * The end offset of the range used to identify the node. | 13602 * The end offset of the range used to identify the node. |
| 11690 */ | 13603 */ |
| 11691 int _endOffset = 0; | 13604 int _endOffset = 0; |
| 13605 |
| 11692 /** | 13606 /** |
| 11693 * The element that was found that corresponds to the given source range, or {
@code null} if there | 13607 * The element that was found that corresponds to the given source range, or {
@code null} if there |
| 11694 * is no such element. | 13608 * is no such element. |
| 11695 */ | 13609 */ |
| 11696 ASTNode _foundNode; | 13610 ASTNode _foundNode; |
| 13611 |
| 11697 /** | 13612 /** |
| 11698 * Initialize a newly created locator to locate one or more {@link ASTNode AST
nodes} by locating | 13613 * Initialize a newly created locator to locate one or more {@link ASTNode AST
nodes} by locating |
| 11699 * the node within an AST structure that corresponds to the given offset in th
e source. | 13614 * the node within an AST structure that corresponds to the given offset in th
e source. |
| 11700 * @param offset the offset used to identify the node | 13615 * @param offset the offset used to identify the node |
| 11701 */ | 13616 */ |
| 11702 NodeLocator.con1(int offset) { | 13617 NodeLocator.con1(int offset) { |
| 11703 _jtd_constructor_120_impl(offset); | 13618 _jtd_constructor_120_impl(offset); |
| 11704 } | 13619 } |
| 11705 _jtd_constructor_120_impl(int offset) { | 13620 _jtd_constructor_120_impl(int offset) { |
| 11706 _jtd_constructor_121_impl(offset, offset); | 13621 _jtd_constructor_121_impl(offset, offset); |
| 11707 } | 13622 } |
| 13623 |
| 11708 /** | 13624 /** |
| 11709 * Initialize a newly created locator to locate one or more {@link ASTNode AST
nodes} by locating | 13625 * Initialize a newly created locator to locate one or more {@link ASTNode AST
nodes} by locating |
| 11710 * the node within an AST structure that corresponds to the given range of cha
racters in the | 13626 * the node within an AST structure that corresponds to the given range of cha
racters in the |
| 11711 * source. | 13627 * source. |
| 11712 * @param start the start offset of the range used to identify the node | 13628 * @param start the start offset of the range used to identify the node |
| 11713 * @param end the end offset of the range used to identify the node | 13629 * @param end the end offset of the range used to identify the node |
| 11714 */ | 13630 */ |
| 11715 NodeLocator.con2(int start, int end) { | 13631 NodeLocator.con2(int start, int end) { |
| 11716 _jtd_constructor_121_impl(start, end); | 13632 _jtd_constructor_121_impl(start, end); |
| 11717 } | 13633 } |
| 11718 _jtd_constructor_121_impl(int start, int end) { | 13634 _jtd_constructor_121_impl(int start, int end) { |
| 11719 this._startOffset = start; | 13635 this._startOffset = start; |
| 11720 this._endOffset = end; | 13636 this._endOffset = end; |
| 11721 } | 13637 } |
| 13638 |
| 11722 /** | 13639 /** |
| 11723 * Return the node that was found that corresponds to the given source range,
or {@code null} if | 13640 * Return the node that was found that corresponds to the given source range,
or {@code null} if |
| 11724 * there is no such node. | 13641 * there is no such node. |
| 11725 * @return the node that was found | 13642 * @return the node that was found |
| 11726 */ | 13643 */ |
| 11727 ASTNode get foundNode => _foundNode; | 13644 ASTNode get foundNode => _foundNode; |
| 13645 |
| 11728 /** | 13646 /** |
| 11729 * Search within the given AST node for an identifier representing a {@link Da
rtElement Dart | 13647 * Search within the given AST node for an identifier representing a {@link Da
rtElement Dart |
| 11730 * element} in the specified source range. Return the element that was found,
or {@code null} if | 13648 * element} in the specified source range. Return the element that was found,
or {@code null} if |
| 11731 * no element was found. | 13649 * no element was found. |
| 11732 * @param node the AST node within which to search | 13650 * @param node the AST node within which to search |
| 11733 * @return the element that was found | 13651 * @return the element that was found |
| 11734 */ | 13652 */ |
| 11735 ASTNode searchWithin(ASTNode node) { | 13653 ASTNode searchWithin(ASTNode node) { |
| 11736 try { | 13654 try { |
| 11737 node.accept(this); | 13655 node.accept(this); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 11758 } catch (exception) { | 13676 } catch (exception) { |
| 11759 AnalysisEngine.instance.logger.logInformation2("Exception caught while tra
versing an AST structure.", exception); | 13677 AnalysisEngine.instance.logger.logInformation2("Exception caught while tra
versing an AST structure.", exception); |
| 11760 } | 13678 } |
| 11761 if (start <= _startOffset && _endOffset <= end) { | 13679 if (start <= _startOffset && _endOffset <= end) { |
| 11762 _foundNode = node; | 13680 _foundNode = node; |
| 11763 throw new NodeLocator_NodeFoundException(); | 13681 throw new NodeLocator_NodeFoundException(); |
| 11764 } | 13682 } |
| 11765 return null; | 13683 return null; |
| 11766 } | 13684 } |
| 11767 } | 13685 } |
| 13686 |
| 11768 /** | 13687 /** |
| 11769 * Instances of the class {@code NodeFoundException} are used to cancel visiting
after a node has | 13688 * Instances of the class {@code NodeFoundException} are used to cancel visiting
after a node has |
| 11770 * been found. | 13689 * been found. |
| 11771 */ | 13690 */ |
| 11772 class NodeLocator_NodeFoundException extends RuntimeException { | 13691 class NodeLocator_NodeFoundException extends RuntimeException { |
| 11773 static int _serialVersionUID = 1; | 13692 static int _serialVersionUID = 1; |
| 11774 } | 13693 } |
| 13694 |
| 11775 /** | 13695 /** |
| 11776 * Instances of the class {@code RecursiveASTVisitor} implement an AST visitor t
hat will recursively | 13696 * Instances of the class {@code RecursiveASTVisitor} implement an AST visitor t
hat will recursively |
| 11777 * visit all of the nodes in an AST structure. For example, using an instance of
this class to visit | 13697 * visit all of the nodes in an AST structure. For example, using an instance of
this class to visit |
| 11778 * a {@link Block} will also cause all of the statements in the block to be visi
ted. | 13698 * a {@link Block} will also cause all of the statements in the block to be visi
ted. |
| 11779 * <p> | 13699 * <p> |
| 11780 * Subclasses that override a visit method must either invoke the overridden vis
it method or must | 13700 * Subclasses that override a visit method must either invoke the overridden vis
it method or must |
| 11781 * explicitly ask the visited node to visit its children. Failure to do so will
cause the children | 13701 * explicitly ask the visited node to visit its children. Failure to do so will
cause the children |
| 11782 * of the visited node to not be visited. | 13702 * of the visited node to not be visited. |
| 11783 * @coverage dart.engine.ast | 13703 * @coverage dart.engine.ast |
| 11784 */ | 13704 */ |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12181 } | 14101 } |
| 12182 R visitWhileStatement(WhileStatement node) { | 14102 R visitWhileStatement(WhileStatement node) { |
| 12183 node.visitChildren(this); | 14103 node.visitChildren(this); |
| 12184 return null; | 14104 return null; |
| 12185 } | 14105 } |
| 12186 R visitWithClause(WithClause node) { | 14106 R visitWithClause(WithClause node) { |
| 12187 node.visitChildren(this); | 14107 node.visitChildren(this); |
| 12188 return null; | 14108 return null; |
| 12189 } | 14109 } |
| 12190 } | 14110 } |
| 14111 |
| 12191 /** | 14112 /** |
| 12192 * Instances of the class {@code SimpleASTVisitor} implement an AST visitor that
will do nothing | 14113 * Instances of the class {@code SimpleASTVisitor} implement an AST visitor that
will do nothing |
| 12193 * when visiting an AST node. It is intended to be a superclass for classes that
use the visitor | 14114 * when visiting an AST node. It is intended to be a superclass for classes that
use the visitor |
| 12194 * pattern primarily as a dispatch mechanism (and hence don't need to recursivel
y visit a whole | 14115 * pattern primarily as a dispatch mechanism (and hence don't need to recursivel
y visit a whole |
| 12195 * structure) and that only need to visit a small number of node types. | 14116 * structure) and that only need to visit a small number of node types. |
| 12196 * @coverage dart.engine.ast | 14117 * @coverage dart.engine.ast |
| 12197 */ | 14118 */ |
| 12198 class SimpleASTVisitor<R> implements ASTVisitor<R> { | 14119 class SimpleASTVisitor<R> implements ASTVisitor<R> { |
| 12199 R visitAdjacentStrings(AdjacentStrings node) => null; | 14120 R visitAdjacentStrings(AdjacentStrings node) => null; |
| 12200 R visitAnnotation(Annotation node) => null; | 14121 R visitAnnotation(Annotation node) => null; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12291 R visitTypeArgumentList(TypeArgumentList node) => null; | 14212 R visitTypeArgumentList(TypeArgumentList node) => null; |
| 12292 R visitTypeName(TypeName node) => null; | 14213 R visitTypeName(TypeName node) => null; |
| 12293 R visitTypeParameter(TypeParameter node) => null; | 14214 R visitTypeParameter(TypeParameter node) => null; |
| 12294 R visitTypeParameterList(TypeParameterList node) => null; | 14215 R visitTypeParameterList(TypeParameterList node) => null; |
| 12295 R visitVariableDeclaration(VariableDeclaration node) => null; | 14216 R visitVariableDeclaration(VariableDeclaration node) => null; |
| 12296 R visitVariableDeclarationList(VariableDeclarationList node) => null; | 14217 R visitVariableDeclarationList(VariableDeclarationList node) => null; |
| 12297 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => null
; | 14218 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => null
; |
| 12298 R visitWhileStatement(WhileStatement node) => null; | 14219 R visitWhileStatement(WhileStatement node) => null; |
| 12299 R visitWithClause(WithClause node) => null; | 14220 R visitWithClause(WithClause node) => null; |
| 12300 } | 14221 } |
| 14222 |
| 12301 /** | 14223 /** |
| 12302 * Instances of the class {@code ToSourceVisitor} write a source representation
of a visited AST | 14224 * Instances of the class {@code ToSourceVisitor} write a source representation
of a visited AST |
| 12303 * node (and all of it's children) to a writer. | 14225 * node (and all of it's children) to a writer. |
| 12304 * @coverage dart.engine.ast | 14226 * @coverage dart.engine.ast |
| 12305 */ | 14227 */ |
| 12306 class ToSourceVisitor implements ASTVisitor<Object> { | 14228 class ToSourceVisitor implements ASTVisitor<Object> { |
| 14229 |
| 12307 /** | 14230 /** |
| 12308 * The writer to which the source is to be written. | 14231 * The writer to which the source is to be written. |
| 12309 */ | 14232 */ |
| 12310 PrintWriter _writer; | 14233 PrintWriter _writer; |
| 14234 |
| 12311 /** | 14235 /** |
| 12312 * Initialize a newly created visitor to write source code representing the vi
sited nodes to the | 14236 * Initialize a newly created visitor to write source code representing the vi
sited nodes to the |
| 12313 * given writer. | 14237 * given writer. |
| 12314 * @param writer the writer to which the source is to be written | 14238 * @param writer the writer to which the source is to be written |
| 12315 */ | 14239 */ |
| 12316 ToSourceVisitor(PrintWriter writer) { | 14240 ToSourceVisitor(PrintWriter writer) { |
| 12317 this._writer = writer; | 14241 this._writer = writer; |
| 12318 } | 14242 } |
| 12319 Object visitAdjacentStrings(AdjacentStrings node) { | 14243 Object visitAdjacentStrings(AdjacentStrings node) { |
| 12320 visitList2(node.strings, " "); | 14244 visitList2(node.strings, " "); |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12992 visit(node.condition); | 14916 visit(node.condition); |
| 12993 _writer.print(") "); | 14917 _writer.print(") "); |
| 12994 visit(node.body); | 14918 visit(node.body); |
| 12995 return null; | 14919 return null; |
| 12996 } | 14920 } |
| 12997 Object visitWithClause(WithClause node) { | 14921 Object visitWithClause(WithClause node) { |
| 12998 _writer.print("with "); | 14922 _writer.print("with "); |
| 12999 visitList2(node.mixinTypes, ", "); | 14923 visitList2(node.mixinTypes, ", "); |
| 13000 return null; | 14924 return null; |
| 13001 } | 14925 } |
| 14926 |
| 13002 /** | 14927 /** |
| 13003 * Safely visit the given node. | 14928 * Safely visit the given node. |
| 13004 * @param node the node to be visited | 14929 * @param node the node to be visited |
| 13005 */ | 14930 */ |
| 13006 void visit(ASTNode node) { | 14931 void visit(ASTNode node) { |
| 13007 if (node != null) { | 14932 if (node != null) { |
| 13008 node.accept(this); | 14933 node.accept(this); |
| 13009 } | 14934 } |
| 13010 } | 14935 } |
| 14936 |
| 13011 /** | 14937 /** |
| 13012 * Safely visit the given node, printing the suffix after the node if it is no
n-{@code null}. | 14938 * Safely visit the given node, printing the suffix after the node if it is no
n-{@code null}. |
| 13013 * @param suffix the suffix to be printed if there is a node to visit | 14939 * @param suffix the suffix to be printed if there is a node to visit |
| 13014 * @param node the node to be visited | 14940 * @param node the node to be visited |
| 13015 */ | 14941 */ |
| 13016 void visit2(ASTNode node, String suffix) { | 14942 void visit2(ASTNode node, String suffix) { |
| 13017 if (node != null) { | 14943 if (node != null) { |
| 13018 node.accept(this); | 14944 node.accept(this); |
| 13019 _writer.print(suffix); | 14945 _writer.print(suffix); |
| 13020 } | 14946 } |
| 13021 } | 14947 } |
| 14948 |
| 13022 /** | 14949 /** |
| 13023 * Safely visit the given node, printing the prefix before the node if it is n
on-{@code null}. | 14950 * Safely visit the given node, printing the prefix before the node if it is n
on-{@code null}. |
| 13024 * @param prefix the prefix to be printed if there is a node to visit | 14951 * @param prefix the prefix to be printed if there is a node to visit |
| 13025 * @param node the node to be visited | 14952 * @param node the node to be visited |
| 13026 */ | 14953 */ |
| 13027 void visit3(String prefix, ASTNode node) { | 14954 void visit3(String prefix, ASTNode node) { |
| 13028 if (node != null) { | 14955 if (node != null) { |
| 13029 _writer.print(prefix); | 14956 _writer.print(prefix); |
| 13030 node.accept(this); | 14957 node.accept(this); |
| 13031 } | 14958 } |
| 13032 } | 14959 } |
| 14960 |
| 13033 /** | 14961 /** |
| 13034 * Visit the given function body, printing the prefix before if given body is
not empty. | 14962 * Visit the given function body, printing the prefix before if given body is
not empty. |
| 13035 * @param prefix the prefix to be printed if there is a node to visit | 14963 * @param prefix the prefix to be printed if there is a node to visit |
| 13036 * @param body the function body to be visited | 14964 * @param body the function body to be visited |
| 13037 */ | 14965 */ |
| 13038 void visit4(String prefix, FunctionBody body) { | 14966 void visit4(String prefix, FunctionBody body) { |
| 13039 if (body is! EmptyFunctionBody) { | 14967 if (body is! EmptyFunctionBody) { |
| 13040 _writer.print(prefix); | 14968 _writer.print(prefix); |
| 13041 } | 14969 } |
| 13042 visit(body); | 14970 visit(body); |
| 13043 } | 14971 } |
| 14972 |
| 13044 /** | 14973 /** |
| 13045 * Safely visit the given node, printing the suffix after the node if it is no
n-{@code null}. | 14974 * Safely visit the given node, printing the suffix after the node if it is no
n-{@code null}. |
| 13046 * @param suffix the suffix to be printed if there is a node to visit | 14975 * @param suffix the suffix to be printed if there is a node to visit |
| 13047 * @param node the node to be visited | 14976 * @param node the node to be visited |
| 13048 */ | 14977 */ |
| 13049 void visit5(Token token, String suffix) { | 14978 void visit5(Token token, String suffix) { |
| 13050 if (token != null) { | 14979 if (token != null) { |
| 13051 _writer.print(token.lexeme); | 14980 _writer.print(token.lexeme); |
| 13052 _writer.print(suffix); | 14981 _writer.print(suffix); |
| 13053 } | 14982 } |
| 13054 } | 14983 } |
| 14984 |
| 13055 /** | 14985 /** |
| 13056 * Print a list of nodes without any separation. | 14986 * Print a list of nodes without any separation. |
| 13057 * @param nodes the nodes to be printed | 14987 * @param nodes the nodes to be printed |
| 13058 * @param separator the separator to be printed between adjacent nodes | 14988 * @param separator the separator to be printed between adjacent nodes |
| 13059 */ | 14989 */ |
| 13060 void visitList(NodeList<ASTNode> nodes) { | 14990 void visitList(NodeList<ASTNode> nodes) { |
| 13061 visitList2(nodes, ""); | 14991 visitList2(nodes, ""); |
| 13062 } | 14992 } |
| 14993 |
| 13063 /** | 14994 /** |
| 13064 * Print a list of nodes, separated by the given separator. | 14995 * Print a list of nodes, separated by the given separator. |
| 13065 * @param nodes the nodes to be printed | 14996 * @param nodes the nodes to be printed |
| 13066 * @param separator the separator to be printed between adjacent nodes | 14997 * @param separator the separator to be printed between adjacent nodes |
| 13067 */ | 14998 */ |
| 13068 void visitList2(NodeList<ASTNode> nodes, String separator) { | 14999 void visitList2(NodeList<ASTNode> nodes, String separator) { |
| 13069 if (nodes != null) { | 15000 if (nodes != null) { |
| 13070 int size2 = nodes.length; | 15001 int size2 = nodes.length; |
| 13071 for (int i = 0; i < size2; i++) { | 15002 for (int i = 0; i < size2; i++) { |
| 13072 if (i > 0) { | 15003 if (i > 0) { |
| 13073 _writer.print(separator); | 15004 _writer.print(separator); |
| 13074 } | 15005 } |
| 13075 nodes[i].accept(this); | 15006 nodes[i].accept(this); |
| 13076 } | 15007 } |
| 13077 } | 15008 } |
| 13078 } | 15009 } |
| 15010 |
| 13079 /** | 15011 /** |
| 13080 * Print a list of nodes, separated by the given separator. | 15012 * Print a list of nodes, separated by the given separator. |
| 13081 * @param nodes the nodes to be printed | 15013 * @param nodes the nodes to be printed |
| 13082 * @param separator the separator to be printed between adjacent nodes | 15014 * @param separator the separator to be printed between adjacent nodes |
| 13083 * @param suffix the suffix to be printed if the list is not empty | 15015 * @param suffix the suffix to be printed if the list is not empty |
| 13084 */ | 15016 */ |
| 13085 void visitList3(NodeList<ASTNode> nodes, String separator, String suffix) { | 15017 void visitList3(NodeList<ASTNode> nodes, String separator, String suffix) { |
| 13086 if (nodes != null) { | 15018 if (nodes != null) { |
| 13087 int size2 = nodes.length; | 15019 int size2 = nodes.length; |
| 13088 if (size2 > 0) { | 15020 if (size2 > 0) { |
| 13089 for (int i = 0; i < size2; i++) { | 15021 for (int i = 0; i < size2; i++) { |
| 13090 if (i > 0) { | 15022 if (i > 0) { |
| 13091 _writer.print(separator); | 15023 _writer.print(separator); |
| 13092 } | 15024 } |
| 13093 nodes[i].accept(this); | 15025 nodes[i].accept(this); |
| 13094 } | 15026 } |
| 13095 _writer.print(suffix); | 15027 _writer.print(suffix); |
| 13096 } | 15028 } |
| 13097 } | 15029 } |
| 13098 } | 15030 } |
| 15031 |
| 13099 /** | 15032 /** |
| 13100 * Print a list of nodes, separated by the given separator. | 15033 * Print a list of nodes, separated by the given separator. |
| 13101 * @param prefix the prefix to be printed if the list is not empty | 15034 * @param prefix the prefix to be printed if the list is not empty |
| 13102 * @param nodes the nodes to be printed | 15035 * @param nodes the nodes to be printed |
| 13103 * @param separator the separator to be printed between adjacent nodes | 15036 * @param separator the separator to be printed between adjacent nodes |
| 13104 */ | 15037 */ |
| 13105 void visitList4(String prefix, NodeList<ASTNode> nodes, String separator) { | 15038 void visitList4(String prefix, NodeList<ASTNode> nodes, String separator) { |
| 13106 if (nodes != null) { | 15039 if (nodes != null) { |
| 13107 int size2 = nodes.length; | 15040 int size2 = nodes.length; |
| 13108 if (size2 > 0) { | 15041 if (size2 > 0) { |
| 13109 _writer.print(prefix); | 15042 _writer.print(prefix); |
| 13110 for (int i = 0; i < size2; i++) { | 15043 for (int i = 0; i < size2; i++) { |
| 13111 if (i > 0) { | 15044 if (i > 0) { |
| 13112 _writer.print(separator); | 15045 _writer.print(separator); |
| 13113 } | 15046 } |
| 13114 nodes[i].accept(this); | 15047 nodes[i].accept(this); |
| 13115 } | 15048 } |
| 13116 } | 15049 } |
| 13117 } | 15050 } |
| 13118 } | 15051 } |
| 13119 } | 15052 } |
| 15053 |
| 13120 /** | 15054 /** |
| 13121 * Instances of the class {@code ASTCloner} implement an object that will clone
any AST structure | 15055 * Instances of the class {@code ASTCloner} implement an object that will clone
any AST structure |
| 13122 * that it visits. The cloner will only clone the structure, it will not preserv
e any resolution | 15056 * that it visits. The cloner will only clone the structure, it will not preserv
e any resolution |
| 13123 * results or properties associated with the nodes. | 15057 * results or properties associated with the nodes. |
| 13124 */ | 15058 */ |
| 13125 class ASTCloner implements ASTVisitor<ASTNode> { | 15059 class ASTCloner implements ASTVisitor<ASTNode> { |
| 13126 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs.full(clone3(node.strings)); | 15060 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs.full(clone3(node.strings)); |
| 13127 Annotation visitAnnotation(Annotation node) => new Annotation.full(node.atSign
, clone2(node.name), node.period, clone2(node.constructorName), clone2(node.argu
ments)); | 15061 Annotation visitAnnotation(Annotation node) => new Annotation.full(node.atSign
, clone2(node.name), node.period, clone2(node.constructorName), clone2(node.argu
ments)); |
| 13128 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) => new ArgumentDefinitionTest.full(node.question, clone2(node.identifier)); | 15062 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) => new ArgumentDefinitionTest.full(node.question, clone2(node.identifier)); |
| 13129 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList.full(nod
e.leftParenthesis, clone3(node.arguments), node.rightParenthesis); | 15063 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList.full(nod
e.leftParenthesis, clone3(node.arguments), node.rightParenthesis); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13251 return node.accept(this) as ASTNode; | 15185 return node.accept(this) as ASTNode; |
| 13252 } | 15186 } |
| 13253 List clone3(NodeList nodes) { | 15187 List clone3(NodeList nodes) { |
| 13254 List clonedNodes = new List(); | 15188 List clonedNodes = new List(); |
| 13255 for (ASTNode node in nodes) { | 15189 for (ASTNode node in nodes) { |
| 13256 clonedNodes.add((node.accept(this) as ASTNode)); | 15190 clonedNodes.add((node.accept(this) as ASTNode)); |
| 13257 } | 15191 } |
| 13258 return clonedNodes; | 15192 return clonedNodes; |
| 13259 } | 15193 } |
| 13260 } | 15194 } |
| 15195 |
| 15196 /** |
| 15197 * Traverse the AST from initial child node to successive parents, building a co
llection of local |
| 15198 * variable and parameter names visible to the initial child node. In case of na
me shadowing, the |
| 15199 * first name seen is the most specific one so names are not redefined. |
| 15200 * <p> |
| 15201 * Completion test code coverage is 95%. The two basic blocks that are not execu
ted cannot be |
| 15202 * executed. They are included for future reference. |
| 15203 * @coverage com.google.dart.engine.services.completion |
| 15204 */ |
| 15205 class ScopedNameFinder extends GeneralizingASTVisitor<Object> { |
| 15206 Declaration _declarationNode; |
| 15207 ASTNode _immediateChild; |
| 15208 Map<String, SimpleIdentifier> _locals = new Map<String, SimpleIdentifier>(); |
| 15209 int _position = 0; |
| 15210 bool _referenceIsWithinLocalFunction = false; |
| 15211 ScopedNameFinder(int position) { |
| 15212 this._position = position; |
| 15213 } |
| 15214 Declaration get declaration => _declarationNode; |
| 15215 Map<String, SimpleIdentifier> get locals => _locals; |
| 15216 Object visitBlock(Block node) { |
| 15217 checkStatements(node.statements); |
| 15218 return super.visitBlock(node); |
| 15219 } |
| 15220 Object visitCatchClause(CatchClause node) { |
| 15221 addToScope(node.exceptionParameter); |
| 15222 addToScope(node.stackTraceParameter); |
| 15223 return super.visitCatchClause(node); |
| 15224 } |
| 15225 Object visitConstructorDeclaration(ConstructorDeclaration node) { |
| 15226 if (_immediateChild != node.parameters) { |
| 15227 addParameters(node.parameters.parameters); |
| 15228 } |
| 15229 _declarationNode = node; |
| 15230 return null; |
| 15231 } |
| 15232 Object visitFieldDeclaration(FieldDeclaration node) { |
| 15233 _declarationNode = node; |
| 15234 return null; |
| 15235 } |
| 15236 Object visitForEachStatement(ForEachStatement node) { |
| 15237 addToScope(node.loopVariable.identifier); |
| 15238 return super.visitForEachStatement(node); |
| 15239 } |
| 15240 Object visitForStatement(ForStatement node) { |
| 15241 if (_immediateChild != node.variables && node.variables != null) { |
| 15242 addVariables(node.variables.variables); |
| 15243 } |
| 15244 return super.visitForStatement(node); |
| 15245 } |
| 15246 Object visitFunctionDeclaration(FunctionDeclaration node) { |
| 15247 if (node.parent is! FunctionDeclarationStatement) { |
| 15248 _declarationNode = node; |
| 15249 return null; |
| 15250 } |
| 15251 return super.visitFunctionDeclaration(node); |
| 15252 } |
| 15253 Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) { |
| 15254 _referenceIsWithinLocalFunction = true; |
| 15255 return super.visitFunctionDeclarationStatement(node); |
| 15256 } |
| 15257 Object visitFunctionExpression(FunctionExpression node) { |
| 15258 if (_immediateChild != node.parameters) { |
| 15259 addParameters(node.parameters.parameters); |
| 15260 } |
| 15261 return super.visitFunctionExpression(node); |
| 15262 } |
| 15263 Object visitMethodDeclaration(MethodDeclaration node) { |
| 15264 if (node.parameters == null) { |
| 15265 return null; |
| 15266 } |
| 15267 if (_immediateChild != node.parameters) { |
| 15268 addParameters(node.parameters.parameters); |
| 15269 } |
| 15270 _declarationNode = node; |
| 15271 return null; |
| 15272 } |
| 15273 Object visitNode(ASTNode node) { |
| 15274 _immediateChild = node; |
| 15275 ASTNode parent2 = node.parent; |
| 15276 if (parent2 != null) { |
| 15277 parent2.accept(this); |
| 15278 } |
| 15279 return null; |
| 15280 } |
| 15281 Object visitSwitchMember(SwitchMember node) { |
| 15282 checkStatements(node.statements); |
| 15283 return super.visitSwitchMember(node); |
| 15284 } |
| 15285 Object visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) { |
| 15286 _declarationNode = node; |
| 15287 return null; |
| 15288 } |
| 15289 Object visitTypeAlias(TypeAlias node) { |
| 15290 _declarationNode = node; |
| 15291 return null; |
| 15292 } |
| 15293 void addParameters(NodeList<FormalParameter> vars) { |
| 15294 for (FormalParameter var2 in vars) { |
| 15295 addToScope(var2.identifier); |
| 15296 } |
| 15297 } |
| 15298 void addToScope(SimpleIdentifier identifier) { |
| 15299 if (identifier != null && isInRange(identifier)) { |
| 15300 String name2 = identifier.name; |
| 15301 if (!_locals.containsKey(name2)) { |
| 15302 _locals[name2] = identifier; |
| 15303 } |
| 15304 } |
| 15305 } |
| 15306 void addVariables(NodeList<VariableDeclaration> vars) { |
| 15307 for (VariableDeclaration var2 in vars) { |
| 15308 addToScope(var2.name); |
| 15309 } |
| 15310 } |
| 15311 |
| 15312 /** |
| 15313 * Some statements define names that are visible downstream. There aren't many
of these. |
| 15314 * @param statements the list of statements to check for name definitions |
| 15315 */ |
| 15316 void checkStatements(List<Statement> statements) { |
| 15317 for (Statement stmt in statements) { |
| 15318 if (identical(stmt, _immediateChild)) { |
| 15319 return; |
| 15320 } |
| 15321 if (stmt is VariableDeclarationStatement) { |
| 15322 addVariables(((stmt as VariableDeclarationStatement)).variables.variable
s); |
| 15323 } else if (stmt is FunctionDeclarationStatement && !_referenceIsWithinLoca
lFunction) { |
| 15324 addToScope(((stmt as FunctionDeclarationStatement)).functionDeclaration.
name); |
| 15325 } |
| 15326 } |
| 15327 } |
| 15328 bool isInRange(ASTNode node) { |
| 15329 if (_position < 0) { |
| 15330 return true; |
| 15331 } |
| 15332 return node.end < _position; |
| 15333 } |
| 15334 } |
| 13261 /** | 15335 /** |
| 13262 * Instances of the class {@code NodeList} represent a list of AST nodes that ha
ve a common parent. | 15336 * Instances of the class {@code NodeList} represent a list of AST nodes that ha
ve a common parent. |
| 13263 */ | 15337 */ |
| 13264 class NodeList<E extends ASTNode> extends ListWrapper<E> { | 15338 class NodeList<E extends ASTNode> extends ListWrapper<E> { |
| 13265 /** | 15339 /** |
| 13266 * The node that is the parent of each of the elements in the list. | 15340 * The node that is the parent of each of the elements in the list. |
| 13267 */ | 15341 */ |
| 13268 ASTNode owner; | 15342 ASTNode owner; |
| 13269 /** | 15343 /** |
| 13270 * The elements of the list. | 15344 * The elements of the list. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13318 return elements[elements.length - 1].endToken; | 15392 return elements[elements.length - 1].endToken; |
| 13319 } | 15393 } |
| 13320 /** | 15394 /** |
| 13321 * Return the node that is the parent of each of the elements in the list. | 15395 * Return the node that is the parent of each of the elements in the list. |
| 13322 * @return the node that is the parent of each of the elements in the list | 15396 * @return the node that is the parent of each of the elements in the list |
| 13323 */ | 15397 */ |
| 13324 ASTNode getOwner() { | 15398 ASTNode getOwner() { |
| 13325 return owner; | 15399 return owner; |
| 13326 } | 15400 } |
| 13327 } | 15401 } |
| OLD | NEW |