OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // This code was auto-generated, is not intended to be edited, and is subject to | 5 // This code was auto-generated, is not intended to be edited, and is subject to |
6 // significant change. Please see the README file for more information. | 6 // significant change. Please see the README file for more information. |
7 | 7 |
8 library engine.ast; | 8 library engine.ast; |
9 | 9 |
10 import 'dart:collection'; | 10 import 'dart:collection'; |
11 import 'java_core.dart'; | 11 import 'java_core.dart'; |
12 import 'java_engine.dart'; | 12 import 'java_engine.dart'; |
13 import 'source.dart' show LineInfo; | 13 import 'source.dart' show LineInfo; |
14 import 'scanner.dart'; | 14 import 'scanner.dart'; |
15 import 'engine.dart' show AnalysisEngine; | 15 import 'engine.dart' show AnalysisEngine; |
16 import 'utilities_dart.dart'; | 16 import 'utilities_dart.dart'; |
17 import 'utilities_collection.dart' show TokenMap; | 17 import 'utilities_collection.dart' show TokenMap; |
18 import 'element.dart'; | 18 import 'element.dart'; |
19 | 19 |
20 /** | 20 /** |
21 * The abstract class `ASTNode` defines the behavior common to all nodes in the
AST structure | 21 * Instances of the class `AdjacentStrings` represents two or more string litera
ls that are |
| 22 * implicitly concatenated because of being adjacent (separated only by whitespa
ce). |
| 23 * |
| 24 * While the grammar only allows adjacent strings when all of the strings are of
the same kind |
| 25 * (single line or multi-line), this class doesn't enforce that restriction. |
| 26 * |
| 27 * <pre> |
| 28 * adjacentStrings ::= |
| 29 * [StringLiteral] [StringLiteral]+ |
| 30 * </pre> |
| 31 */ |
| 32 class AdjacentStrings extends StringLiteral { |
| 33 /** |
| 34 * The strings that are implicitly concatenated. |
| 35 */ |
| 36 NodeList<StringLiteral> _strings; |
| 37 |
| 38 /** |
| 39 * Initialize a newly created list of adjacent strings. |
| 40 * |
| 41 * @param strings the strings that are implicitly concatenated |
| 42 */ |
| 43 AdjacentStrings(List<StringLiteral> strings) { |
| 44 this._strings = new NodeList<StringLiteral>(this); |
| 45 this._strings.addAll(strings); |
| 46 } |
| 47 |
| 48 accept(AstVisitor visitor) => visitor.visitAdjacentStrings(this); |
| 49 |
| 50 Token get beginToken => _strings.beginToken; |
| 51 |
| 52 Token get endToken => _strings.endToken; |
| 53 |
| 54 /** |
| 55 * Return the strings that are implicitly concatenated. |
| 56 * |
| 57 * @return the strings that are implicitly concatenated |
| 58 */ |
| 59 NodeList<StringLiteral> get strings => _strings; |
| 60 |
| 61 void visitChildren(AstVisitor visitor) { |
| 62 _strings.accept(visitor); |
| 63 } |
| 64 |
| 65 void appendStringValue(JavaStringBuilder builder) { |
| 66 for (StringLiteral stringLiteral in strings) { |
| 67 stringLiteral.appendStringValue(builder); |
| 68 } |
| 69 } |
| 70 } |
| 71 |
| 72 /** |
| 73 * The abstract class `AnnotatedNode` defines the behavior of nodes that can be
annotated with |
| 74 * both a comment and metadata. |
| 75 */ |
| 76 abstract class AnnotatedNode extends AstNode { |
| 77 /** |
| 78 * The documentation comment associated with this node, or `null` if this node
does not have |
| 79 * a documentation comment associated with it. |
| 80 */ |
| 81 Comment _comment; |
| 82 |
| 83 /** |
| 84 * The annotations associated with this node. |
| 85 */ |
| 86 NodeList<Annotation> _metadata; |
| 87 |
| 88 /** |
| 89 * Initialize a newly created node. |
| 90 * |
| 91 * @param comment the documentation comment associated with this node |
| 92 * @param metadata the annotations associated with this node |
| 93 */ |
| 94 AnnotatedNode(Comment comment, List<Annotation> metadata) { |
| 95 this._metadata = new NodeList<Annotation>(this); |
| 96 this._comment = becomeParentOf(comment); |
| 97 this._metadata.addAll(metadata); |
| 98 } |
| 99 |
| 100 Token get beginToken { |
| 101 if (_comment == null) { |
| 102 if (_metadata.isEmpty) { |
| 103 return firstTokenAfterCommentAndMetadata; |
| 104 } else { |
| 105 return _metadata.beginToken; |
| 106 } |
| 107 } else if (_metadata.isEmpty) { |
| 108 return _comment.beginToken; |
| 109 } |
| 110 Token commentToken = _comment.beginToken; |
| 111 Token metadataToken = _metadata.beginToken; |
| 112 if (commentToken.offset < metadataToken.offset) { |
| 113 return commentToken; |
| 114 } |
| 115 return metadataToken; |
| 116 } |
| 117 |
| 118 /** |
| 119 * Return the documentation comment associated with this node, or `null` if th
is node does |
| 120 * not have a documentation comment associated with it. |
| 121 * |
| 122 * @return the documentation comment associated with this node |
| 123 */ |
| 124 Comment get documentationComment => _comment; |
| 125 |
| 126 /** |
| 127 * Return the annotations associated with this node. |
| 128 * |
| 129 * @return the annotations associated with this node |
| 130 */ |
| 131 NodeList<Annotation> get metadata => _metadata; |
| 132 |
| 133 /** |
| 134 * Set the documentation comment associated with this node to the given commen
t. |
| 135 * |
| 136 * @param comment the documentation comment to be associated with this node |
| 137 */ |
| 138 void set documentationComment(Comment comment) { |
| 139 this._comment = becomeParentOf(comment); |
| 140 } |
| 141 |
| 142 /** |
| 143 * Set the metadata associated with this node to the given metadata. |
| 144 * |
| 145 * @param metadata the metadata to be associated with this node |
| 146 */ |
| 147 void set metadata(List<Annotation> metadata) { |
| 148 this._metadata.clear(); |
| 149 this._metadata.addAll(metadata); |
| 150 } |
| 151 |
| 152 void visitChildren(AstVisitor visitor) { |
| 153 if (commentIsBeforeAnnotations()) { |
| 154 safelyVisitChild(_comment, visitor); |
| 155 _metadata.accept(visitor); |
| 156 } else { |
| 157 for (AstNode child in sortedCommentAndAnnotations) { |
| 158 child.accept(visitor); |
| 159 } |
| 160 } |
| 161 } |
| 162 |
| 163 /** |
| 164 * Return the first token following the comment and metadata. |
| 165 * |
| 166 * @return the first token following the comment and metadata |
| 167 */ |
| 168 Token get firstTokenAfterCommentAndMetadata; |
| 169 |
| 170 /** |
| 171 * Return `true` if the comment is lexically before any annotations. |
| 172 * |
| 173 * @return `true` if the comment is lexically before any annotations |
| 174 */ |
| 175 bool commentIsBeforeAnnotations() { |
| 176 if (_comment == null || _metadata.isEmpty) { |
| 177 return true; |
| 178 } |
| 179 Annotation firstAnnotation = _metadata[0]; |
| 180 return _comment.offset < firstAnnotation.offset; |
| 181 } |
| 182 |
| 183 /** |
| 184 * Return an array containing the comment and annotations associated with this
node, sorted in |
| 185 * lexical order. |
| 186 * |
| 187 * @return the comment and annotations associated with this node in the order
in which they |
| 188 * appeared in the original source |
| 189 */ |
| 190 List<AstNode> get sortedCommentAndAnnotations { |
| 191 List<AstNode> childList = new List<AstNode>(); |
| 192 childList.add(_comment); |
| 193 childList.addAll(_metadata); |
| 194 List<AstNode> children = new List.from(childList); |
| 195 children.sort(AstNode.LEXICAL_ORDER); |
| 196 return children; |
| 197 } |
| 198 } |
| 199 |
| 200 /** |
| 201 * Instances of the class `Annotation` represent an annotation that can be assoc
iated with an |
| 202 * AST node. |
| 203 * |
| 204 * <pre> |
| 205 * metadata ::= |
| 206 * annotation* |
| 207 * |
| 208 * annotation ::= |
| 209 * '@' [Identifier] ('.' [SimpleIdentifier])? [ArgumentList]? |
| 210 * </pre> |
| 211 */ |
| 212 class Annotation extends AstNode { |
| 213 /** |
| 214 * The at sign that introduced the annotation. |
| 215 */ |
| 216 Token atSign; |
| 217 |
| 218 /** |
| 219 * The name of the class defining the constructor that is being invoked or the
name of the field |
| 220 * that is being referenced. |
| 221 */ |
| 222 Identifier _name; |
| 223 |
| 224 /** |
| 225 * The period before the constructor name, or `null` if this annotation is not
the |
| 226 * invocation of a named constructor. |
| 227 */ |
| 228 Token period; |
| 229 |
| 230 /** |
| 231 * The name of the constructor being invoked, or `null` if this annotation is
not the |
| 232 * invocation of a named constructor. |
| 233 */ |
| 234 SimpleIdentifier _constructorName; |
| 235 |
| 236 /** |
| 237 * The arguments to the constructor being invoked, or `null` if this annotatio
n is not the |
| 238 * invocation of a constructor. |
| 239 */ |
| 240 ArgumentList _arguments; |
| 241 |
| 242 /** |
| 243 * The element associated with this annotation, or `null` if the AST structure
has not been |
| 244 * resolved or if this annotation could not be resolved. |
| 245 */ |
| 246 Element _element; |
| 247 |
| 248 /** |
| 249 * Initialize a newly created annotation. |
| 250 * |
| 251 * @param atSign the at sign that introduced the annotation |
| 252 * @param name the name of the class defining the constructor that is being in
voked or the name of |
| 253 * the field that is being referenced |
| 254 * @param period the period before the constructor name, or `null` if this ann
otation is not |
| 255 * the invocation of a named constructor |
| 256 * @param constructorName the name of the constructor being invoked, or `null`
if this |
| 257 * annotation is not the invocation of a named constructor |
| 258 * @param arguments the arguments to the constructor being invoked, or `null`
if this |
| 259 * annotation is not the invocation of a constructor |
| 260 */ |
| 261 Annotation(this.atSign, Identifier name, this.period, SimpleIdentifier constru
ctorName, ArgumentList arguments) { |
| 262 this._name = becomeParentOf(name); |
| 263 this._constructorName = becomeParentOf(constructorName); |
| 264 this._arguments = becomeParentOf(arguments); |
| 265 } |
| 266 |
| 267 accept(AstVisitor visitor) => visitor.visitAnnotation(this); |
| 268 |
| 269 /** |
| 270 * Return the arguments to the constructor being invoked, or `null` if this an
notation is |
| 271 * not the invocation of a constructor. |
| 272 * |
| 273 * @return the arguments to the constructor being invoked |
| 274 */ |
| 275 ArgumentList get arguments => _arguments; |
| 276 |
| 277 Token get beginToken => atSign; |
| 278 |
| 279 /** |
| 280 * Return the name of the constructor being invoked, or `null` if this annotat
ion is not the |
| 281 * invocation of a named constructor. |
| 282 * |
| 283 * @return the name of the constructor being invoked |
| 284 */ |
| 285 SimpleIdentifier get constructorName => _constructorName; |
| 286 |
| 287 /** |
| 288 * Return the element associated with this annotation, or `null` if the AST st
ructure has |
| 289 * not been resolved or if this annotation could not be resolved. |
| 290 * |
| 291 * @return the element associated with this annotation |
| 292 */ |
| 293 Element get element { |
| 294 if (_element != null) { |
| 295 return _element; |
| 296 } |
| 297 if (_name != null) { |
| 298 return _name.staticElement; |
| 299 } |
| 300 return null; |
| 301 } |
| 302 |
| 303 Token get endToken { |
| 304 if (_arguments != null) { |
| 305 return _arguments.endToken; |
| 306 } else if (_constructorName != null) { |
| 307 return _constructorName.endToken; |
| 308 } |
| 309 return _name.endToken; |
| 310 } |
| 311 |
| 312 /** |
| 313 * Return the name of the class defining the constructor that is being invoked
or the name of the |
| 314 * field that is being referenced. |
| 315 * |
| 316 * @return the name of the constructor being invoked or the name of the field
being referenced |
| 317 */ |
| 318 Identifier get name => _name; |
| 319 |
| 320 /** |
| 321 * Set the arguments to the constructor being invoked to the given arguments. |
| 322 * |
| 323 * @param arguments the arguments to the constructor being invoked |
| 324 */ |
| 325 void set arguments(ArgumentList arguments) { |
| 326 this._arguments = becomeParentOf(arguments); |
| 327 } |
| 328 |
| 329 /** |
| 330 * Set the name of the constructor being invoked to the given name. |
| 331 * |
| 332 * @param constructorName the name of the constructor being invoked |
| 333 */ |
| 334 void set constructorName(SimpleIdentifier constructorName) { |
| 335 this._constructorName = becomeParentOf(constructorName); |
| 336 } |
| 337 |
| 338 /** |
| 339 * Set the element associated with this annotation based. |
| 340 * |
| 341 * @param element the element to be associated with this identifier |
| 342 */ |
| 343 void set element(Element element) { |
| 344 this._element = element; |
| 345 } |
| 346 |
| 347 /** |
| 348 * Set the name of the class defining the constructor that is being invoked or
the name of the |
| 349 * field that is being referenced to the given name. |
| 350 * |
| 351 * @param name the name of the constructor being invoked or the name of the fi
eld being referenced |
| 352 */ |
| 353 void set name(Identifier name) { |
| 354 this._name = becomeParentOf(name); |
| 355 } |
| 356 |
| 357 void visitChildren(AstVisitor visitor) { |
| 358 safelyVisitChild(_name, visitor); |
| 359 safelyVisitChild(_constructorName, visitor); |
| 360 safelyVisitChild(_arguments, visitor); |
| 361 } |
| 362 } |
| 363 |
| 364 /** |
| 365 * Instances of the class `ArgumentDefinitionTest` represent an argument definit
ion test. |
| 366 * |
| 367 * <pre> |
| 368 * argumentDefinitionTest ::= |
| 369 * '?' [SimpleIdentifier] |
| 370 * </pre> |
| 371 */ |
| 372 class ArgumentDefinitionTest extends Expression { |
| 373 /** |
| 374 * The token representing the question mark. |
| 375 */ |
| 376 Token question; |
| 377 |
| 378 /** |
| 379 * The identifier representing the argument being tested. |
| 380 */ |
| 381 SimpleIdentifier _identifier; |
| 382 |
| 383 /** |
| 384 * Initialize a newly created argument definition test. |
| 385 * |
| 386 * @param question the token representing the question mark |
| 387 * @param identifier the identifier representing the argument being tested |
| 388 */ |
| 389 ArgumentDefinitionTest(this.question, SimpleIdentifier identifier) { |
| 390 this._identifier = becomeParentOf(identifier); |
| 391 } |
| 392 |
| 393 accept(AstVisitor visitor) => visitor.visitArgumentDefinitionTest(this); |
| 394 |
| 395 Token get beginToken => question; |
| 396 |
| 397 Token get endToken => _identifier.endToken; |
| 398 |
| 399 /** |
| 400 * Return the identifier representing the argument being tested. |
| 401 * |
| 402 * @return the identifier representing the argument being tested |
| 403 */ |
| 404 SimpleIdentifier get identifier => _identifier; |
| 405 |
| 406 int get precedence => 15; |
| 407 |
| 408 /** |
| 409 * Set the identifier representing the argument being tested to the given iden
tifier. |
| 410 * |
| 411 * @param identifier the identifier representing the argument being tested |
| 412 */ |
| 413 void set identifier(SimpleIdentifier identifier) { |
| 414 this._identifier = becomeParentOf(identifier); |
| 415 } |
| 416 |
| 417 void visitChildren(AstVisitor visitor) { |
| 418 safelyVisitChild(_identifier, visitor); |
| 419 } |
| 420 } |
| 421 |
| 422 /** |
| 423 * Instances of the class `ArgumentList` represent a list of arguments in the in
vocation of a |
| 424 * executable element: a function, method, or constructor. |
| 425 * |
| 426 * <pre> |
| 427 * argumentList ::= |
| 428 * '(' arguments? ')' |
| 429 * |
| 430 * arguments ::= |
| 431 * [NamedExpression] (',' [NamedExpression])* |
| 432 * | [Expression] (',' [NamedExpression])* |
| 433 * </pre> |
| 434 */ |
| 435 class ArgumentList extends AstNode { |
| 436 /** |
| 437 * The left parenthesis. |
| 438 */ |
| 439 Token _leftParenthesis; |
| 440 |
| 441 /** |
| 442 * The expressions producing the values of the arguments. |
| 443 */ |
| 444 NodeList<Expression> _arguments; |
| 445 |
| 446 /** |
| 447 * The right parenthesis. |
| 448 */ |
| 449 Token _rightParenthesis; |
| 450 |
| 451 /** |
| 452 * An array containing the elements representing the parameters corresponding
to each of the |
| 453 * arguments in this list, or `null` if the AST has not been resolved or if th
e function or |
| 454 * method being invoked could not be determined based on static type informati
on. The array must |
| 455 * be the same length as the number of arguments, but can contain `null` entri
es if a given |
| 456 * argument does not correspond to a formal parameter. |
| 457 */ |
| 458 List<ParameterElement> _correspondingStaticParameters; |
| 459 |
| 460 /** |
| 461 * An array containing the elements representing the parameters corresponding
to each of the |
| 462 * arguments in this list, or `null` if the AST has not been resolved or if th
e function or |
| 463 * method being invoked could not be determined based on propagated type infor
mation. The array |
| 464 * must be the same length as the number of arguments, but can contain `null`
entries if a |
| 465 * given argument does not correspond to a formal parameter. |
| 466 */ |
| 467 List<ParameterElement> _correspondingPropagatedParameters; |
| 468 |
| 469 /** |
| 470 * Initialize a newly created list of arguments. |
| 471 * |
| 472 * @param leftParenthesis the left parenthesis |
| 473 * @param arguments the expressions producing the values of the arguments |
| 474 * @param rightParenthesis the right parenthesis |
| 475 */ |
| 476 ArgumentList(Token leftParenthesis, List<Expression> arguments, Token rightPar
enthesis) { |
| 477 this._arguments = new NodeList<Expression>(this); |
| 478 this._leftParenthesis = leftParenthesis; |
| 479 this._arguments.addAll(arguments); |
| 480 this._rightParenthesis = rightParenthesis; |
| 481 } |
| 482 |
| 483 accept(AstVisitor visitor) => visitor.visitArgumentList(this); |
| 484 |
| 485 /** |
| 486 * Return the expressions producing the values of the arguments. Although the
language requires |
| 487 * that positional arguments appear before named arguments, this class allows
them to be |
| 488 * intermixed. |
| 489 * |
| 490 * @return the expressions producing the values of the arguments |
| 491 */ |
| 492 NodeList<Expression> get arguments => _arguments; |
| 493 |
| 494 Token get beginToken => _leftParenthesis; |
| 495 |
| 496 Token get endToken => _rightParenthesis; |
| 497 |
| 498 /** |
| 499 * Return the left parenthesis. |
| 500 * |
| 501 * @return the left parenthesis |
| 502 */ |
| 503 Token get leftParenthesis => _leftParenthesis; |
| 504 |
| 505 /** |
| 506 * Return the right parenthesis. |
| 507 * |
| 508 * @return the right parenthesis |
| 509 */ |
| 510 Token get rightParenthesis => _rightParenthesis; |
| 511 |
| 512 /** |
| 513 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given |
| 514 * array of parameters. The array of parameters must be the same length as the
number of |
| 515 * arguments, but can contain `null` entries if a given argument does not corr
espond to a |
| 516 * formal parameter. |
| 517 * |
| 518 * @param parameters the parameter elements corresponding to the arguments |
| 519 */ |
| 520 void set correspondingPropagatedParameters(List<ParameterElement> parameters)
{ |
| 521 if (parameters.length != _arguments.length) { |
| 522 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); |
| 523 } |
| 524 _correspondingPropagatedParameters = parameters; |
| 525 } |
| 526 |
| 527 /** |
| 528 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given |
| 529 * array of parameters. The array of parameters must be the same length as the
number of |
| 530 * arguments, but can contain `null` entries if a given argument does not corr
espond to a |
| 531 * formal parameter. |
| 532 * |
| 533 * @param parameters the parameter elements corresponding to the arguments |
| 534 */ |
| 535 void set correspondingStaticParameters(List<ParameterElement> parameters) { |
| 536 if (parameters.length != _arguments.length) { |
| 537 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); |
| 538 } |
| 539 _correspondingStaticParameters = parameters; |
| 540 } |
| 541 |
| 542 /** |
| 543 * Set the left parenthesis to the given token. |
| 544 * |
| 545 * @param parenthesis the left parenthesis |
| 546 */ |
| 547 void set leftParenthesis(Token parenthesis) { |
| 548 _leftParenthesis = parenthesis; |
| 549 } |
| 550 |
| 551 /** |
| 552 * Set the right parenthesis to the given token. |
| 553 * |
| 554 * @param parenthesis the right parenthesis |
| 555 */ |
| 556 void set rightParenthesis(Token parenthesis) { |
| 557 _rightParenthesis = parenthesis; |
| 558 } |
| 559 |
| 560 void visitChildren(AstVisitor visitor) { |
| 561 _arguments.accept(visitor); |
| 562 } |
| 563 |
| 564 /** |
| 565 * If the given expression is a child of this list, and the AST structure has
been resolved, and |
| 566 * the function being invoked is known based on propagated type information, a
nd the expression |
| 567 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter |
| 568 * element representing the parameter to which the value of the given expressi
on will be bound. |
| 569 * Otherwise, return `null`. |
| 570 * |
| 571 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
| 572 * |
| 573 * @param expression the expression corresponding to the parameter to be retur
ned |
| 574 * @return the parameter element representing the parameter to which the value
of the expression |
| 575 * will be bound |
| 576 */ |
| 577 ParameterElement getPropagatedParameterElementFor(Expression expression) { |
| 578 if (_correspondingPropagatedParameters == null) { |
| 579 // Either the AST structure has not been resolved or the invocation of whi
ch this list is a |
| 580 // part could not be resolved. |
| 581 return null; |
| 582 } |
| 583 int index = _arguments.indexOf(expression); |
| 584 if (index < 0) { |
| 585 // The expression isn't a child of this node. |
| 586 return null; |
| 587 } |
| 588 return _correspondingPropagatedParameters[index]; |
| 589 } |
| 590 |
| 591 /** |
| 592 * If the given expression is a child of this list, and the AST structure has
been resolved, and |
| 593 * the function being invoked is known based on static type information, and t
he expression |
| 594 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter |
| 595 * element representing the parameter to which the value of the given expressi
on will be bound. |
| 596 * Otherwise, return `null`. |
| 597 * |
| 598 * This method is only intended to be used by [Expression#getStaticParameterEl
ement]. |
| 599 * |
| 600 * @param expression the expression corresponding to the parameter to be retur
ned |
| 601 * @return the parameter element representing the parameter to which the value
of the expression |
| 602 * will be bound |
| 603 */ |
| 604 ParameterElement getStaticParameterElementFor(Expression expression) { |
| 605 if (_correspondingStaticParameters == null) { |
| 606 // Either the AST structure has not been resolved or the invocation of whi
ch this list is a |
| 607 // part could not be resolved. |
| 608 return null; |
| 609 } |
| 610 int index = _arguments.indexOf(expression); |
| 611 if (index < 0) { |
| 612 // The expression isn't a child of this node. |
| 613 return null; |
| 614 } |
| 615 return _correspondingStaticParameters[index]; |
| 616 } |
| 617 } |
| 618 |
| 619 /** |
| 620 * Instances of the class `AsExpression` represent an 'as' expression. |
| 621 * |
| 622 * <pre> |
| 623 * asExpression ::= |
| 624 * [Expression] 'as' [TypeName] |
| 625 * </pre> |
| 626 */ |
| 627 class AsExpression extends Expression { |
| 628 /** |
| 629 * The expression used to compute the value being cast. |
| 630 */ |
| 631 Expression _expression; |
| 632 |
| 633 /** |
| 634 * The as operator. |
| 635 */ |
| 636 Token asOperator; |
| 637 |
| 638 /** |
| 639 * The name of the type being cast to. |
| 640 */ |
| 641 TypeName _type; |
| 642 |
| 643 /** |
| 644 * Initialize a newly created as expression. |
| 645 * |
| 646 * @param expression the expression used to compute the value being cast |
| 647 * @param isOperator the is operator |
| 648 * @param type the name of the type being cast to |
| 649 */ |
| 650 AsExpression(Expression expression, Token isOperator, TypeName type) { |
| 651 this._expression = becomeParentOf(expression); |
| 652 this.asOperator = isOperator; |
| 653 this._type = becomeParentOf(type); |
| 654 } |
| 655 |
| 656 accept(AstVisitor visitor) => visitor.visitAsExpression(this); |
| 657 |
| 658 Token get beginToken => _expression.beginToken; |
| 659 |
| 660 Token get endToken => _type.endToken; |
| 661 |
| 662 /** |
| 663 * Return the expression used to compute the value being cast. |
| 664 * |
| 665 * @return the expression used to compute the value being cast |
| 666 */ |
| 667 Expression get expression => _expression; |
| 668 |
| 669 int get precedence => 7; |
| 670 |
| 671 /** |
| 672 * Return the name of the type being cast to. |
| 673 * |
| 674 * @return the name of the type being cast to |
| 675 */ |
| 676 TypeName get type => _type; |
| 677 |
| 678 /** |
| 679 * Set the expression used to compute the value being cast to the given expres
sion. |
| 680 * |
| 681 * @param expression the expression used to compute the value being cast |
| 682 */ |
| 683 void set expression(Expression expression) { |
| 684 this._expression = becomeParentOf(expression); |
| 685 } |
| 686 |
| 687 /** |
| 688 * Set the name of the type being cast to to the given name. |
| 689 * |
| 690 * @param name the name of the type being cast to |
| 691 */ |
| 692 void set type(TypeName name) { |
| 693 this._type = becomeParentOf(name); |
| 694 } |
| 695 |
| 696 void visitChildren(AstVisitor visitor) { |
| 697 safelyVisitChild(_expression, visitor); |
| 698 safelyVisitChild(_type, visitor); |
| 699 } |
| 700 } |
| 701 |
| 702 /** |
| 703 * Instances of the class `AssertStatement` represent an assert statement. |
| 704 * |
| 705 * <pre> |
| 706 * assertStatement ::= |
| 707 * 'assert' '(' [Expression] ')' ';' |
| 708 * </pre> |
| 709 */ |
| 710 class AssertStatement extends Statement { |
| 711 /** |
| 712 * The token representing the 'assert' keyword. |
| 713 */ |
| 714 Token keyword; |
| 715 |
| 716 /** |
| 717 * The left parenthesis. |
| 718 */ |
| 719 Token leftParenthesis; |
| 720 |
| 721 /** |
| 722 * The condition that is being asserted to be `true`. |
| 723 */ |
| 724 Expression _condition; |
| 725 |
| 726 /** |
| 727 * The right parenthesis. |
| 728 */ |
| 729 Token rightParenthesis; |
| 730 |
| 731 /** |
| 732 * The semicolon terminating the statement. |
| 733 */ |
| 734 Token semicolon; |
| 735 |
| 736 /** |
| 737 * Initialize a newly created assert statement. |
| 738 * |
| 739 * @param keyword the token representing the 'assert' keyword |
| 740 * @param leftParenthesis the left parenthesis |
| 741 * @param condition the condition that is being asserted to be `true` |
| 742 * @param rightParenthesis the right parenthesis |
| 743 * @param semicolon the semicolon terminating the statement |
| 744 */ |
| 745 AssertStatement(this.keyword, this.leftParenthesis, Expression condition, this
.rightParenthesis, this.semicolon) { |
| 746 this._condition = becomeParentOf(condition); |
| 747 } |
| 748 |
| 749 accept(AstVisitor visitor) => visitor.visitAssertStatement(this); |
| 750 |
| 751 Token get beginToken => keyword; |
| 752 |
| 753 /** |
| 754 * Return the condition that is being asserted to be `true`. |
| 755 * |
| 756 * @return the condition that is being asserted to be `true` |
| 757 */ |
| 758 Expression get condition => _condition; |
| 759 |
| 760 Token get endToken => semicolon; |
| 761 |
| 762 /** |
| 763 * Set the condition that is being asserted to be `true` to the given expressi
on. |
| 764 * |
| 765 * @param the condition that is being asserted to be `true` |
| 766 */ |
| 767 void set condition(Expression condition) { |
| 768 this._condition = becomeParentOf(condition); |
| 769 } |
| 770 |
| 771 void visitChildren(AstVisitor visitor) { |
| 772 safelyVisitChild(_condition, visitor); |
| 773 } |
| 774 } |
| 775 |
| 776 /** |
| 777 * Instances of the class `AssignmentExpression` represent an assignment express
ion. |
| 778 * |
| 779 * <pre> |
| 780 * assignmentExpression ::= |
| 781 * [Expression] [Token] [Expression] |
| 782 * </pre> |
| 783 */ |
| 784 class AssignmentExpression extends Expression { |
| 785 /** |
| 786 * The expression used to compute the left hand side. |
| 787 */ |
| 788 Expression _leftHandSide; |
| 789 |
| 790 /** |
| 791 * The assignment operator being applied. |
| 792 */ |
| 793 Token operator; |
| 794 |
| 795 /** |
| 796 * The expression used to compute the right hand side. |
| 797 */ |
| 798 Expression _rightHandSide; |
| 799 |
| 800 /** |
| 801 * The element associated with the operator based on the static type of the le
ft-hand-side, or |
| 802 * `null` if the AST structure has not been resolved, if the operator is not a
compound |
| 803 * operator, or if the operator could not be resolved. |
| 804 */ |
| 805 MethodElement _staticElement; |
| 806 |
| 807 /** |
| 808 * The element associated with the operator based on the propagated type of th
e left-hand-side, or |
| 809 * `null` if the AST structure has not been resolved, if the operator is not a
compound |
| 810 * operator, or if the operator could not be resolved. |
| 811 */ |
| 812 MethodElement _propagatedElement; |
| 813 |
| 814 /** |
| 815 * Initialize a newly created assignment expression. |
| 816 * |
| 817 * @param leftHandSide the expression used to compute the left hand side |
| 818 * @param operator the assignment operator being applied |
| 819 * @param rightHandSide the expression used to compute the right hand side |
| 820 */ |
| 821 AssignmentExpression(Expression leftHandSide, this.operator, Expression rightH
andSide) { |
| 822 this._leftHandSide = becomeParentOf(leftHandSide); |
| 823 this._rightHandSide = becomeParentOf(rightHandSide); |
| 824 } |
| 825 |
| 826 accept(AstVisitor visitor) => visitor.visitAssignmentExpression(this); |
| 827 |
| 828 Token get beginToken => _leftHandSide.beginToken; |
| 829 |
| 830 /** |
| 831 * Return the best element available for this operator. If resolution was able
to find a better |
| 832 * element based on type propagation, that element will be returned. Otherwise
, the element found |
| 833 * using the result of static analysis will be returned. If resolution has not
been performed, |
| 834 * then `null` will be returned. |
| 835 * |
| 836 * @return the best element available for this operator |
| 837 */ |
| 838 MethodElement get bestElement { |
| 839 MethodElement element = propagatedElement; |
| 840 if (element == null) { |
| 841 element = staticElement; |
| 842 } |
| 843 return element; |
| 844 } |
| 845 |
| 846 Token get endToken => _rightHandSide.endToken; |
| 847 |
| 848 /** |
| 849 * Set the expression used to compute the left hand side to the given expressi
on. |
| 850 * |
| 851 * @return the expression used to compute the left hand side |
| 852 */ |
| 853 Expression get leftHandSide => _leftHandSide; |
| 854 |
| 855 int get precedence => 1; |
| 856 |
| 857 /** |
| 858 * Return the element associated with the operator based on the propagated typ
e of the |
| 859 * left-hand-side, or `null` if the AST structure has not been resolved, if th
e operator is |
| 860 * not a compound operator, or if the operator could not be resolved. One exam
ple of the latter |
| 861 * case is an operator that is not defined for the type of the left-hand opera
nd. |
| 862 * |
| 863 * @return the element associated with the operator |
| 864 */ |
| 865 MethodElement get propagatedElement => _propagatedElement; |
| 866 |
| 867 /** |
| 868 * Return the expression used to compute the right hand side. |
| 869 * |
| 870 * @return the expression used to compute the right hand side |
| 871 */ |
| 872 Expression get rightHandSide => _rightHandSide; |
| 873 |
| 874 /** |
| 875 * Return the element associated with the operator based on the static type of
the left-hand-side, |
| 876 * or `null` if the AST structure has not been resolved, if the operator is no
t a compound |
| 877 * operator, or if the operator could not be resolved. One example of the latt
er case is an |
| 878 * operator that is not defined for the type of the left-hand operand. |
| 879 * |
| 880 * @return the element associated with the operator |
| 881 */ |
| 882 MethodElement get staticElement => _staticElement; |
| 883 |
| 884 /** |
| 885 * Return the expression used to compute the left hand side. |
| 886 * |
| 887 * @param expression the expression used to compute the left hand side |
| 888 */ |
| 889 void set leftHandSide(Expression expression) { |
| 890 _leftHandSide = becomeParentOf(expression); |
| 891 } |
| 892 |
| 893 /** |
| 894 * Set the element associated with the operator based on the propagated type o
f the left-hand-side |
| 895 * to the given element. |
| 896 * |
| 897 * @param element the element to be associated with the operator |
| 898 */ |
| 899 void set propagatedElement(MethodElement element) { |
| 900 _propagatedElement = element; |
| 901 } |
| 902 |
| 903 /** |
| 904 * Set the expression used to compute the left hand side to the given expressi
on. |
| 905 * |
| 906 * @param expression the expression used to compute the left hand side |
| 907 */ |
| 908 void set rightHandSide(Expression expression) { |
| 909 _rightHandSide = becomeParentOf(expression); |
| 910 } |
| 911 |
| 912 /** |
| 913 * Set the element associated with the operator based on the static type of th
e left-hand-side to |
| 914 * the given element. |
| 915 * |
| 916 * @param element the static element to be associated with the operator |
| 917 */ |
| 918 void set staticElement(MethodElement element) { |
| 919 _staticElement = element; |
| 920 } |
| 921 |
| 922 void visitChildren(AstVisitor visitor) { |
| 923 safelyVisitChild(_leftHandSide, visitor); |
| 924 safelyVisitChild(_rightHandSide, visitor); |
| 925 } |
| 926 |
| 927 /** |
| 928 * If the AST structure has been resolved, and the function being invoked is k
nown based on |
| 929 * propagated type information, then return the parameter element representing
the parameter to |
| 930 * which the value of the right operand will be bound. Otherwise, return `null
`. |
| 931 * |
| 932 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
| 933 * |
| 934 * @return the parameter element representing the parameter to which the value
of the right |
| 935 * operand will be bound |
| 936 */ |
| 937 ParameterElement get propagatedParameterElementForRightHandSide { |
| 938 if (_propagatedElement == null) { |
| 939 return null; |
| 940 } |
| 941 List<ParameterElement> parameters = _propagatedElement.parameters; |
| 942 if (parameters.length < 1) { |
| 943 return null; |
| 944 } |
| 945 return parameters[0]; |
| 946 } |
| 947 |
| 948 /** |
| 949 * If the AST structure has been resolved, and the function being invoked is k
nown based on static |
| 950 * type information, then return the parameter element representing the parame
ter to which the |
| 951 * value of the right operand will be bound. Otherwise, return `null`. |
| 952 * |
| 953 * This method is only intended to be used by [Expression#getStaticParameterEl
ement]. |
| 954 * |
| 955 * @return the parameter element representing the parameter to which the value
of the right |
| 956 * operand will be bound |
| 957 */ |
| 958 ParameterElement get staticParameterElementForRightHandSide { |
| 959 if (_staticElement == null) { |
| 960 return null; |
| 961 } |
| 962 List<ParameterElement> parameters = _staticElement.parameters; |
| 963 if (parameters.length < 1) { |
| 964 return null; |
| 965 } |
| 966 return parameters[0]; |
| 967 } |
| 968 } |
| 969 |
| 970 /** |
| 971 * The abstract class `AstNode` defines the behavior common to all nodes in the
AST structure |
22 * for a Dart program. | 972 * for a Dart program. |
23 * | |
24 * @coverage dart.engine.ast | |
25 */ | 973 */ |
26 abstract class ASTNode { | 974 abstract class AstNode { |
27 /** | 975 /** |
28 * An empty array of ast nodes. | 976 * An empty array of ast nodes. |
29 */ | 977 */ |
30 static List<ASTNode> EMPTY_ARRAY = new List<ASTNode>(0); | 978 static List<AstNode> EMPTY_ARRAY = new List<AstNode>(0); |
31 | 979 |
32 /** | 980 /** |
33 * The parent of the node, or `null` if the node is the root of an AST structu
re. | 981 * The parent of the node, or `null` if the node is the root of an AST structu
re. |
34 */ | 982 */ |
35 ASTNode _parent; | 983 AstNode _parent; |
36 | 984 |
37 /** | 985 /** |
38 * A table mapping the names of properties to their values, or `null` if this
node does not | 986 * A table mapping the names of properties to their values, or `null` if this
node does not |
39 * have any properties associated with it. | 987 * have any properties associated with it. |
40 */ | 988 */ |
41 Map<String, Object> _propertyMap; | 989 Map<String, Object> _propertyMap; |
42 | 990 |
43 /** | 991 /** |
44 * A comparator that can be used to sort AST nodes in lexical order. In other
words, | 992 * A comparator that can be used to sort AST nodes in lexical order. In other
words, |
45 * `compare` will return a negative value if the offset of the first node is l
ess than the | 993 * `compare` will return a negative value if the offset of the first node is l
ess than the |
46 * offset of the second node, zero (0) if the nodes have the same offset, and
a positive value if | 994 * offset of the second node, zero (0) if the nodes have the same offset, and
a positive value if |
47 * if the offset of the first node is greater than the offset of the second no
de. | 995 * if the offset of the first node is greater than the offset of the second no
de. |
48 */ | 996 */ |
49 static Comparator<ASTNode> LEXICAL_ORDER = (ASTNode first, ASTNode second) =>
second.offset - first.offset; | 997 static Comparator<AstNode> LEXICAL_ORDER = (AstNode first, AstNode second) =>
second.offset - first.offset; |
50 | 998 |
51 /** | 999 /** |
52 * Use the given visitor to visit this node. | 1000 * Use the given visitor to visit this node. |
53 * | 1001 * |
54 * @param visitor the visitor that will visit this node | 1002 * @param visitor the visitor that will visit this node |
55 * @return the value returned by the visitor as a result of visiting this node | 1003 * @return the value returned by the visitor as a result of visiting this node |
56 */ | 1004 */ |
57 accept(ASTVisitor visitor); | 1005 accept(AstVisitor visitor); |
58 | 1006 |
59 /** | 1007 /** |
60 * Return the node of the given class that most immediately encloses this node
, or `null` if | 1008 * Return the node of the given class that most immediately encloses this node
, or `null` if |
61 * there is no enclosing node of the given class. | 1009 * there is no enclosing node of the given class. |
62 * | 1010 * |
63 * @param nodeClass the class of the node to be returned | 1011 * @param nodeClass the class of the node to be returned |
64 * @return the node of the given type that encloses this node | 1012 * @return the node of the given type that encloses this node |
65 */ | 1013 */ |
66 ASTNode getAncestor(Type enclosingClass) { | 1014 AstNode getAncestor(Type enclosingClass) { |
67 ASTNode node = this; | 1015 AstNode node = this; |
68 while (node != null && !isInstanceOf(node, enclosingClass)) { | 1016 while (node != null && !isInstanceOf(node, enclosingClass)) { |
69 node = node.parent; | 1017 node = node.parent; |
70 } | 1018 } |
71 return node; | 1019 return node; |
72 } | 1020 } |
73 | 1021 |
74 /** | 1022 /** |
75 * Return the first token included in this node's source range. | 1023 * Return the first token included in this node's source range. |
76 * | 1024 * |
77 * @return the first token included in this node's source range | 1025 * @return the first token included in this node's source range |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 } | 1073 } |
126 | 1074 |
127 /** | 1075 /** |
128 * Return this node's parent node, or `null` if this node is the root of an AS
T structure. | 1076 * Return this node's parent node, or `null` if this node is the root of an AS
T structure. |
129 * | 1077 * |
130 * Note that the relationship between an AST node and its parent node may chan
ge over the lifetime | 1078 * Note that the relationship between an AST node and its parent node may chan
ge over the lifetime |
131 * of a node. | 1079 * of a node. |
132 * | 1080 * |
133 * @return the parent of this node, or `null` if none | 1081 * @return the parent of this node, or `null` if none |
134 */ | 1082 */ |
135 ASTNode get parent => _parent; | 1083 AstNode get parent => _parent; |
136 | 1084 |
137 /** | 1085 /** |
138 * Return the value of the property with the given name, or `null` if this nod
e does not | 1086 * Return the value of the property with the given name, or `null` if this nod
e does not |
139 * have a property with the given name. | 1087 * have a property with the given name. |
140 * | 1088 * |
141 * @return the value of the property with the given name | 1089 * @return the value of the property with the given name |
142 */ | 1090 */ |
143 Object getProperty(String propertyName) { | 1091 Object getProperty(String propertyName) { |
144 if (_propertyMap == null) { | 1092 if (_propertyMap == null) { |
145 return null; | 1093 return null; |
146 } | 1094 } |
147 return _propertyMap[propertyName]; | 1095 return _propertyMap[propertyName]; |
148 } | 1096 } |
149 | 1097 |
150 /** | 1098 /** |
151 * Return the node at the root of this node's AST structure. Note that this me
thod's performance | 1099 * Return the node at the root of this node's AST structure. Note that this me
thod's performance |
152 * is linear with respect to the depth of the node in the AST structure (O(dep
th)). | 1100 * is linear with respect to the depth of the node in the AST structure (O(dep
th)). |
153 * | 1101 * |
154 * @return the node at the root of this node's AST structure | 1102 * @return the node at the root of this node's AST structure |
155 */ | 1103 */ |
156 ASTNode get root { | 1104 AstNode get root { |
157 ASTNode root = this; | 1105 AstNode root = this; |
158 ASTNode parent = this.parent; | 1106 AstNode parent = this.parent; |
159 while (parent != null) { | 1107 while (parent != null) { |
160 root = parent; | 1108 root = parent; |
161 parent = root.parent; | 1109 parent = root.parent; |
162 } | 1110 } |
163 return root; | 1111 return root; |
164 } | 1112 } |
165 | 1113 |
166 /** | 1114 /** |
167 * Return `true` if this node is a synthetic node. A synthetic node is a node
that was | 1115 * Return `true` if this node is a synthetic node. A synthetic node is a node
that was |
168 * introduced by the parser in order to recover from an error in the code. Syn
thetic nodes always | 1116 * introduced by the parser in order to recover from an error in the code. Syn
thetic nodes always |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 } | 1156 } |
209 | 1157 |
210 String toString() => toSource(); | 1158 String toString() => toSource(); |
211 | 1159 |
212 /** | 1160 /** |
213 * Use the given visitor to visit all of the children of this node. The childr
en will be visited | 1161 * Use the given visitor to visit all of the children of this node. The childr
en will be visited |
214 * in source order. | 1162 * in source order. |
215 * | 1163 * |
216 * @param visitor the visitor that will be used to visit the children of this
node | 1164 * @param visitor the visitor that will be used to visit the children of this
node |
217 */ | 1165 */ |
218 void visitChildren(ASTVisitor visitor); | 1166 void visitChildren(AstVisitor visitor); |
219 | 1167 |
220 /** | 1168 /** |
221 * Make this node the parent of the given child node. | 1169 * Make this node the parent of the given child node. |
222 * | 1170 * |
223 * @param child the node that will become a child of this node | 1171 * @param child the node that will become a child of this node |
224 * @return the node that was made a child of this node | 1172 * @return the node that was made a child of this node |
225 */ | 1173 */ |
226 ASTNode becomeParentOf(ASTNode child) { | 1174 AstNode becomeParentOf(AstNode child) { |
227 if (child != null) { | 1175 if (child != null) { |
228 ASTNode node = child; | 1176 AstNode node = child; |
229 node.parent = this; | 1177 node.parent = this; |
230 } | 1178 } |
231 return child; | 1179 return child; |
232 } | 1180 } |
233 | 1181 |
234 /** | 1182 /** |
235 * If the given child is not `null`, use the given visitor to visit it. | 1183 * If the given child is not `null`, use the given visitor to visit it. |
236 * | 1184 * |
237 * @param child the child to be visited | 1185 * @param child the child to be visited |
238 * @param visitor the visitor that will be used to visit the child | 1186 * @param visitor the visitor that will be used to visit the child |
239 */ | 1187 */ |
240 void safelyVisitChild(ASTNode child, ASTVisitor visitor) { | 1188 void safelyVisitChild(AstNode child, AstVisitor visitor) { |
241 if (child != null) { | 1189 if (child != null) { |
242 child.accept(visitor); | 1190 child.accept(visitor); |
243 } | 1191 } |
244 } | 1192 } |
245 | 1193 |
246 /** | 1194 /** |
247 * Set the parent of this node to the given node. | 1195 * Set the parent of this node to the given node. |
248 * | 1196 * |
249 * @param newParent the node that is to be made the parent of this node | 1197 * @param newParent the node that is to be made the parent of this node |
250 */ | 1198 */ |
251 void set parent(ASTNode newParent) { | 1199 void set parent(AstNode newParent) { |
252 _parent = newParent; | 1200 _parent = newParent; |
253 } | 1201 } |
254 | |
255 static int _hashCodeGenerator = 0; | |
256 | |
257 final int hashCode = ++_hashCodeGenerator; | |
258 } | 1202 } |
259 | 1203 |
260 /** | 1204 /** |
261 * The interface `ASTVisitor` defines the behavior of objects that can be used t
o visit an AST | 1205 * The interface `AstVisitor` defines the behavior of objects that can be used t
o visit an AST |
262 * structure. | 1206 * structure. |
263 * | |
264 * @coverage dart.engine.ast | |
265 */ | 1207 */ |
266 abstract class ASTVisitor<R> { | 1208 abstract class AstVisitor<R> { |
267 R visitAdjacentStrings(AdjacentStrings node); | 1209 R visitAdjacentStrings(AdjacentStrings node); |
268 | 1210 |
269 R visitAnnotation(Annotation node); | 1211 R visitAnnotation(Annotation node); |
270 | 1212 |
271 R visitArgumentDefinitionTest(ArgumentDefinitionTest node); | 1213 R visitArgumentDefinitionTest(ArgumentDefinitionTest node); |
272 | 1214 |
273 R visitArgumentList(ArgumentList node); | 1215 R visitArgumentList(ArgumentList node); |
274 | 1216 |
275 R visitAsExpression(AsExpression node); | 1217 R visitAsExpression(AsExpression node); |
276 | 1218 |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 R visitVariableDeclarationList(VariableDeclarationList node); | 1407 R visitVariableDeclarationList(VariableDeclarationList node); |
466 | 1408 |
467 R visitVariableDeclarationStatement(VariableDeclarationStatement node); | 1409 R visitVariableDeclarationStatement(VariableDeclarationStatement node); |
468 | 1410 |
469 R visitWhileStatement(WhileStatement node); | 1411 R visitWhileStatement(WhileStatement node); |
470 | 1412 |
471 R visitWithClause(WithClause node); | 1413 R visitWithClause(WithClause node); |
472 } | 1414 } |
473 | 1415 |
474 /** | 1416 /** |
475 * Instances of the class `AdjacentStrings` represents two or more string litera
ls that are | |
476 * implicitly concatenated because of being adjacent (separated only by whitespa
ce). | |
477 * | |
478 * While the grammar only allows adjacent strings when all of the strings are of
the same kind | |
479 * (single line or multi-line), this class doesn't enforce that restriction. | |
480 * | |
481 * <pre> | |
482 * adjacentStrings ::= | |
483 * [StringLiteral] [StringLiteral]+ | |
484 * </pre> | |
485 * | |
486 * @coverage dart.engine.ast | |
487 */ | |
488 class AdjacentStrings extends StringLiteral { | |
489 /** | |
490 * The strings that are implicitly concatenated. | |
491 */ | |
492 NodeList<StringLiteral> _strings; | |
493 | |
494 /** | |
495 * Initialize a newly created list of adjacent strings. | |
496 * | |
497 * @param strings the strings that are implicitly concatenated | |
498 */ | |
499 AdjacentStrings(List<StringLiteral> strings) { | |
500 this._strings = new NodeList<StringLiteral>(this); | |
501 this._strings.addAll(strings); | |
502 } | |
503 | |
504 accept(ASTVisitor visitor) => visitor.visitAdjacentStrings(this); | |
505 | |
506 Token get beginToken => _strings.beginToken; | |
507 | |
508 Token get endToken => _strings.endToken; | |
509 | |
510 /** | |
511 * Return the strings that are implicitly concatenated. | |
512 * | |
513 * @return the strings that are implicitly concatenated | |
514 */ | |
515 NodeList<StringLiteral> get strings => _strings; | |
516 | |
517 void visitChildren(ASTVisitor visitor) { | |
518 _strings.accept(visitor); | |
519 } | |
520 | |
521 void appendStringValue(JavaStringBuilder builder) { | |
522 for (StringLiteral stringLiteral in strings) { | |
523 stringLiteral.appendStringValue(builder); | |
524 } | |
525 } | |
526 } | |
527 | |
528 /** | |
529 * The abstract class `AnnotatedNode` defines the behavior of nodes that can be
annotated with | |
530 * both a comment and metadata. | |
531 * | |
532 * @coverage dart.engine.ast | |
533 */ | |
534 abstract class AnnotatedNode extends ASTNode { | |
535 /** | |
536 * The documentation comment associated with this node, or `null` if this node
does not have | |
537 * a documentation comment associated with it. | |
538 */ | |
539 Comment _comment; | |
540 | |
541 /** | |
542 * The annotations associated with this node. | |
543 */ | |
544 NodeList<Annotation> _metadata; | |
545 | |
546 /** | |
547 * Initialize a newly created node. | |
548 * | |
549 * @param comment the documentation comment associated with this node | |
550 * @param metadata the annotations associated with this node | |
551 */ | |
552 AnnotatedNode(Comment comment, List<Annotation> metadata) { | |
553 this._metadata = new NodeList<Annotation>(this); | |
554 this._comment = becomeParentOf(comment); | |
555 this._metadata.addAll(metadata); | |
556 } | |
557 | |
558 Token get beginToken { | |
559 if (_comment == null) { | |
560 if (_metadata.isEmpty) { | |
561 return firstTokenAfterCommentAndMetadata; | |
562 } else { | |
563 return _metadata.beginToken; | |
564 } | |
565 } else if (_metadata.isEmpty) { | |
566 return _comment.beginToken; | |
567 } | |
568 Token commentToken = _comment.beginToken; | |
569 Token metadataToken = _metadata.beginToken; | |
570 if (commentToken.offset < metadataToken.offset) { | |
571 return commentToken; | |
572 } | |
573 return metadataToken; | |
574 } | |
575 | |
576 /** | |
577 * Return the documentation comment associated with this node, or `null` if th
is node does | |
578 * not have a documentation comment associated with it. | |
579 * | |
580 * @return the documentation comment associated with this node | |
581 */ | |
582 Comment get documentationComment => _comment; | |
583 | |
584 /** | |
585 * Return the annotations associated with this node. | |
586 * | |
587 * @return the annotations associated with this node | |
588 */ | |
589 NodeList<Annotation> get metadata => _metadata; | |
590 | |
591 /** | |
592 * Set the documentation comment associated with this node to the given commen
t. | |
593 * | |
594 * @param comment the documentation comment to be associated with this node | |
595 */ | |
596 void set documentationComment(Comment comment) { | |
597 this._comment = becomeParentOf(comment); | |
598 } | |
599 | |
600 /** | |
601 * Set the metadata associated with this node to the given metadata. | |
602 * | |
603 * @param metadata the metadata to be associated with this node | |
604 */ | |
605 void set metadata(List<Annotation> metadata) { | |
606 this._metadata.clear(); | |
607 this._metadata.addAll(metadata); | |
608 } | |
609 | |
610 void visitChildren(ASTVisitor visitor) { | |
611 if (commentIsBeforeAnnotations()) { | |
612 safelyVisitChild(_comment, visitor); | |
613 _metadata.accept(visitor); | |
614 } else { | |
615 for (ASTNode child in sortedCommentAndAnnotations) { | |
616 child.accept(visitor); | |
617 } | |
618 } | |
619 } | |
620 | |
621 /** | |
622 * Return the first token following the comment and metadata. | |
623 * | |
624 * @return the first token following the comment and metadata | |
625 */ | |
626 Token get firstTokenAfterCommentAndMetadata; | |
627 | |
628 /** | |
629 * Return `true` if the comment is lexically before any annotations. | |
630 * | |
631 * @return `true` if the comment is lexically before any annotations | |
632 */ | |
633 bool commentIsBeforeAnnotations() { | |
634 if (_comment == null || _metadata.isEmpty) { | |
635 return true; | |
636 } | |
637 Annotation firstAnnotation = _metadata[0]; | |
638 return _comment.offset < firstAnnotation.offset; | |
639 } | |
640 | |
641 /** | |
642 * Return an array containing the comment and annotations associated with this
node, sorted in | |
643 * lexical order. | |
644 * | |
645 * @return the comment and annotations associated with this node in the order
in which they | |
646 * appeared in the original source | |
647 */ | |
648 List<ASTNode> get sortedCommentAndAnnotations { | |
649 List<ASTNode> childList = new List<ASTNode>(); | |
650 childList.add(_comment); | |
651 childList.addAll(_metadata); | |
652 List<ASTNode> children = new List.from(childList); | |
653 children.sort(ASTNode.LEXICAL_ORDER); | |
654 return children; | |
655 } | |
656 } | |
657 | |
658 /** | |
659 * Instances of the class `Annotation` represent an annotation that can be assoc
iated with an | |
660 * AST node. | |
661 * | |
662 * <pre> | |
663 * metadata ::= | |
664 * annotation* | |
665 * | |
666 * annotation ::= | |
667 * '@' [Identifier] ('.' [SimpleIdentifier])? [ArgumentList]? | |
668 * </pre> | |
669 * | |
670 * @coverage dart.engine.ast | |
671 */ | |
672 class Annotation extends ASTNode { | |
673 /** | |
674 * The at sign that introduced the annotation. | |
675 */ | |
676 Token atSign; | |
677 | |
678 /** | |
679 * The name of the class defining the constructor that is being invoked or the
name of the field | |
680 * that is being referenced. | |
681 */ | |
682 Identifier _name; | |
683 | |
684 /** | |
685 * The period before the constructor name, or `null` if this annotation is not
the | |
686 * invocation of a named constructor. | |
687 */ | |
688 Token period; | |
689 | |
690 /** | |
691 * The name of the constructor being invoked, or `null` if this annotation is
not the | |
692 * invocation of a named constructor. | |
693 */ | |
694 SimpleIdentifier _constructorName; | |
695 | |
696 /** | |
697 * The arguments to the constructor being invoked, or `null` if this annotatio
n is not the | |
698 * invocation of a constructor. | |
699 */ | |
700 ArgumentList _arguments; | |
701 | |
702 /** | |
703 * The element associated with this annotation, or `null` if the AST structure
has not been | |
704 * resolved or if this annotation could not be resolved. | |
705 */ | |
706 Element _element; | |
707 | |
708 /** | |
709 * Initialize a newly created annotation. | |
710 * | |
711 * @param atSign the at sign that introduced the annotation | |
712 * @param name the name of the class defining the constructor that is being in
voked or the name of | |
713 * the field that is being referenced | |
714 * @param period the period before the constructor name, or `null` if this ann
otation is not | |
715 * the invocation of a named constructor | |
716 * @param constructorName the name of the constructor being invoked, or `null`
if this | |
717 * annotation is not the invocation of a named constructor | |
718 * @param arguments the arguments to the constructor being invoked, or `null`
if this | |
719 * annotation is not the invocation of a constructor | |
720 */ | |
721 Annotation(this.atSign, Identifier name, this.period, SimpleIdentifier constru
ctorName, ArgumentList arguments) { | |
722 this._name = becomeParentOf(name); | |
723 this._constructorName = becomeParentOf(constructorName); | |
724 this._arguments = becomeParentOf(arguments); | |
725 } | |
726 | |
727 accept(ASTVisitor visitor) => visitor.visitAnnotation(this); | |
728 | |
729 /** | |
730 * Return the arguments to the constructor being invoked, or `null` if this an
notation is | |
731 * not the invocation of a constructor. | |
732 * | |
733 * @return the arguments to the constructor being invoked | |
734 */ | |
735 ArgumentList get arguments => _arguments; | |
736 | |
737 Token get beginToken => atSign; | |
738 | |
739 /** | |
740 * Return the name of the constructor being invoked, or `null` if this annotat
ion is not the | |
741 * invocation of a named constructor. | |
742 * | |
743 * @return the name of the constructor being invoked | |
744 */ | |
745 SimpleIdentifier get constructorName => _constructorName; | |
746 | |
747 /** | |
748 * Return the element associated with this annotation, or `null` if the AST st
ructure has | |
749 * not been resolved or if this annotation could not be resolved. | |
750 * | |
751 * @return the element associated with this annotation | |
752 */ | |
753 Element get element { | |
754 if (_element != null) { | |
755 return _element; | |
756 } | |
757 if (_name != null) { | |
758 return _name.staticElement; | |
759 } | |
760 return null; | |
761 } | |
762 | |
763 Token get endToken { | |
764 if (_arguments != null) { | |
765 return _arguments.endToken; | |
766 } else if (_constructorName != null) { | |
767 return _constructorName.endToken; | |
768 } | |
769 return _name.endToken; | |
770 } | |
771 | |
772 /** | |
773 * Return the name of the class defining the constructor that is being invoked
or the name of the | |
774 * field that is being referenced. | |
775 * | |
776 * @return the name of the constructor being invoked or the name of the field
being referenced | |
777 */ | |
778 Identifier get name => _name; | |
779 | |
780 /** | |
781 * Set the arguments to the constructor being invoked to the given arguments. | |
782 * | |
783 * @param arguments the arguments to the constructor being invoked | |
784 */ | |
785 void set arguments(ArgumentList arguments) { | |
786 this._arguments = becomeParentOf(arguments); | |
787 } | |
788 | |
789 /** | |
790 * Set the name of the constructor being invoked to the given name. | |
791 * | |
792 * @param constructorName the name of the constructor being invoked | |
793 */ | |
794 void set constructorName(SimpleIdentifier constructorName) { | |
795 this._constructorName = becomeParentOf(constructorName); | |
796 } | |
797 | |
798 /** | |
799 * Set the element associated with this annotation based. | |
800 * | |
801 * @param element the element to be associated with this identifier | |
802 */ | |
803 void set element(Element element) { | |
804 this._element = element; | |
805 } | |
806 | |
807 /** | |
808 * Set the name of the class defining the constructor that is being invoked or
the name of the | |
809 * field that is being referenced to the given name. | |
810 * | |
811 * @param name the name of the constructor being invoked or the name of the fi
eld being referenced | |
812 */ | |
813 void set name(Identifier name) { | |
814 this._name = becomeParentOf(name); | |
815 } | |
816 | |
817 void visitChildren(ASTVisitor visitor) { | |
818 safelyVisitChild(_name, visitor); | |
819 safelyVisitChild(_constructorName, visitor); | |
820 safelyVisitChild(_arguments, visitor); | |
821 } | |
822 } | |
823 | |
824 /** | |
825 * Instances of the class `ArgumentDefinitionTest` represent an argument definit
ion test. | |
826 * | |
827 * <pre> | |
828 * argumentDefinitionTest ::= | |
829 * '?' [SimpleIdentifier] | |
830 * </pre> | |
831 * | |
832 * @coverage dart.engine.ast | |
833 */ | |
834 class ArgumentDefinitionTest extends Expression { | |
835 /** | |
836 * The token representing the question mark. | |
837 */ | |
838 Token question; | |
839 | |
840 /** | |
841 * The identifier representing the argument being tested. | |
842 */ | |
843 SimpleIdentifier _identifier; | |
844 | |
845 /** | |
846 * Initialize a newly created argument definition test. | |
847 * | |
848 * @param question the token representing the question mark | |
849 * @param identifier the identifier representing the argument being tested | |
850 */ | |
851 ArgumentDefinitionTest(this.question, SimpleIdentifier identifier) { | |
852 this._identifier = becomeParentOf(identifier); | |
853 } | |
854 | |
855 accept(ASTVisitor visitor) => visitor.visitArgumentDefinitionTest(this); | |
856 | |
857 Token get beginToken => question; | |
858 | |
859 Token get endToken => _identifier.endToken; | |
860 | |
861 /** | |
862 * Return the identifier representing the argument being tested. | |
863 * | |
864 * @return the identifier representing the argument being tested | |
865 */ | |
866 SimpleIdentifier get identifier => _identifier; | |
867 | |
868 int get precedence => 15; | |
869 | |
870 /** | |
871 * Set the identifier representing the argument being tested to the given iden
tifier. | |
872 * | |
873 * @param identifier the identifier representing the argument being tested | |
874 */ | |
875 void set identifier(SimpleIdentifier identifier) { | |
876 this._identifier = becomeParentOf(identifier); | |
877 } | |
878 | |
879 void visitChildren(ASTVisitor visitor) { | |
880 safelyVisitChild(_identifier, visitor); | |
881 } | |
882 } | |
883 | |
884 /** | |
885 * Instances of the class `ArgumentList` represent a list of arguments in the in
vocation of a | |
886 * executable element: a function, method, or constructor. | |
887 * | |
888 * <pre> | |
889 * argumentList ::= | |
890 * '(' arguments? ')' | |
891 * | |
892 * arguments ::= | |
893 * [NamedExpression] (',' [NamedExpression])* | |
894 * | [Expression] (',' [NamedExpression])* | |
895 * </pre> | |
896 * | |
897 * @coverage dart.engine.ast | |
898 */ | |
899 class ArgumentList extends ASTNode { | |
900 /** | |
901 * The left parenthesis. | |
902 */ | |
903 Token _leftParenthesis; | |
904 | |
905 /** | |
906 * The expressions producing the values of the arguments. | |
907 */ | |
908 NodeList<Expression> _arguments; | |
909 | |
910 /** | |
911 * The right parenthesis. | |
912 */ | |
913 Token _rightParenthesis; | |
914 | |
915 /** | |
916 * An array containing the elements representing the parameters corresponding
to each of the | |
917 * arguments in this list, or `null` if the AST has not been resolved or if th
e function or | |
918 * method being invoked could not be determined based on static type informati
on. The array must | |
919 * be the same length as the number of arguments, but can contain `null` entri
es if a given | |
920 * argument does not correspond to a formal parameter. | |
921 */ | |
922 List<ParameterElement> _correspondingStaticParameters; | |
923 | |
924 /** | |
925 * An array containing the elements representing the parameters corresponding
to each of the | |
926 * arguments in this list, or `null` if the AST has not been resolved or if th
e function or | |
927 * method being invoked could not be determined based on propagated type infor
mation. The array | |
928 * must be the same length as the number of arguments, but can contain `null`
entries if a | |
929 * given argument does not correspond to a formal parameter. | |
930 */ | |
931 List<ParameterElement> _correspondingPropagatedParameters; | |
932 | |
933 /** | |
934 * Initialize a newly created list of arguments. | |
935 * | |
936 * @param leftParenthesis the left parenthesis | |
937 * @param arguments the expressions producing the values of the arguments | |
938 * @param rightParenthesis the right parenthesis | |
939 */ | |
940 ArgumentList(Token leftParenthesis, List<Expression> arguments, Token rightPar
enthesis) { | |
941 this._arguments = new NodeList<Expression>(this); | |
942 this._leftParenthesis = leftParenthesis; | |
943 this._arguments.addAll(arguments); | |
944 this._rightParenthesis = rightParenthesis; | |
945 } | |
946 | |
947 accept(ASTVisitor visitor) => visitor.visitArgumentList(this); | |
948 | |
949 /** | |
950 * Return the expressions producing the values of the arguments. Although the
language requires | |
951 * that positional arguments appear before named arguments, this class allows
them to be | |
952 * intermixed. | |
953 * | |
954 * @return the expressions producing the values of the arguments | |
955 */ | |
956 NodeList<Expression> get arguments => _arguments; | |
957 | |
958 Token get beginToken => _leftParenthesis; | |
959 | |
960 Token get endToken => _rightParenthesis; | |
961 | |
962 /** | |
963 * Return the left parenthesis. | |
964 * | |
965 * @return the left parenthesis | |
966 */ | |
967 Token get leftParenthesis => _leftParenthesis; | |
968 | |
969 /** | |
970 * Return the right parenthesis. | |
971 * | |
972 * @return the right parenthesis | |
973 */ | |
974 Token get rightParenthesis => _rightParenthesis; | |
975 | |
976 /** | |
977 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given | |
978 * array of parameters. The array of parameters must be the same length as the
number of | |
979 * arguments, but can contain `null` entries if a given argument does not corr
espond to a | |
980 * formal parameter. | |
981 * | |
982 * @param parameters the parameter elements corresponding to the arguments | |
983 */ | |
984 void set correspondingPropagatedParameters(List<ParameterElement> parameters)
{ | |
985 if (parameters.length != _arguments.length) { | |
986 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); | |
987 } | |
988 _correspondingPropagatedParameters = parameters; | |
989 } | |
990 | |
991 /** | |
992 * Set the parameter elements corresponding to each of the arguments in this l
ist to the given | |
993 * array of parameters. The array of parameters must be the same length as the
number of | |
994 * arguments, but can contain `null` entries if a given argument does not corr
espond to a | |
995 * formal parameter. | |
996 * | |
997 * @param parameters the parameter elements corresponding to the arguments | |
998 */ | |
999 void set correspondingStaticParameters(List<ParameterElement> parameters) { | |
1000 if (parameters.length != _arguments.length) { | |
1001 throw new IllegalArgumentException("Expected ${_arguments.length} paramete
rs, not ${parameters.length}"); | |
1002 } | |
1003 _correspondingStaticParameters = parameters; | |
1004 } | |
1005 | |
1006 /** | |
1007 * Set the left parenthesis to the given token. | |
1008 * | |
1009 * @param parenthesis the left parenthesis | |
1010 */ | |
1011 void set leftParenthesis(Token parenthesis) { | |
1012 _leftParenthesis = parenthesis; | |
1013 } | |
1014 | |
1015 /** | |
1016 * Set the right parenthesis to the given token. | |
1017 * | |
1018 * @param parenthesis the right parenthesis | |
1019 */ | |
1020 void set rightParenthesis(Token parenthesis) { | |
1021 _rightParenthesis = parenthesis; | |
1022 } | |
1023 | |
1024 void visitChildren(ASTVisitor visitor) { | |
1025 _arguments.accept(visitor); | |
1026 } | |
1027 | |
1028 /** | |
1029 * If the given expression is a child of this list, and the AST structure has
been resolved, and | |
1030 * the function being invoked is known based on propagated type information, a
nd the expression | |
1031 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter | |
1032 * element representing the parameter to which the value of the given expressi
on will be bound. | |
1033 * Otherwise, return `null`. | |
1034 * | |
1035 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | |
1036 * | |
1037 * @param expression the expression corresponding to the parameter to be retur
ned | |
1038 * @return the parameter element representing the parameter to which the value
of the expression | |
1039 * will be bound | |
1040 */ | |
1041 ParameterElement getPropagatedParameterElementFor(Expression expression) { | |
1042 if (_correspondingPropagatedParameters == null) { | |
1043 // Either the AST structure has not been resolved or the invocation of whi
ch this list is a | |
1044 // part could not be resolved. | |
1045 return null; | |
1046 } | |
1047 int index = _arguments.indexOf(expression); | |
1048 if (index < 0) { | |
1049 // The expression isn't a child of this node. | |
1050 return null; | |
1051 } | |
1052 return _correspondingPropagatedParameters[index]; | |
1053 } | |
1054 | |
1055 /** | |
1056 * If the given expression is a child of this list, and the AST structure has
been resolved, and | |
1057 * the function being invoked is known based on static type information, and t
he expression | |
1058 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter | |
1059 * element representing the parameter to which the value of the given expressi
on will be bound. | |
1060 * Otherwise, return `null`. | |
1061 * | |
1062 * This method is only intended to be used by [Expression#getStaticParameterEl
ement]. | |
1063 * | |
1064 * @param expression the expression corresponding to the parameter to be retur
ned | |
1065 * @return the parameter element representing the parameter to which the value
of the expression | |
1066 * will be bound | |
1067 */ | |
1068 ParameterElement getStaticParameterElementFor(Expression expression) { | |
1069 if (_correspondingStaticParameters == null) { | |
1070 // Either the AST structure has not been resolved or the invocation of whi
ch this list is a | |
1071 // part could not be resolved. | |
1072 return null; | |
1073 } | |
1074 int index = _arguments.indexOf(expression); | |
1075 if (index < 0) { | |
1076 // The expression isn't a child of this node. | |
1077 return null; | |
1078 } | |
1079 return _correspondingStaticParameters[index]; | |
1080 } | |
1081 } | |
1082 | |
1083 /** | |
1084 * Instances of the class `AsExpression` represent an 'as' expression. | |
1085 * | |
1086 * <pre> | |
1087 * asExpression ::= | |
1088 * [Expression] 'as' [TypeName] | |
1089 * </pre> | |
1090 * | |
1091 * @coverage dart.engine.ast | |
1092 */ | |
1093 class AsExpression extends Expression { | |
1094 /** | |
1095 * The expression used to compute the value being cast. | |
1096 */ | |
1097 Expression _expression; | |
1098 | |
1099 /** | |
1100 * The as operator. | |
1101 */ | |
1102 Token asOperator; | |
1103 | |
1104 /** | |
1105 * The name of the type being cast to. | |
1106 */ | |
1107 TypeName _type; | |
1108 | |
1109 /** | |
1110 * Initialize a newly created as expression. | |
1111 * | |
1112 * @param expression the expression used to compute the value being cast | |
1113 * @param isOperator the is operator | |
1114 * @param type the name of the type being cast to | |
1115 */ | |
1116 AsExpression(Expression expression, Token isOperator, TypeName type) { | |
1117 this._expression = becomeParentOf(expression); | |
1118 this.asOperator = isOperator; | |
1119 this._type = becomeParentOf(type); | |
1120 } | |
1121 | |
1122 accept(ASTVisitor visitor) => visitor.visitAsExpression(this); | |
1123 | |
1124 Token get beginToken => _expression.beginToken; | |
1125 | |
1126 Token get endToken => _type.endToken; | |
1127 | |
1128 /** | |
1129 * Return the expression used to compute the value being cast. | |
1130 * | |
1131 * @return the expression used to compute the value being cast | |
1132 */ | |
1133 Expression get expression => _expression; | |
1134 | |
1135 int get precedence => 7; | |
1136 | |
1137 /** | |
1138 * Return the name of the type being cast to. | |
1139 * | |
1140 * @return the name of the type being cast to | |
1141 */ | |
1142 TypeName get type => _type; | |
1143 | |
1144 /** | |
1145 * Set the expression used to compute the value being cast to the given expres
sion. | |
1146 * | |
1147 * @param expression the expression used to compute the value being cast | |
1148 */ | |
1149 void set expression(Expression expression) { | |
1150 this._expression = becomeParentOf(expression); | |
1151 } | |
1152 | |
1153 /** | |
1154 * Set the name of the type being cast to to the given name. | |
1155 * | |
1156 * @param name the name of the type being cast to | |
1157 */ | |
1158 void set type(TypeName name) { | |
1159 this._type = becomeParentOf(name); | |
1160 } | |
1161 | |
1162 void visitChildren(ASTVisitor visitor) { | |
1163 safelyVisitChild(_expression, visitor); | |
1164 safelyVisitChild(_type, visitor); | |
1165 } | |
1166 } | |
1167 | |
1168 /** | |
1169 * Instances of the class `AssertStatement` represent an assert statement. | |
1170 * | |
1171 * <pre> | |
1172 * assertStatement ::= | |
1173 * 'assert' '(' [Expression] ')' ';' | |
1174 * </pre> | |
1175 * | |
1176 * @coverage dart.engine.ast | |
1177 */ | |
1178 class AssertStatement extends Statement { | |
1179 /** | |
1180 * The token representing the 'assert' keyword. | |
1181 */ | |
1182 Token keyword; | |
1183 | |
1184 /** | |
1185 * The left parenthesis. | |
1186 */ | |
1187 Token leftParenthesis; | |
1188 | |
1189 /** | |
1190 * The condition that is being asserted to be `true`. | |
1191 */ | |
1192 Expression _condition; | |
1193 | |
1194 /** | |
1195 * The right parenthesis. | |
1196 */ | |
1197 Token rightParenthesis; | |
1198 | |
1199 /** | |
1200 * The semicolon terminating the statement. | |
1201 */ | |
1202 Token semicolon; | |
1203 | |
1204 /** | |
1205 * Initialize a newly created assert statement. | |
1206 * | |
1207 * @param keyword the token representing the 'assert' keyword | |
1208 * @param leftParenthesis the left parenthesis | |
1209 * @param condition the condition that is being asserted to be `true` | |
1210 * @param rightParenthesis the right parenthesis | |
1211 * @param semicolon the semicolon terminating the statement | |
1212 */ | |
1213 AssertStatement(this.keyword, this.leftParenthesis, Expression condition, this
.rightParenthesis, this.semicolon) { | |
1214 this._condition = becomeParentOf(condition); | |
1215 } | |
1216 | |
1217 accept(ASTVisitor visitor) => visitor.visitAssertStatement(this); | |
1218 | |
1219 Token get beginToken => keyword; | |
1220 | |
1221 /** | |
1222 * Return the condition that is being asserted to be `true`. | |
1223 * | |
1224 * @return the condition that is being asserted to be `true` | |
1225 */ | |
1226 Expression get condition => _condition; | |
1227 | |
1228 Token get endToken => semicolon; | |
1229 | |
1230 /** | |
1231 * Set the condition that is being asserted to be `true` to the given expressi
on. | |
1232 * | |
1233 * @param the condition that is being asserted to be `true` | |
1234 */ | |
1235 void set condition(Expression condition) { | |
1236 this._condition = becomeParentOf(condition); | |
1237 } | |
1238 | |
1239 void visitChildren(ASTVisitor visitor) { | |
1240 safelyVisitChild(_condition, visitor); | |
1241 } | |
1242 } | |
1243 | |
1244 /** | |
1245 * Instances of the class `AssignmentExpression` represent an assignment express
ion. | |
1246 * | |
1247 * <pre> | |
1248 * assignmentExpression ::= | |
1249 * [Expression] [Token] [Expression] | |
1250 * </pre> | |
1251 * | |
1252 * @coverage dart.engine.ast | |
1253 */ | |
1254 class AssignmentExpression extends Expression { | |
1255 /** | |
1256 * The expression used to compute the left hand side. | |
1257 */ | |
1258 Expression _leftHandSide; | |
1259 | |
1260 /** | |
1261 * The assignment operator being applied. | |
1262 */ | |
1263 Token operator; | |
1264 | |
1265 /** | |
1266 * The expression used to compute the right hand side. | |
1267 */ | |
1268 Expression _rightHandSide; | |
1269 | |
1270 /** | |
1271 * The element associated with the operator based on the static type of the le
ft-hand-side, or | |
1272 * `null` if the AST structure has not been resolved, if the operator is not a
compound | |
1273 * operator, or if the operator could not be resolved. | |
1274 */ | |
1275 MethodElement _staticElement; | |
1276 | |
1277 /** | |
1278 * The element associated with the operator based on the propagated type of th
e left-hand-side, or | |
1279 * `null` if the AST structure has not been resolved, if the operator is not a
compound | |
1280 * operator, or if the operator could not be resolved. | |
1281 */ | |
1282 MethodElement _propagatedElement; | |
1283 | |
1284 /** | |
1285 * Initialize a newly created assignment expression. | |
1286 * | |
1287 * @param leftHandSide the expression used to compute the left hand side | |
1288 * @param operator the assignment operator being applied | |
1289 * @param rightHandSide the expression used to compute the right hand side | |
1290 */ | |
1291 AssignmentExpression(Expression leftHandSide, this.operator, Expression rightH
andSide) { | |
1292 this._leftHandSide = becomeParentOf(leftHandSide); | |
1293 this._rightHandSide = becomeParentOf(rightHandSide); | |
1294 } | |
1295 | |
1296 accept(ASTVisitor visitor) => visitor.visitAssignmentExpression(this); | |
1297 | |
1298 Token get beginToken => _leftHandSide.beginToken; | |
1299 | |
1300 /** | |
1301 * Return the best element available for this operator. If resolution was able
to find a better | |
1302 * element based on type propagation, that element will be returned. Otherwise
, the element found | |
1303 * using the result of static analysis will be returned. If resolution has not
been performed, | |
1304 * then `null` will be returned. | |
1305 * | |
1306 * @return the best element available for this operator | |
1307 */ | |
1308 MethodElement get bestElement { | |
1309 MethodElement element = propagatedElement; | |
1310 if (element == null) { | |
1311 element = staticElement; | |
1312 } | |
1313 return element; | |
1314 } | |
1315 | |
1316 Token get endToken => _rightHandSide.endToken; | |
1317 | |
1318 /** | |
1319 * Set the expression used to compute the left hand side to the given expressi
on. | |
1320 * | |
1321 * @return the expression used to compute the left hand side | |
1322 */ | |
1323 Expression get leftHandSide => _leftHandSide; | |
1324 | |
1325 int get precedence => 1; | |
1326 | |
1327 /** | |
1328 * Return the element associated with the operator based on the propagated typ
e of the | |
1329 * left-hand-side, or `null` if the AST structure has not been resolved, if th
e operator is | |
1330 * not a compound operator, or if the operator could not be resolved. One exam
ple of the latter | |
1331 * case is an operator that is not defined for the type of the left-hand opera
nd. | |
1332 * | |
1333 * @return the element associated with the operator | |
1334 */ | |
1335 MethodElement get propagatedElement => _propagatedElement; | |
1336 | |
1337 /** | |
1338 * Return the expression used to compute the right hand side. | |
1339 * | |
1340 * @return the expression used to compute the right hand side | |
1341 */ | |
1342 Expression get rightHandSide => _rightHandSide; | |
1343 | |
1344 /** | |
1345 * Return the element associated with the operator based on the static type of
the left-hand-side, | |
1346 * or `null` if the AST structure has not been resolved, if the operator is no
t a compound | |
1347 * operator, or if the operator could not be resolved. One example of the latt
er case is an | |
1348 * operator that is not defined for the type of the left-hand operand. | |
1349 * | |
1350 * @return the element associated with the operator | |
1351 */ | |
1352 MethodElement get staticElement => _staticElement; | |
1353 | |
1354 /** | |
1355 * Return the expression used to compute the left hand side. | |
1356 * | |
1357 * @param expression the expression used to compute the left hand side | |
1358 */ | |
1359 void set leftHandSide(Expression expression) { | |
1360 _leftHandSide = becomeParentOf(expression); | |
1361 } | |
1362 | |
1363 /** | |
1364 * Set the element associated with the operator based on the propagated type o
f the left-hand-side | |
1365 * to the given element. | |
1366 * | |
1367 * @param element the element to be associated with the operator | |
1368 */ | |
1369 void set propagatedElement(MethodElement element) { | |
1370 _propagatedElement = element; | |
1371 } | |
1372 | |
1373 /** | |
1374 * Set the expression used to compute the left hand side to the given expressi
on. | |
1375 * | |
1376 * @param expression the expression used to compute the left hand side | |
1377 */ | |
1378 void set rightHandSide(Expression expression) { | |
1379 _rightHandSide = becomeParentOf(expression); | |
1380 } | |
1381 | |
1382 /** | |
1383 * Set the element associated with the operator based on the static type of th
e left-hand-side to | |
1384 * the given element. | |
1385 * | |
1386 * @param element the static element to be associated with the operator | |
1387 */ | |
1388 void set staticElement(MethodElement element) { | |
1389 _staticElement = element; | |
1390 } | |
1391 | |
1392 void visitChildren(ASTVisitor visitor) { | |
1393 safelyVisitChild(_leftHandSide, visitor); | |
1394 safelyVisitChild(_rightHandSide, visitor); | |
1395 } | |
1396 | |
1397 /** | |
1398 * If the AST structure has been resolved, and the function being invoked is k
nown based on | |
1399 * propagated type information, then return the parameter element representing
the parameter to | |
1400 * which the value of the right operand will be bound. Otherwise, return `null
`. | |
1401 * | |
1402 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | |
1403 * | |
1404 * @return the parameter element representing the parameter to which the value
of the right | |
1405 * operand will be bound | |
1406 */ | |
1407 ParameterElement get propagatedParameterElementForRightHandSide { | |
1408 if (_propagatedElement == null) { | |
1409 return null; | |
1410 } | |
1411 List<ParameterElement> parameters = _propagatedElement.parameters; | |
1412 if (parameters.length < 1) { | |
1413 return null; | |
1414 } | |
1415 return parameters[0]; | |
1416 } | |
1417 | |
1418 /** | |
1419 * If the AST structure has been resolved, and the function being invoked is k
nown based on static | |
1420 * type information, then return the parameter element representing the parame
ter to which the | |
1421 * value of the right operand will be bound. Otherwise, return `null`. | |
1422 * | |
1423 * This method is only intended to be used by [Expression#getStaticParameterEl
ement]. | |
1424 * | |
1425 * @return the parameter element representing the parameter to which the value
of the right | |
1426 * operand will be bound | |
1427 */ | |
1428 ParameterElement get staticParameterElementForRightHandSide { | |
1429 if (_staticElement == null) { | |
1430 return null; | |
1431 } | |
1432 List<ParameterElement> parameters = _staticElement.parameters; | |
1433 if (parameters.length < 1) { | |
1434 return null; | |
1435 } | |
1436 return parameters[0]; | |
1437 } | |
1438 } | |
1439 | |
1440 /** | |
1441 * Instances of the class `BinaryExpression` represent a binary (infix) expressi
on. | 1417 * Instances of the class `BinaryExpression` represent a binary (infix) expressi
on. |
1442 * | 1418 * |
1443 * <pre> | 1419 * <pre> |
1444 * binaryExpression ::= | 1420 * binaryExpression ::= |
1445 * [Expression] [Token] [Expression] | 1421 * [Expression] [Token] [Expression] |
1446 * </pre> | 1422 * </pre> |
1447 * | |
1448 * @coverage dart.engine.ast | |
1449 */ | 1423 */ |
1450 class BinaryExpression extends Expression { | 1424 class BinaryExpression extends Expression { |
1451 /** | 1425 /** |
1452 * The expression used to compute the left operand. | 1426 * The expression used to compute the left operand. |
1453 */ | 1427 */ |
1454 Expression _leftOperand; | 1428 Expression _leftOperand; |
1455 | 1429 |
1456 /** | 1430 /** |
1457 * The binary operator being applied. | 1431 * The binary operator being applied. |
1458 */ | 1432 */ |
(...skipping 23 matching lines...) Expand all Loading... |
1482 * | 1456 * |
1483 * @param leftOperand the expression used to compute the left operand | 1457 * @param leftOperand the expression used to compute the left operand |
1484 * @param operator the binary operator being applied | 1458 * @param operator the binary operator being applied |
1485 * @param rightOperand the expression used to compute the right operand | 1459 * @param rightOperand the expression used to compute the right operand |
1486 */ | 1460 */ |
1487 BinaryExpression(Expression leftOperand, this.operator, Expression rightOperan
d) { | 1461 BinaryExpression(Expression leftOperand, this.operator, Expression rightOperan
d) { |
1488 this._leftOperand = becomeParentOf(leftOperand); | 1462 this._leftOperand = becomeParentOf(leftOperand); |
1489 this._rightOperand = becomeParentOf(rightOperand); | 1463 this._rightOperand = becomeParentOf(rightOperand); |
1490 } | 1464 } |
1491 | 1465 |
1492 accept(ASTVisitor visitor) => visitor.visitBinaryExpression(this); | 1466 accept(AstVisitor visitor) => visitor.visitBinaryExpression(this); |
1493 | 1467 |
1494 Token get beginToken => _leftOperand.beginToken; | 1468 Token get beginToken => _leftOperand.beginToken; |
1495 | 1469 |
1496 /** | 1470 /** |
1497 * Return the best element available for this operator. If resolution was able
to find a better | 1471 * Return the best element available for this operator. If resolution was able
to find a better |
1498 * element based on type propagation, that element will be returned. Otherwise
, the element found | 1472 * element based on type propagation, that element will be returned. Otherwise
, the element found |
1499 * using the result of static analysis will be returned. If resolution has not
been performed, | 1473 * using the result of static analysis will be returned. If resolution has not
been performed, |
1500 * then `null` will be returned. | 1474 * then `null` will be returned. |
1501 * | 1475 * |
1502 * @return the best element available for this operator | 1476 * @return the best element available for this operator |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 /** | 1552 /** |
1579 * Set the element associated with the operator based on the static type of th
e left operand to | 1553 * Set the element associated with the operator based on the static type of th
e left operand to |
1580 * the given element. | 1554 * the given element. |
1581 * | 1555 * |
1582 * @param element the static element to be associated with the operator | 1556 * @param element the static element to be associated with the operator |
1583 */ | 1557 */ |
1584 void set staticElement(MethodElement element) { | 1558 void set staticElement(MethodElement element) { |
1585 _staticElement = element; | 1559 _staticElement = element; |
1586 } | 1560 } |
1587 | 1561 |
1588 void visitChildren(ASTVisitor visitor) { | 1562 void visitChildren(AstVisitor visitor) { |
1589 safelyVisitChild(_leftOperand, visitor); | 1563 safelyVisitChild(_leftOperand, visitor); |
1590 safelyVisitChild(_rightOperand, visitor); | 1564 safelyVisitChild(_rightOperand, visitor); |
1591 } | 1565 } |
1592 | 1566 |
1593 /** | 1567 /** |
1594 * If the AST structure has been resolved, and the function being invoked is k
nown based on | 1568 * If the AST structure has been resolved, and the function being invoked is k
nown based on |
1595 * propagated type information, then return the parameter element representing
the parameter to | 1569 * propagated type information, then return the parameter element representing
the parameter to |
1596 * which the value of the right operand will be bound. Otherwise, return `null
`. | 1570 * which the value of the right operand will be bound. Otherwise, return `null
`. |
1597 * | 1571 * |
1598 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | 1572 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1633 } | 1607 } |
1634 } | 1608 } |
1635 | 1609 |
1636 /** | 1610 /** |
1637 * Instances of the class `Block` represent a sequence of statements. | 1611 * Instances of the class `Block` represent a sequence of statements. |
1638 * | 1612 * |
1639 * <pre> | 1613 * <pre> |
1640 * block ::= | 1614 * block ::= |
1641 * '{' statement* '}' | 1615 * '{' statement* '}' |
1642 * </pre> | 1616 * </pre> |
1643 * | |
1644 * @coverage dart.engine.ast | |
1645 */ | 1617 */ |
1646 class Block extends Statement { | 1618 class Block extends Statement { |
1647 /** | 1619 /** |
1648 * The left curly bracket. | 1620 * The left curly bracket. |
1649 */ | 1621 */ |
1650 Token leftBracket; | 1622 Token leftBracket; |
1651 | 1623 |
1652 /** | 1624 /** |
1653 * The statements contained in the block. | 1625 * The statements contained in the block. |
1654 */ | 1626 */ |
1655 NodeList<Statement> _statements; | 1627 NodeList<Statement> _statements; |
1656 | 1628 |
1657 /** | 1629 /** |
1658 * The right curly bracket. | 1630 * The right curly bracket. |
1659 */ | 1631 */ |
1660 Token rightBracket; | 1632 Token rightBracket; |
1661 | 1633 |
1662 /** | 1634 /** |
1663 * Initialize a newly created block of code. | 1635 * Initialize a newly created block of code. |
1664 * | 1636 * |
1665 * @param leftBracket the left curly bracket | 1637 * @param leftBracket the left curly bracket |
1666 * @param statements the statements contained in the block | 1638 * @param statements the statements contained in the block |
1667 * @param rightBracket the right curly bracket | 1639 * @param rightBracket the right curly bracket |
1668 */ | 1640 */ |
1669 Block(this.leftBracket, List<Statement> statements, this.rightBracket) { | 1641 Block(this.leftBracket, List<Statement> statements, this.rightBracket) { |
1670 this._statements = new NodeList<Statement>(this); | 1642 this._statements = new NodeList<Statement>(this); |
1671 this._statements.addAll(statements); | 1643 this._statements.addAll(statements); |
1672 } | 1644 } |
1673 | 1645 |
1674 accept(ASTVisitor visitor) => visitor.visitBlock(this); | 1646 accept(AstVisitor visitor) => visitor.visitBlock(this); |
1675 | 1647 |
1676 Token get beginToken => leftBracket; | 1648 Token get beginToken => leftBracket; |
1677 | 1649 |
1678 Token get endToken => rightBracket; | 1650 Token get endToken => rightBracket; |
1679 | 1651 |
1680 /** | 1652 /** |
1681 * Return the statements contained in the block. | 1653 * Return the statements contained in the block. |
1682 * | 1654 * |
1683 * @return the statements contained in the block | 1655 * @return the statements contained in the block |
1684 */ | 1656 */ |
1685 NodeList<Statement> get statements => _statements; | 1657 NodeList<Statement> get statements => _statements; |
1686 | 1658 |
1687 void visitChildren(ASTVisitor visitor) { | 1659 void visitChildren(AstVisitor visitor) { |
1688 _statements.accept(visitor); | 1660 _statements.accept(visitor); |
1689 } | 1661 } |
1690 } | 1662 } |
1691 | 1663 |
1692 /** | 1664 /** |
1693 * Instances of the class `BlockFunctionBody` represent a function body that con
sists of a | 1665 * Instances of the class `BlockFunctionBody` represent a function body that con
sists of a |
1694 * block of statements. | 1666 * block of statements. |
1695 * | 1667 * |
1696 * <pre> | 1668 * <pre> |
1697 * blockFunctionBody ::= | 1669 * blockFunctionBody ::= |
1698 * [Block] | 1670 * [Block] |
1699 * </pre> | 1671 * </pre> |
1700 * | |
1701 * @coverage dart.engine.ast | |
1702 */ | 1672 */ |
1703 class BlockFunctionBody extends FunctionBody { | 1673 class BlockFunctionBody extends FunctionBody { |
1704 /** | 1674 /** |
1705 * The block representing the body of the function. | 1675 * The block representing the body of the function. |
1706 */ | 1676 */ |
1707 Block _block; | 1677 Block _block; |
1708 | 1678 |
1709 /** | 1679 /** |
1710 * Initialize a newly created function body consisting of a block of statement
s. | 1680 * Initialize a newly created function body consisting of a block of statement
s. |
1711 * | 1681 * |
1712 * @param block the block representing the body of the function | 1682 * @param block the block representing the body of the function |
1713 */ | 1683 */ |
1714 BlockFunctionBody(Block block) { | 1684 BlockFunctionBody(Block block) { |
1715 this._block = becomeParentOf(block); | 1685 this._block = becomeParentOf(block); |
1716 } | 1686 } |
1717 | 1687 |
1718 accept(ASTVisitor visitor) => visitor.visitBlockFunctionBody(this); | 1688 accept(AstVisitor visitor) => visitor.visitBlockFunctionBody(this); |
1719 | 1689 |
1720 Token get beginToken => _block.beginToken; | 1690 Token get beginToken => _block.beginToken; |
1721 | 1691 |
1722 /** | 1692 /** |
1723 * Return the block representing the body of the function. | 1693 * Return the block representing the body of the function. |
1724 * | 1694 * |
1725 * @return the block representing the body of the function | 1695 * @return the block representing the body of the function |
1726 */ | 1696 */ |
1727 Block get block => _block; | 1697 Block get block => _block; |
1728 | 1698 |
1729 Token get endToken => _block.endToken; | 1699 Token get endToken => _block.endToken; |
1730 | 1700 |
1731 /** | 1701 /** |
1732 * Set the block representing the body of the function to the given block. | 1702 * Set the block representing the body of the function to the given block. |
1733 * | 1703 * |
1734 * @param block the block representing the body of the function | 1704 * @param block the block representing the body of the function |
1735 */ | 1705 */ |
1736 void set block(Block block) { | 1706 void set block(Block block) { |
1737 this._block = becomeParentOf(block); | 1707 this._block = becomeParentOf(block); |
1738 } | 1708 } |
1739 | 1709 |
1740 void visitChildren(ASTVisitor visitor) { | 1710 void visitChildren(AstVisitor visitor) { |
1741 safelyVisitChild(_block, visitor); | 1711 safelyVisitChild(_block, visitor); |
1742 } | 1712 } |
1743 } | 1713 } |
1744 | 1714 |
1745 /** | 1715 /** |
1746 * Instances of the class `BooleanLiteral` represent a boolean literal expressio
n. | 1716 * Instances of the class `BooleanLiteral` represent a boolean literal expressio
n. |
1747 * | 1717 * |
1748 * <pre> | 1718 * <pre> |
1749 * booleanLiteral ::= | 1719 * booleanLiteral ::= |
1750 * 'false' | 'true' | 1720 * 'false' | 'true' |
1751 * </pre> | 1721 * </pre> |
1752 * | |
1753 * @coverage dart.engine.ast | |
1754 */ | 1722 */ |
1755 class BooleanLiteral extends Literal { | 1723 class BooleanLiteral extends Literal { |
1756 /** | 1724 /** |
1757 * The token representing the literal. | 1725 * The token representing the literal. |
1758 */ | 1726 */ |
1759 Token literal; | 1727 Token literal; |
1760 | 1728 |
1761 /** | 1729 /** |
1762 * The value of the literal. | 1730 * The value of the literal. |
1763 */ | 1731 */ |
1764 bool value = false; | 1732 bool value = false; |
1765 | 1733 |
1766 /** | 1734 /** |
1767 * Initialize a newly created boolean literal. | 1735 * Initialize a newly created boolean literal. |
1768 * | 1736 * |
1769 * @param literal the token representing the literal | 1737 * @param literal the token representing the literal |
1770 * @param value the value of the literal | 1738 * @param value the value of the literal |
1771 */ | 1739 */ |
1772 BooleanLiteral(this.literal, this.value); | 1740 BooleanLiteral(this.literal, this.value); |
1773 | 1741 |
1774 accept(ASTVisitor visitor) => visitor.visitBooleanLiteral(this); | 1742 accept(AstVisitor visitor) => visitor.visitBooleanLiteral(this); |
1775 | 1743 |
1776 Token get beginToken => literal; | 1744 Token get beginToken => literal; |
1777 | 1745 |
1778 Token get endToken => literal; | 1746 Token get endToken => literal; |
1779 | 1747 |
1780 bool get isSynthetic => literal.isSynthetic; | 1748 bool get isSynthetic => literal.isSynthetic; |
1781 | 1749 |
1782 void visitChildren(ASTVisitor visitor) { | 1750 void visitChildren(AstVisitor visitor) { |
1783 } | 1751 } |
1784 } | 1752 } |
1785 | 1753 |
1786 /** | 1754 /** |
1787 * Instances of the class `BreakStatement` represent a break statement. | 1755 * Instances of the class `BreakStatement` represent a break statement. |
1788 * | 1756 * |
1789 * <pre> | 1757 * <pre> |
1790 * breakStatement ::= | 1758 * breakStatement ::= |
1791 * 'break' [SimpleIdentifier]? ';' | 1759 * 'break' [SimpleIdentifier]? ';' |
1792 * </pre> | 1760 * </pre> |
1793 * | |
1794 * @coverage dart.engine.ast | |
1795 */ | 1761 */ |
1796 class BreakStatement extends Statement { | 1762 class BreakStatement extends Statement { |
1797 /** | 1763 /** |
1798 * The token representing the 'break' keyword. | 1764 * The token representing the 'break' keyword. |
1799 */ | 1765 */ |
1800 Token keyword; | 1766 Token keyword; |
1801 | 1767 |
1802 /** | 1768 /** |
1803 * The label associated with the statement, or `null` if there is no label. | 1769 * The label associated with the statement, or `null` if there is no label. |
1804 */ | 1770 */ |
1805 SimpleIdentifier _label; | 1771 SimpleIdentifier _label; |
1806 | 1772 |
1807 /** | 1773 /** |
1808 * The semicolon terminating the statement. | 1774 * The semicolon terminating the statement. |
1809 */ | 1775 */ |
1810 Token semicolon; | 1776 Token semicolon; |
1811 | 1777 |
1812 /** | 1778 /** |
1813 * Initialize a newly created break statement. | 1779 * Initialize a newly created break statement. |
1814 * | 1780 * |
1815 * @param keyword the token representing the 'break' keyword | 1781 * @param keyword the token representing the 'break' keyword |
1816 * @param label the label associated with the statement | 1782 * @param label the label associated with the statement |
1817 * @param semicolon the semicolon terminating the statement | 1783 * @param semicolon the semicolon terminating the statement |
1818 */ | 1784 */ |
1819 BreakStatement(this.keyword, SimpleIdentifier label, this.semicolon) { | 1785 BreakStatement(this.keyword, SimpleIdentifier label, this.semicolon) { |
1820 this._label = becomeParentOf(label); | 1786 this._label = becomeParentOf(label); |
1821 } | 1787 } |
1822 | 1788 |
1823 accept(ASTVisitor visitor) => visitor.visitBreakStatement(this); | 1789 accept(AstVisitor visitor) => visitor.visitBreakStatement(this); |
1824 | 1790 |
1825 Token get beginToken => keyword; | 1791 Token get beginToken => keyword; |
1826 | 1792 |
1827 Token get endToken => semicolon; | 1793 Token get endToken => semicolon; |
1828 | 1794 |
1829 /** | 1795 /** |
1830 * Return the label associated with the statement, or `null` if there is no la
bel. | 1796 * Return the label associated with the statement, or `null` if there is no la
bel. |
1831 * | 1797 * |
1832 * @return the label associated with the statement | 1798 * @return the label associated with the statement |
1833 */ | 1799 */ |
1834 SimpleIdentifier get label => _label; | 1800 SimpleIdentifier get label => _label; |
1835 | 1801 |
1836 /** | 1802 /** |
1837 * Set the label associated with the statement to the given identifier. | 1803 * Set the label associated with the statement to the given identifier. |
1838 * | 1804 * |
1839 * @param identifier the label associated with the statement | 1805 * @param identifier the label associated with the statement |
1840 */ | 1806 */ |
1841 void set label(SimpleIdentifier identifier) { | 1807 void set label(SimpleIdentifier identifier) { |
1842 _label = becomeParentOf(identifier); | 1808 _label = becomeParentOf(identifier); |
1843 } | 1809 } |
1844 | 1810 |
1845 void visitChildren(ASTVisitor visitor) { | 1811 void visitChildren(AstVisitor visitor) { |
1846 safelyVisitChild(_label, visitor); | 1812 safelyVisitChild(_label, visitor); |
1847 } | 1813 } |
1848 } | 1814 } |
1849 | 1815 |
1850 /** | 1816 /** |
1851 * Instances of the class `CascadeExpression` represent a sequence of cascaded e
xpressions: | 1817 * Instances of the class `CascadeExpression` represent a sequence of cascaded e
xpressions: |
1852 * expressions that share a common target. There are three kinds of expressions
that can be used in | 1818 * expressions that share a common target. There are three kinds of expressions
that can be used in |
1853 * a cascade expression: [IndexExpression], [MethodInvocation] and | 1819 * a cascade expression: [IndexExpression], [MethodInvocation] and |
1854 * [PropertyAccess]. | 1820 * [PropertyAccess]. |
1855 * | 1821 * |
1856 * <pre> | 1822 * <pre> |
1857 * cascadeExpression ::= | 1823 * cascadeExpression ::= |
1858 * [Expression] cascadeSection* | 1824 * [Expression] cascadeSection* |
1859 * | 1825 * |
1860 * cascadeSection ::= | 1826 * cascadeSection ::= |
1861 * '..' (cascadeSelector arguments*) (assignableSelector arguments*)* (assi
gnmentOperator expressionWithoutCascade)? | 1827 * '..' (cascadeSelector arguments*) (assignableSelector arguments*)* (assi
gnmentOperator expressionWithoutCascade)? |
1862 * | 1828 * |
1863 * cascadeSelector ::= | 1829 * cascadeSelector ::= |
1864 * '[ ' expression '] ' | 1830 * '[ ' expression '] ' |
1865 * | identifier | 1831 * | identifier |
1866 * </pre> | 1832 * </pre> |
1867 * | |
1868 * @coverage dart.engine.ast | |
1869 */ | 1833 */ |
1870 class CascadeExpression extends Expression { | 1834 class CascadeExpression extends Expression { |
1871 /** | 1835 /** |
1872 * The target of the cascade sections. | 1836 * The target of the cascade sections. |
1873 */ | 1837 */ |
1874 Expression _target; | 1838 Expression _target; |
1875 | 1839 |
1876 /** | 1840 /** |
1877 * The cascade sections sharing the common target. | 1841 * The cascade sections sharing the common target. |
1878 */ | 1842 */ |
1879 NodeList<Expression> _cascadeSections; | 1843 NodeList<Expression> _cascadeSections; |
1880 | 1844 |
1881 /** | 1845 /** |
1882 * Initialize a newly created cascade expression. | 1846 * Initialize a newly created cascade expression. |
1883 * | 1847 * |
1884 * @param target the target of the cascade sections | 1848 * @param target the target of the cascade sections |
1885 * @param cascadeSections the cascade sections sharing the common target | 1849 * @param cascadeSections the cascade sections sharing the common target |
1886 */ | 1850 */ |
1887 CascadeExpression(Expression target, List<Expression> cascadeSections) { | 1851 CascadeExpression(Expression target, List<Expression> cascadeSections) { |
1888 this._cascadeSections = new NodeList<Expression>(this); | 1852 this._cascadeSections = new NodeList<Expression>(this); |
1889 this._target = becomeParentOf(target); | 1853 this._target = becomeParentOf(target); |
1890 this._cascadeSections.addAll(cascadeSections); | 1854 this._cascadeSections.addAll(cascadeSections); |
1891 } | 1855 } |
1892 | 1856 |
1893 accept(ASTVisitor visitor) => visitor.visitCascadeExpression(this); | 1857 accept(AstVisitor visitor) => visitor.visitCascadeExpression(this); |
1894 | 1858 |
1895 Token get beginToken => _target.beginToken; | 1859 Token get beginToken => _target.beginToken; |
1896 | 1860 |
1897 /** | 1861 /** |
1898 * Return the cascade sections sharing the common target. | 1862 * Return the cascade sections sharing the common target. |
1899 * | 1863 * |
1900 * @return the cascade sections sharing the common target | 1864 * @return the cascade sections sharing the common target |
1901 */ | 1865 */ |
1902 NodeList<Expression> get cascadeSections => _cascadeSections; | 1866 NodeList<Expression> get cascadeSections => _cascadeSections; |
1903 | 1867 |
(...skipping 10 matching lines...) Expand all Loading... |
1914 | 1878 |
1915 /** | 1879 /** |
1916 * Set the target of the cascade sections to the given expression. | 1880 * Set the target of the cascade sections to the given expression. |
1917 * | 1881 * |
1918 * @param target the target of the cascade sections | 1882 * @param target the target of the cascade sections |
1919 */ | 1883 */ |
1920 void set target(Expression target) { | 1884 void set target(Expression target) { |
1921 this._target = becomeParentOf(target); | 1885 this._target = becomeParentOf(target); |
1922 } | 1886 } |
1923 | 1887 |
1924 void visitChildren(ASTVisitor visitor) { | 1888 void visitChildren(AstVisitor visitor) { |
1925 safelyVisitChild(_target, visitor); | 1889 safelyVisitChild(_target, visitor); |
1926 _cascadeSections.accept(visitor); | 1890 _cascadeSections.accept(visitor); |
1927 } | 1891 } |
1928 } | 1892 } |
1929 | 1893 |
1930 /** | 1894 /** |
1931 * Instances of the class `CatchClause` represent a catch clause within a try st
atement. | 1895 * Instances of the class `CatchClause` represent a catch clause within a try st
atement. |
1932 * | 1896 * |
1933 * <pre> | 1897 * <pre> |
1934 * onPart ::= | 1898 * onPart ::= |
1935 * catchPart [Block] | 1899 * catchPart [Block] |
1936 * | 'on' type catchPart? [Block] | 1900 * | 'on' type catchPart? [Block] |
1937 * | 1901 * |
1938 * catchPart ::= | 1902 * catchPart ::= |
1939 * 'catch' '(' [SimpleIdentifier] (',' [SimpleIdentifier])? ')' | 1903 * 'catch' '(' [SimpleIdentifier] (',' [SimpleIdentifier])? ')' |
1940 * </pre> | 1904 * </pre> |
1941 * | |
1942 * @coverage dart.engine.ast | |
1943 */ | 1905 */ |
1944 class CatchClause extends ASTNode { | 1906 class CatchClause extends AstNode { |
1945 /** | 1907 /** |
1946 * The token representing the 'on' keyword, or `null` if there is no 'on' keyw
ord. | 1908 * The token representing the 'on' keyword, or `null` if there is no 'on' keyw
ord. |
1947 */ | 1909 */ |
1948 Token onKeyword; | 1910 Token onKeyword; |
1949 | 1911 |
1950 /** | 1912 /** |
1951 * The type of exceptions caught by this catch clause, or `null` if this catch
clause | 1913 * The type of exceptions caught by this catch clause, or `null` if this catch
clause |
1952 * catches every type of exception. | 1914 * catches every type of exception. |
1953 */ | 1915 */ |
1954 TypeName exceptionType; | 1916 TypeName exceptionType; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2005 */ | 1967 */ |
2006 CatchClause(this.onKeyword, TypeName exceptionType, this.catchKeyword, Token l
eftParenthesis, SimpleIdentifier exceptionParameter, this.comma, SimpleIdentifie
r stackTraceParameter, Token rightParenthesis, Block body) { | 1968 CatchClause(this.onKeyword, TypeName exceptionType, this.catchKeyword, Token l
eftParenthesis, SimpleIdentifier exceptionParameter, this.comma, SimpleIdentifie
r stackTraceParameter, Token rightParenthesis, Block body) { |
2007 this.exceptionType = becomeParentOf(exceptionType); | 1969 this.exceptionType = becomeParentOf(exceptionType); |
2008 this._leftParenthesis = leftParenthesis; | 1970 this._leftParenthesis = leftParenthesis; |
2009 this._exceptionParameter = becomeParentOf(exceptionParameter); | 1971 this._exceptionParameter = becomeParentOf(exceptionParameter); |
2010 this._stackTraceParameter = becomeParentOf(stackTraceParameter); | 1972 this._stackTraceParameter = becomeParentOf(stackTraceParameter); |
2011 this._rightParenthesis = rightParenthesis; | 1973 this._rightParenthesis = rightParenthesis; |
2012 this._body = becomeParentOf(body); | 1974 this._body = becomeParentOf(body); |
2013 } | 1975 } |
2014 | 1976 |
2015 accept(ASTVisitor visitor) => visitor.visitCatchClause(this); | 1977 accept(AstVisitor visitor) => visitor.visitCatchClause(this); |
2016 | 1978 |
2017 Token get beginToken { | 1979 Token get beginToken { |
2018 if (onKeyword != null) { | 1980 if (onKeyword != null) { |
2019 return onKeyword; | 1981 return onKeyword; |
2020 } | 1982 } |
2021 return catchKeyword; | 1983 return catchKeyword; |
2022 } | 1984 } |
2023 | 1985 |
2024 /** | 1986 /** |
2025 * Return the body of the catch block. | 1987 * Return the body of the catch block. |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 * Set the parameter whose value will be the stack trace associated with the e
xception to the | 2061 * Set the parameter whose value will be the stack trace associated with the e
xception to the |
2100 * given parameter. | 2062 * given parameter. |
2101 * | 2063 * |
2102 * @param parameter the parameter whose value will be the stack trace associat
ed with the | 2064 * @param parameter the parameter whose value will be the stack trace associat
ed with the |
2103 * exception | 2065 * exception |
2104 */ | 2066 */ |
2105 void set stackTraceParameter(SimpleIdentifier parameter) { | 2067 void set stackTraceParameter(SimpleIdentifier parameter) { |
2106 _stackTraceParameter = becomeParentOf(parameter); | 2068 _stackTraceParameter = becomeParentOf(parameter); |
2107 } | 2069 } |
2108 | 2070 |
2109 void visitChildren(ASTVisitor visitor) { | 2071 void visitChildren(AstVisitor visitor) { |
2110 safelyVisitChild(exceptionType, visitor); | 2072 safelyVisitChild(exceptionType, visitor); |
2111 safelyVisitChild(_exceptionParameter, visitor); | 2073 safelyVisitChild(_exceptionParameter, visitor); |
2112 safelyVisitChild(_stackTraceParameter, visitor); | 2074 safelyVisitChild(_stackTraceParameter, visitor); |
2113 safelyVisitChild(_body, visitor); | 2075 safelyVisitChild(_body, visitor); |
2114 } | 2076 } |
2115 } | 2077 } |
2116 | 2078 |
2117 /** | 2079 /** |
2118 * Instances of the class `ClassDeclaration` represent the declaration of a clas
s. | 2080 * Instances of the class `ClassDeclaration` represent the declaration of a clas
s. |
2119 * | 2081 * |
2120 * <pre> | 2082 * <pre> |
2121 * classDeclaration ::= | 2083 * classDeclaration ::= |
2122 * 'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]? | 2084 * 'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]? |
2123 * ([ExtendsClause] [WithClause]?)? | 2085 * ([ExtendsClause] [WithClause]?)? |
2124 * [ImplementsClause]? | 2086 * [ImplementsClause]? |
2125 * '{' [ClassMember]* '}' | 2087 * '{' [ClassMember]* '}' |
2126 * </pre> | 2088 * </pre> |
2127 * | |
2128 * @coverage dart.engine.ast | |
2129 */ | 2089 */ |
2130 class ClassDeclaration extends CompilationUnitMember { | 2090 class ClassDeclaration extends CompilationUnitMember { |
2131 /** | 2091 /** |
2132 * The 'abstract' keyword, or `null` if the keyword was absent. | 2092 * The 'abstract' keyword, or `null` if the keyword was absent. |
2133 */ | 2093 */ |
2134 Token abstractKeyword; | 2094 Token abstractKeyword; |
2135 | 2095 |
2136 /** | 2096 /** |
2137 * The token representing the 'class' keyword. | 2097 * The token representing the 'class' keyword. |
2138 */ | 2098 */ |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2204 ClassDeclaration(Comment comment, List<Annotation> metadata, this.abstractKeyw
ord, this.classKeyword, SimpleIdentifier name, TypeParameterList typeParameters,
ExtendsClause extendsClause, WithClause withClause, ImplementsClause implements
Clause, this.leftBracket, List<ClassMember> members, this.rightBracket) : super(
comment, metadata) { | 2164 ClassDeclaration(Comment comment, List<Annotation> metadata, this.abstractKeyw
ord, this.classKeyword, SimpleIdentifier name, TypeParameterList typeParameters,
ExtendsClause extendsClause, WithClause withClause, ImplementsClause implements
Clause, this.leftBracket, List<ClassMember> members, this.rightBracket) : super(
comment, metadata) { |
2205 this._members = new NodeList<ClassMember>(this); | 2165 this._members = new NodeList<ClassMember>(this); |
2206 this._name = becomeParentOf(name); | 2166 this._name = becomeParentOf(name); |
2207 this.typeParameters = becomeParentOf(typeParameters); | 2167 this.typeParameters = becomeParentOf(typeParameters); |
2208 this._extendsClause = becomeParentOf(extendsClause); | 2168 this._extendsClause = becomeParentOf(extendsClause); |
2209 this._withClause = becomeParentOf(withClause); | 2169 this._withClause = becomeParentOf(withClause); |
2210 this._implementsClause = becomeParentOf(implementsClause); | 2170 this._implementsClause = becomeParentOf(implementsClause); |
2211 this._members.addAll(members); | 2171 this._members.addAll(members); |
2212 } | 2172 } |
2213 | 2173 |
2214 accept(ASTVisitor visitor) => visitor.visitClassDeclaration(this); | 2174 accept(AstVisitor visitor) => visitor.visitClassDeclaration(this); |
2215 | 2175 |
2216 /** | 2176 /** |
2217 * Return the constructor declared in the class with the given name. | 2177 * Return the constructor declared in the class with the given name. |
2218 * | 2178 * |
2219 * @param name the name of the constructor to find, `null` for default | 2179 * @param name the name of the constructor to find, `null` for default |
2220 * @return the found constructor or `null` if not found | 2180 * @return the found constructor or `null` if not found |
2221 */ | 2181 */ |
2222 ConstructorDeclaration getConstructor(String name) { | 2182 ConstructorDeclaration getConstructor(String name) { |
2223 for (ClassMember classMember in _members) { | 2183 for (ClassMember classMember in _members) { |
2224 if (classMember is ConstructorDeclaration) { | 2184 if (classMember is ConstructorDeclaration) { |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2346 | 2306 |
2347 /** | 2307 /** |
2348 * Set the with clause for the class to the given clause. | 2308 * Set the with clause for the class to the given clause. |
2349 * | 2309 * |
2350 * @param withClause the with clause for the class | 2310 * @param withClause the with clause for the class |
2351 */ | 2311 */ |
2352 void set withClause(WithClause withClause) { | 2312 void set withClause(WithClause withClause) { |
2353 this._withClause = becomeParentOf(withClause); | 2313 this._withClause = becomeParentOf(withClause); |
2354 } | 2314 } |
2355 | 2315 |
2356 void visitChildren(ASTVisitor visitor) { | 2316 void visitChildren(AstVisitor visitor) { |
2357 super.visitChildren(visitor); | 2317 super.visitChildren(visitor); |
2358 safelyVisitChild(_name, visitor); | 2318 safelyVisitChild(_name, visitor); |
2359 safelyVisitChild(typeParameters, visitor); | 2319 safelyVisitChild(typeParameters, visitor); |
2360 safelyVisitChild(_extendsClause, visitor); | 2320 safelyVisitChild(_extendsClause, visitor); |
2361 safelyVisitChild(_withClause, visitor); | 2321 safelyVisitChild(_withClause, visitor); |
2362 safelyVisitChild(_implementsClause, visitor); | 2322 safelyVisitChild(_implementsClause, visitor); |
2363 safelyVisitChild(nativeClause, visitor); | 2323 safelyVisitChild(nativeClause, visitor); |
2364 members.accept(visitor); | 2324 members.accept(visitor); |
2365 } | 2325 } |
2366 | 2326 |
2367 Token get firstTokenAfterCommentAndMetadata { | 2327 Token get firstTokenAfterCommentAndMetadata { |
2368 if (abstractKeyword != null) { | 2328 if (abstractKeyword != null) { |
2369 return abstractKeyword; | 2329 return abstractKeyword; |
2370 } | 2330 } |
2371 return classKeyword; | 2331 return classKeyword; |
2372 } | 2332 } |
2373 } | 2333 } |
2374 | 2334 |
2375 /** | 2335 /** |
2376 * The abstract class `ClassMember` defines the behavior common to nodes that de
clare a name | 2336 * The abstract class `ClassMember` defines the behavior common to nodes that de
clare a name |
2377 * within the scope of a class. | 2337 * within the scope of a class. |
2378 * | |
2379 * @coverage dart.engine.ast | |
2380 */ | 2338 */ |
2381 abstract class ClassMember extends Declaration { | 2339 abstract class ClassMember extends Declaration { |
2382 /** | 2340 /** |
2383 * Initialize a newly created member of a class. | 2341 * Initialize a newly created member of a class. |
2384 * | 2342 * |
2385 * @param comment the documentation comment associated with this member | 2343 * @param comment the documentation comment associated with this member |
2386 * @param metadata the annotations associated with this member | 2344 * @param metadata the annotations associated with this member |
2387 */ | 2345 */ |
2388 ClassMember(Comment comment, List<Annotation> metadata) : super(comment, metad
ata); | 2346 ClassMember(Comment comment, List<Annotation> metadata) : super(comment, metad
ata); |
2389 } | 2347 } |
2390 | 2348 |
2391 /** | 2349 /** |
2392 * Instances of the class `ClassTypeAlias` represent a class type alias. | 2350 * Instances of the class `ClassTypeAlias` represent a class type alias. |
2393 * | 2351 * |
2394 * <pre> | 2352 * <pre> |
2395 * classTypeAlias ::= | 2353 * classTypeAlias ::= |
2396 * [SimpleIdentifier] [TypeParameterList]? '=' 'abstract'? mixinApplication | 2354 * [SimpleIdentifier] [TypeParameterList]? '=' 'abstract'? mixinApplication |
2397 * | 2355 * |
2398 * mixinApplication ::= | 2356 * mixinApplication ::= |
2399 * [TypeName] [WithClause] [ImplementsClause]? ';' | 2357 * [TypeName] [WithClause] [ImplementsClause]? ';' |
2400 * </pre> | 2358 * </pre> |
2401 * | |
2402 * @coverage dart.engine.ast | |
2403 */ | 2359 */ |
2404 class ClassTypeAlias extends TypeAlias { | 2360 class ClassTypeAlias extends TypeAlias { |
2405 /** | 2361 /** |
2406 * The name of the class being declared. | 2362 * The name of the class being declared. |
2407 */ | 2363 */ |
2408 SimpleIdentifier _name; | 2364 SimpleIdentifier _name; |
2409 | 2365 |
2410 /** | 2366 /** |
2411 * The type parameters for the class, or `null` if the class does not have any
type | 2367 * The type parameters for the class, or `null` if the class does not have any
type |
2412 * parameters. | 2368 * parameters. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2455 * @param semicolon the semicolon terminating the declaration | 2411 * @param semicolon the semicolon terminating the declaration |
2456 */ | 2412 */ |
2457 ClassTypeAlias(Comment comment, List<Annotation> metadata, Token keyword, Simp
leIdentifier name, TypeParameterList typeParameters, this.equals, this.abstractK
eyword, TypeName superclass, WithClause withClause, ImplementsClause implementsC
lause, Token semicolon) : super(comment, metadata, keyword, semicolon) { | 2413 ClassTypeAlias(Comment comment, List<Annotation> metadata, Token keyword, Simp
leIdentifier name, TypeParameterList typeParameters, this.equals, this.abstractK
eyword, TypeName superclass, WithClause withClause, ImplementsClause implementsC
lause, Token semicolon) : super(comment, metadata, keyword, semicolon) { |
2458 this._name = becomeParentOf(name); | 2414 this._name = becomeParentOf(name); |
2459 this._typeParameters = becomeParentOf(typeParameters); | 2415 this._typeParameters = becomeParentOf(typeParameters); |
2460 this._superclass = becomeParentOf(superclass); | 2416 this._superclass = becomeParentOf(superclass); |
2461 this._withClause = becomeParentOf(withClause); | 2417 this._withClause = becomeParentOf(withClause); |
2462 this._implementsClause = becomeParentOf(implementsClause); | 2418 this._implementsClause = becomeParentOf(implementsClause); |
2463 } | 2419 } |
2464 | 2420 |
2465 accept(ASTVisitor visitor) => visitor.visitClassTypeAlias(this); | 2421 accept(AstVisitor visitor) => visitor.visitClassTypeAlias(this); |
2466 | 2422 |
2467 ClassElement get element => _name != null ? (_name.staticElement as ClassEleme
nt) : null; | 2423 ClassElement get element => _name != null ? (_name.staticElement as ClassEleme
nt) : null; |
2468 | 2424 |
2469 /** | 2425 /** |
2470 * Return the implements clause for this class, or `null` if there is no imple
ments clause. | 2426 * Return the implements clause for this class, or `null` if there is no imple
ments clause. |
2471 * | 2427 * |
2472 * @return the implements clause for this class | 2428 * @return the implements clause for this class |
2473 */ | 2429 */ |
2474 ImplementsClause get implementsClause => _implementsClause; | 2430 ImplementsClause get implementsClause => _implementsClause; |
2475 | 2431 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2540 | 2496 |
2541 /** | 2497 /** |
2542 * Set the with clause for this class to the given with clause. | 2498 * Set the with clause for this class to the given with clause. |
2543 * | 2499 * |
2544 * @param withClause the with clause for this class | 2500 * @param withClause the with clause for this class |
2545 */ | 2501 */ |
2546 void set withClause(WithClause withClause) { | 2502 void set withClause(WithClause withClause) { |
2547 this._withClause = becomeParentOf(withClause); | 2503 this._withClause = becomeParentOf(withClause); |
2548 } | 2504 } |
2549 | 2505 |
2550 void visitChildren(ASTVisitor visitor) { | 2506 void visitChildren(AstVisitor visitor) { |
2551 super.visitChildren(visitor); | 2507 super.visitChildren(visitor); |
2552 safelyVisitChild(_name, visitor); | 2508 safelyVisitChild(_name, visitor); |
2553 safelyVisitChild(_typeParameters, visitor); | 2509 safelyVisitChild(_typeParameters, visitor); |
2554 safelyVisitChild(_superclass, visitor); | 2510 safelyVisitChild(_superclass, visitor); |
2555 safelyVisitChild(_withClause, visitor); | 2511 safelyVisitChild(_withClause, visitor); |
2556 safelyVisitChild(_implementsClause, visitor); | 2512 safelyVisitChild(_implementsClause, visitor); |
2557 } | 2513 } |
2558 } | 2514 } |
2559 | 2515 |
2560 /** | 2516 /** |
2561 * Instances of the class `Combinator` represent the combinator associated with
an import | 2517 * Instances of the class `Combinator` represent the combinator associated with
an import |
2562 * directive. | 2518 * directive. |
2563 * | 2519 * |
2564 * <pre> | 2520 * <pre> |
2565 * combinator ::= | 2521 * combinator ::= |
2566 * [HideCombinator] | 2522 * [HideCombinator] |
2567 * | [ShowCombinator] | 2523 * | [ShowCombinator] |
2568 * </pre> | 2524 * </pre> |
2569 * | |
2570 * @coverage dart.engine.ast | |
2571 */ | 2525 */ |
2572 abstract class Combinator extends ASTNode { | 2526 abstract class Combinator extends AstNode { |
2573 /** | 2527 /** |
2574 * The keyword specifying what kind of processing is to be done on the importe
d names. | 2528 * The keyword specifying what kind of processing is to be done on the importe
d names. |
2575 */ | 2529 */ |
2576 Token keyword; | 2530 Token keyword; |
2577 | 2531 |
2578 /** | 2532 /** |
2579 * Initialize a newly created import combinator. | 2533 * Initialize a newly created import combinator. |
2580 * | 2534 * |
2581 * @param keyword the keyword specifying what kind of processing is to be done
on the imported | 2535 * @param keyword the keyword specifying what kind of processing is to be done
on the imported |
2582 * names | 2536 * names |
(...skipping 15 matching lines...) Expand all Loading... |
2598 * endOfLineComment ::= | 2552 * endOfLineComment ::= |
2599 * '//' (CHARACTER - EOL)* EOL | 2553 * '//' (CHARACTER - EOL)* EOL |
2600 * | 2554 * |
2601 * blockComment ::= | 2555 * blockComment ::= |
2602 * '/ *' CHARACTER* '*/' | 2556 * '/ *' CHARACTER* '*/' |
2603 * | 2557 * |
2604 * documentationComment ::= | 2558 * documentationComment ::= |
2605 * '/ **' (CHARACTER | [CommentReference])* '*/' | 2559 * '/ **' (CHARACTER | [CommentReference])* '*/' |
2606 * | ('///' (CHARACTER - EOL)* EOL)+ | 2560 * | ('///' (CHARACTER - EOL)* EOL)+ |
2607 * </pre> | 2561 * </pre> |
2608 * | |
2609 * @coverage dart.engine.ast | |
2610 */ | 2562 */ |
2611 class Comment extends ASTNode { | 2563 class Comment extends AstNode { |
2612 /** | 2564 /** |
2613 * Create a block comment. | 2565 * Create a block comment. |
2614 * | 2566 * |
2615 * @param tokens the tokens representing the comment | 2567 * @param tokens the tokens representing the comment |
2616 * @return the block comment that was created | 2568 * @return the block comment that was created |
2617 */ | 2569 */ |
2618 static Comment createBlockComment(List<Token> tokens) => new Comment(tokens, C
ommentType.BLOCK, null); | 2570 static Comment createBlockComment(List<Token> tokens) => new Comment(tokens, C
ommentType.BLOCK, null); |
2619 | 2571 |
2620 /** | 2572 /** |
2621 * Create a documentation comment. | 2573 * Create a documentation comment. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2664 * @param tokens the tokens representing the comment | 2616 * @param tokens the tokens representing the comment |
2665 * @param type the type of the comment | 2617 * @param type the type of the comment |
2666 * @param references the references embedded within the documentation comment | 2618 * @param references the references embedded within the documentation comment |
2667 */ | 2619 */ |
2668 Comment(this.tokens, CommentType type, List<CommentReference> references) { | 2620 Comment(this.tokens, CommentType type, List<CommentReference> references) { |
2669 this._references = new NodeList<CommentReference>(this); | 2621 this._references = new NodeList<CommentReference>(this); |
2670 this._type = type; | 2622 this._type = type; |
2671 this._references.addAll(references); | 2623 this._references.addAll(references); |
2672 } | 2624 } |
2673 | 2625 |
2674 accept(ASTVisitor visitor) => visitor.visitComment(this); | 2626 accept(AstVisitor visitor) => visitor.visitComment(this); |
2675 | 2627 |
2676 Token get beginToken => tokens[0]; | 2628 Token get beginToken => tokens[0]; |
2677 | 2629 |
2678 Token get endToken => tokens[tokens.length - 1]; | 2630 Token get endToken => tokens[tokens.length - 1]; |
2679 | 2631 |
2680 /** | 2632 /** |
2681 * Return the references embedded within the documentation comment. | 2633 * Return the references embedded within the documentation comment. |
2682 * | 2634 * |
2683 * @return the references embedded within the documentation comment | 2635 * @return the references embedded within the documentation comment |
2684 */ | 2636 */ |
(...skipping 13 matching lines...) Expand all Loading... |
2698 */ | 2650 */ |
2699 bool get isDocumentation => identical(_type, CommentType.DOCUMENTATION); | 2651 bool get isDocumentation => identical(_type, CommentType.DOCUMENTATION); |
2700 | 2652 |
2701 /** | 2653 /** |
2702 * Return `true` if this is an end-of-line comment. | 2654 * Return `true` if this is an end-of-line comment. |
2703 * | 2655 * |
2704 * @return `true` if this is an end-of-line comment | 2656 * @return `true` if this is an end-of-line comment |
2705 */ | 2657 */ |
2706 bool get isEndOfLine => identical(_type, CommentType.END_OF_LINE); | 2658 bool get isEndOfLine => identical(_type, CommentType.END_OF_LINE); |
2707 | 2659 |
2708 void visitChildren(ASTVisitor visitor) { | 2660 void visitChildren(AstVisitor visitor) { |
2709 _references.accept(visitor); | 2661 _references.accept(visitor); |
2710 } | 2662 } |
2711 } | 2663 } |
2712 | 2664 |
2713 /** | 2665 /** |
2714 * The enumeration `CommentType` encodes all the different types of comments tha
t are | 2666 * The enumeration `CommentType` encodes all the different types of comments tha
t are |
2715 * recognized by the parser. | 2667 * recognized by the parser. |
2716 */ | 2668 */ |
2717 class CommentType extends Enum<CommentType> { | 2669 class CommentType extends Enum<CommentType> { |
2718 /** | 2670 /** |
(...skipping 17 matching lines...) Expand all Loading... |
2736 } | 2688 } |
2737 | 2689 |
2738 /** | 2690 /** |
2739 * Instances of the class `CommentReference` represent a reference to a Dart ele
ment that is | 2691 * Instances of the class `CommentReference` represent a reference to a Dart ele
ment that is |
2740 * found within a documentation comment. | 2692 * found within a documentation comment. |
2741 * | 2693 * |
2742 * <pre> | 2694 * <pre> |
2743 * commentReference ::= | 2695 * commentReference ::= |
2744 * '[' 'new'? [Identifier] ']' | 2696 * '[' 'new'? [Identifier] ']' |
2745 * </pre> | 2697 * </pre> |
2746 * | |
2747 * @coverage dart.engine.ast | |
2748 */ | 2698 */ |
2749 class CommentReference extends ASTNode { | 2699 class CommentReference extends AstNode { |
2750 /** | 2700 /** |
2751 * The token representing the 'new' keyword, or `null` if there was no 'new' k
eyword. | 2701 * The token representing the 'new' keyword, or `null` if there was no 'new' k
eyword. |
2752 */ | 2702 */ |
2753 Token newKeyword; | 2703 Token newKeyword; |
2754 | 2704 |
2755 /** | 2705 /** |
2756 * The identifier being referenced. | 2706 * The identifier being referenced. |
2757 */ | 2707 */ |
2758 Identifier _identifier; | 2708 Identifier _identifier; |
2759 | 2709 |
2760 /** | 2710 /** |
2761 * Initialize a newly created reference to a Dart element. | 2711 * Initialize a newly created reference to a Dart element. |
2762 * | 2712 * |
2763 * @param newKeyword the token representing the 'new' keyword | 2713 * @param newKeyword the token representing the 'new' keyword |
2764 * @param identifier the identifier being referenced | 2714 * @param identifier the identifier being referenced |
2765 */ | 2715 */ |
2766 CommentReference(this.newKeyword, Identifier identifier) { | 2716 CommentReference(this.newKeyword, Identifier identifier) { |
2767 this._identifier = becomeParentOf(identifier); | 2717 this._identifier = becomeParentOf(identifier); |
2768 } | 2718 } |
2769 | 2719 |
2770 accept(ASTVisitor visitor) => visitor.visitCommentReference(this); | 2720 accept(AstVisitor visitor) => visitor.visitCommentReference(this); |
2771 | 2721 |
2772 Token get beginToken => _identifier.beginToken; | 2722 Token get beginToken => _identifier.beginToken; |
2773 | 2723 |
2774 Token get endToken => _identifier.endToken; | 2724 Token get endToken => _identifier.endToken; |
2775 | 2725 |
2776 /** | 2726 /** |
2777 * Return the identifier being referenced. | 2727 * Return the identifier being referenced. |
2778 * | 2728 * |
2779 * @return the identifier being referenced | 2729 * @return the identifier being referenced |
2780 */ | 2730 */ |
2781 Identifier get identifier => _identifier; | 2731 Identifier get identifier => _identifier; |
2782 | 2732 |
2783 /** | 2733 /** |
2784 * Set the identifier being referenced to the given identifier. | 2734 * Set the identifier being referenced to the given identifier. |
2785 * | 2735 * |
2786 * @param identifier the identifier being referenced | 2736 * @param identifier the identifier being referenced |
2787 */ | 2737 */ |
2788 void set identifier(Identifier identifier) { | 2738 void set identifier(Identifier identifier) { |
2789 identifier = becomeParentOf(identifier); | 2739 identifier = becomeParentOf(identifier); |
2790 } | 2740 } |
2791 | 2741 |
2792 void visitChildren(ASTVisitor visitor) { | 2742 void visitChildren(AstVisitor visitor) { |
2793 safelyVisitChild(_identifier, visitor); | 2743 safelyVisitChild(_identifier, visitor); |
2794 } | 2744 } |
2795 } | 2745 } |
2796 | 2746 |
2797 /** | 2747 /** |
2798 * Instances of the class `CompilationUnit` represent a compilation unit. | 2748 * Instances of the class `CompilationUnit` represent a compilation unit. |
2799 * | 2749 * |
2800 * While the grammar restricts the order of the directives and declarations with
in a compilation | 2750 * While the grammar restricts the order of the directives and declarations with
in a compilation |
2801 * unit, this class does not enforce those restrictions. In particular, the chil
dren of a | 2751 * unit, this class does not enforce those restrictions. In particular, the chil
dren of a |
2802 * compilation unit will be visited in lexical order even if lexical order does
not conform to the | 2752 * compilation unit will be visited in lexical order even if lexical order does
not conform to the |
2803 * restrictions of the grammar. | 2753 * restrictions of the grammar. |
2804 * | 2754 * |
2805 * <pre> | 2755 * <pre> |
2806 * compilationUnit ::= | 2756 * compilationUnit ::= |
2807 * directives declarations | 2757 * directives declarations |
2808 * | 2758 * |
2809 * directives ::= | 2759 * directives ::= |
2810 * [ScriptTag]? [LibraryDirective]? namespaceDirective* [PartDirective]* | 2760 * [ScriptTag]? [LibraryDirective]? namespaceDirective* [PartDirective]* |
2811 * | [PartOfDirective] | 2761 * | [PartOfDirective] |
2812 * | 2762 * |
2813 * namespaceDirective ::= | 2763 * namespaceDirective ::= |
2814 * [ImportDirective] | 2764 * [ImportDirective] |
2815 * | [ExportDirective] | 2765 * | [ExportDirective] |
2816 * | 2766 * |
2817 * declarations ::= | 2767 * declarations ::= |
2818 * [CompilationUnitMember]* | 2768 * [CompilationUnitMember]* |
2819 * </pre> | 2769 * </pre> |
2820 * | |
2821 * @coverage dart.engine.ast | |
2822 */ | 2770 */ |
2823 class CompilationUnit extends ASTNode { | 2771 class CompilationUnit extends AstNode { |
2824 /** | 2772 /** |
2825 * The first token in the token stream that was parsed to form this compilatio
n unit. | 2773 * The first token in the token stream that was parsed to form this compilatio
n unit. |
2826 */ | 2774 */ |
2827 final Token beginToken; | 2775 final Token beginToken; |
2828 | 2776 |
2829 /** | 2777 /** |
2830 * The script tag at the beginning of the compilation unit, or `null` if there
is no script | 2778 * The script tag at the beginning of the compilation unit, or `null` if there
is no script |
2831 * tag in this compilation unit. | 2779 * tag in this compilation unit. |
2832 */ | 2780 */ |
2833 ScriptTag _scriptTag; | 2781 ScriptTag _scriptTag; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2869 * @param endToken the last token in the token stream | 2817 * @param endToken the last token in the token stream |
2870 */ | 2818 */ |
2871 CompilationUnit(this.beginToken, ScriptTag scriptTag, List<Directive> directiv
es, List<CompilationUnitMember> declarations, this.endToken) { | 2819 CompilationUnit(this.beginToken, ScriptTag scriptTag, List<Directive> directiv
es, List<CompilationUnitMember> declarations, this.endToken) { |
2872 this._directives = new NodeList<Directive>(this); | 2820 this._directives = new NodeList<Directive>(this); |
2873 this._declarations = new NodeList<CompilationUnitMember>(this); | 2821 this._declarations = new NodeList<CompilationUnitMember>(this); |
2874 this._scriptTag = becomeParentOf(scriptTag); | 2822 this._scriptTag = becomeParentOf(scriptTag); |
2875 this._directives.addAll(directives); | 2823 this._directives.addAll(directives); |
2876 this._declarations.addAll(declarations); | 2824 this._declarations.addAll(declarations); |
2877 } | 2825 } |
2878 | 2826 |
2879 accept(ASTVisitor visitor) => visitor.visitCompilationUnit(this); | 2827 accept(AstVisitor visitor) => visitor.visitCompilationUnit(this); |
2880 | 2828 |
2881 /** | 2829 /** |
2882 * Return the declarations contained in this compilation unit. | 2830 * Return the declarations contained in this compilation unit. |
2883 * | 2831 * |
2884 * @return the declarations contained in this compilation unit | 2832 * @return the declarations contained in this compilation unit |
2885 */ | 2833 */ |
2886 NodeList<CompilationUnitMember> get declarations => _declarations; | 2834 NodeList<CompilationUnitMember> get declarations => _declarations; |
2887 | 2835 |
2888 /** | 2836 /** |
2889 * Return the directives contained in this compilation unit. | 2837 * Return the directives contained in this compilation unit. |
(...skipping 22 matching lines...) Expand all Loading... |
2912 | 2860 |
2913 /** | 2861 /** |
2914 * Set the script tag at the beginning of the compilation unit to the given sc
ript tag. | 2862 * Set the script tag at the beginning of the compilation unit to the given sc
ript tag. |
2915 * | 2863 * |
2916 * @param scriptTag the script tag at the beginning of the compilation unit | 2864 * @param scriptTag the script tag at the beginning of the compilation unit |
2917 */ | 2865 */ |
2918 void set scriptTag(ScriptTag scriptTag) { | 2866 void set scriptTag(ScriptTag scriptTag) { |
2919 this._scriptTag = becomeParentOf(scriptTag); | 2867 this._scriptTag = becomeParentOf(scriptTag); |
2920 } | 2868 } |
2921 | 2869 |
2922 void visitChildren(ASTVisitor visitor) { | 2870 void visitChildren(AstVisitor visitor) { |
2923 safelyVisitChild(_scriptTag, visitor); | 2871 safelyVisitChild(_scriptTag, visitor); |
2924 if (directivesAreBeforeDeclarations()) { | 2872 if (directivesAreBeforeDeclarations()) { |
2925 _directives.accept(visitor); | 2873 _directives.accept(visitor); |
2926 _declarations.accept(visitor); | 2874 _declarations.accept(visitor); |
2927 } else { | 2875 } else { |
2928 for (ASTNode child in sortedDirectivesAndDeclarations) { | 2876 for (AstNode child in sortedDirectivesAndDeclarations) { |
2929 child.accept(visitor); | 2877 child.accept(visitor); |
2930 } | 2878 } |
2931 } | 2879 } |
2932 } | 2880 } |
2933 | 2881 |
2934 /** | 2882 /** |
2935 * Return `true` if all of the directives are lexically before any declaration
s. | 2883 * Return `true` if all of the directives are lexically before any declaration
s. |
2936 * | 2884 * |
2937 * @return `true` if all of the directives are lexically before any declaratio
ns | 2885 * @return `true` if all of the directives are lexically before any declaratio
ns |
2938 */ | 2886 */ |
2939 bool directivesAreBeforeDeclarations() { | 2887 bool directivesAreBeforeDeclarations() { |
2940 if (_directives.isEmpty || _declarations.isEmpty) { | 2888 if (_directives.isEmpty || _declarations.isEmpty) { |
2941 return true; | 2889 return true; |
2942 } | 2890 } |
2943 Directive lastDirective = _directives[_directives.length - 1]; | 2891 Directive lastDirective = _directives[_directives.length - 1]; |
2944 CompilationUnitMember firstDeclaration = _declarations[0]; | 2892 CompilationUnitMember firstDeclaration = _declarations[0]; |
2945 return lastDirective.offset < firstDeclaration.offset; | 2893 return lastDirective.offset < firstDeclaration.offset; |
2946 } | 2894 } |
2947 | 2895 |
2948 /** | 2896 /** |
2949 * Return an array containing all of the directives and declarations in this c
ompilation unit, | 2897 * Return an array containing all of the directives and declarations in this c
ompilation unit, |
2950 * sorted in lexical order. | 2898 * sorted in lexical order. |
2951 * | 2899 * |
2952 * @return the directives and declarations in this compilation unit in the ord
er in which they | 2900 * @return the directives and declarations in this compilation unit in the ord
er in which they |
2953 * appeared in the original source | 2901 * appeared in the original source |
2954 */ | 2902 */ |
2955 List<ASTNode> get sortedDirectivesAndDeclarations { | 2903 List<AstNode> get sortedDirectivesAndDeclarations { |
2956 List<ASTNode> childList = new List<ASTNode>(); | 2904 List<AstNode> childList = new List<AstNode>(); |
2957 childList.addAll(_directives); | 2905 childList.addAll(_directives); |
2958 childList.addAll(_declarations); | 2906 childList.addAll(_declarations); |
2959 List<ASTNode> children = new List.from(childList); | 2907 List<AstNode> children = new List.from(childList); |
2960 children.sort(ASTNode.LEXICAL_ORDER); | 2908 children.sort(AstNode.LEXICAL_ORDER); |
2961 return children; | 2909 return children; |
2962 } | 2910 } |
2963 } | 2911 } |
2964 | 2912 |
2965 /** | 2913 /** |
2966 * Instances of the class `CompilationUnitMember` defines the behavior common to
nodes that | 2914 * Instances of the class `CompilationUnitMember` defines the behavior common to
nodes that |
2967 * declare a name within the scope of a compilation unit. | 2915 * declare a name within the scope of a compilation unit. |
2968 * | 2916 * |
2969 * <pre> | 2917 * <pre> |
2970 * compilationUnitMember ::= | 2918 * compilationUnitMember ::= |
2971 * [ClassDeclaration] | 2919 * [ClassDeclaration] |
2972 * | [TypeAlias] | 2920 * | [TypeAlias] |
2973 * | [FunctionDeclaration] | 2921 * | [FunctionDeclaration] |
2974 * | [MethodDeclaration] | 2922 * | [MethodDeclaration] |
2975 * | [VariableDeclaration] | 2923 * | [VariableDeclaration] |
2976 * | [VariableDeclaration] | 2924 * | [VariableDeclaration] |
2977 * </pre> | 2925 * </pre> |
2978 * | |
2979 * @coverage dart.engine.ast | |
2980 */ | 2926 */ |
2981 abstract class CompilationUnitMember extends Declaration { | 2927 abstract class CompilationUnitMember extends Declaration { |
2982 /** | 2928 /** |
2983 * Initialize a newly created generic compilation unit member. | 2929 * Initialize a newly created generic compilation unit member. |
2984 * | 2930 * |
2985 * @param comment the documentation comment associated with this member | 2931 * @param comment the documentation comment associated with this member |
2986 * @param metadata the annotations associated with this member | 2932 * @param metadata the annotations associated with this member |
2987 */ | 2933 */ |
2988 CompilationUnitMember(Comment comment, List<Annotation> metadata) : super(comm
ent, metadata); | 2934 CompilationUnitMember(Comment comment, List<Annotation> metadata) : super(comm
ent, metadata); |
2989 } | 2935 } |
2990 | 2936 |
2991 /** | 2937 /** |
2992 * Instances of the class `ConditionalExpression` represent a conditional expres
sion. | 2938 * Instances of the class `ConditionalExpression` represent a conditional expres
sion. |
2993 * | 2939 * |
2994 * <pre> | 2940 * <pre> |
2995 * conditionalExpression ::= | 2941 * conditionalExpression ::= |
2996 * [Expression] '?' [Expression] ':' [Expression] | 2942 * [Expression] '?' [Expression] ':' [Expression] |
2997 * </pre> | 2943 * </pre> |
2998 * | |
2999 * @coverage dart.engine.ast | |
3000 */ | 2944 */ |
3001 class ConditionalExpression extends Expression { | 2945 class ConditionalExpression extends Expression { |
3002 /** | 2946 /** |
3003 * The condition used to determine which of the expressions is executed next. | 2947 * The condition used to determine which of the expressions is executed next. |
3004 */ | 2948 */ |
3005 Expression _condition; | 2949 Expression _condition; |
3006 | 2950 |
3007 /** | 2951 /** |
3008 * The token used to separate the condition from the then expression. | 2952 * The token used to separate the condition from the then expression. |
3009 */ | 2953 */ |
(...skipping 24 matching lines...) Expand all Loading... |
3034 * @param colon the token used to separate the then expression from the else e
xpression | 2978 * @param colon the token used to separate the then expression from the else e
xpression |
3035 * @param elseExpression the expression that is executed if the condition eval
uates to | 2979 * @param elseExpression the expression that is executed if the condition eval
uates to |
3036 * `false` | 2980 * `false` |
3037 */ | 2981 */ |
3038 ConditionalExpression(Expression condition, this.question, Expression thenExpr
ession, this.colon, Expression elseExpression) { | 2982 ConditionalExpression(Expression condition, this.question, Expression thenExpr
ession, this.colon, Expression elseExpression) { |
3039 this._condition = becomeParentOf(condition); | 2983 this._condition = becomeParentOf(condition); |
3040 this._thenExpression = becomeParentOf(thenExpression); | 2984 this._thenExpression = becomeParentOf(thenExpression); |
3041 this._elseExpression = becomeParentOf(elseExpression); | 2985 this._elseExpression = becomeParentOf(elseExpression); |
3042 } | 2986 } |
3043 | 2987 |
3044 accept(ASTVisitor visitor) => visitor.visitConditionalExpression(this); | 2988 accept(AstVisitor visitor) => visitor.visitConditionalExpression(this); |
3045 | 2989 |
3046 Token get beginToken => _condition.beginToken; | 2990 Token get beginToken => _condition.beginToken; |
3047 | 2991 |
3048 /** | 2992 /** |
3049 * Return the condition used to determine which of the expressions is executed
next. | 2993 * Return the condition used to determine which of the expressions is executed
next. |
3050 * | 2994 * |
3051 * @return the condition used to determine which expression is executed next | 2995 * @return the condition used to determine which expression is executed next |
3052 */ | 2996 */ |
3053 Expression get condition => _condition; | 2997 Expression get condition => _condition; |
3054 | 2998 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3093 /** | 3037 /** |
3094 * Set the expression that is executed if the condition evaluates to `true` to
the given | 3038 * Set the expression that is executed if the condition evaluates to `true` to
the given |
3095 * expression. | 3039 * expression. |
3096 * | 3040 * |
3097 * @param expression the expression that is executed if the condition evaluate
s to `true` | 3041 * @param expression the expression that is executed if the condition evaluate
s to `true` |
3098 */ | 3042 */ |
3099 void set thenExpression(Expression expression) { | 3043 void set thenExpression(Expression expression) { |
3100 _thenExpression = becomeParentOf(expression); | 3044 _thenExpression = becomeParentOf(expression); |
3101 } | 3045 } |
3102 | 3046 |
3103 void visitChildren(ASTVisitor visitor) { | 3047 void visitChildren(AstVisitor visitor) { |
3104 safelyVisitChild(_condition, visitor); | 3048 safelyVisitChild(_condition, visitor); |
3105 safelyVisitChild(_thenExpression, visitor); | 3049 safelyVisitChild(_thenExpression, visitor); |
3106 safelyVisitChild(_elseExpression, visitor); | 3050 safelyVisitChild(_elseExpression, visitor); |
3107 } | 3051 } |
3108 } | 3052 } |
3109 | 3053 |
3110 /** | 3054 /** |
3111 * Instances of the class `ConstructorDeclaration` represent a constructor decla
ration. | 3055 * Instances of the class `ConstructorDeclaration` represent a constructor decla
ration. |
3112 * | 3056 * |
3113 * <pre> | 3057 * <pre> |
3114 * constructorDeclaration ::= | 3058 * constructorDeclaration ::= |
3115 * constructorSignature [FunctionBody]? | 3059 * constructorSignature [FunctionBody]? |
3116 * | constructorName formalParameterList ':' 'this' ('.' [SimpleIdentifier])?
arguments | 3060 * | constructorName formalParameterList ':' 'this' ('.' [SimpleIdentifier])?
arguments |
3117 * | 3061 * |
3118 * constructorSignature ::= | 3062 * constructorSignature ::= |
3119 * 'external'? constructorName formalParameterList initializerList? | 3063 * 'external'? constructorName formalParameterList initializerList? |
3120 * | 'external'? 'factory' factoryName formalParameterList initializerList? | 3064 * | 'external'? 'factory' factoryName formalParameterList initializerList? |
3121 * | 'external'? 'const' constructorName formalParameterList initializerList? | 3065 * | 'external'? 'const' constructorName formalParameterList initializerList? |
3122 * | 3066 * |
3123 * constructorName ::= | 3067 * constructorName ::= |
3124 * [SimpleIdentifier] ('.' [SimpleIdentifier])? | 3068 * [SimpleIdentifier] ('.' [SimpleIdentifier])? |
3125 * | 3069 * |
3126 * factoryName ::= | 3070 * factoryName ::= |
3127 * [Identifier] ('.' [SimpleIdentifier])? | 3071 * [Identifier] ('.' [SimpleIdentifier])? |
3128 * | 3072 * |
3129 * initializerList ::= | 3073 * initializerList ::= |
3130 * ':' [ConstructorInitializer] (',' [ConstructorInitializer])* | 3074 * ':' [ConstructorInitializer] (',' [ConstructorInitializer])* |
3131 * </pre> | 3075 * </pre> |
3132 * | |
3133 * @coverage dart.engine.ast | |
3134 */ | 3076 */ |
3135 class ConstructorDeclaration extends ClassMember { | 3077 class ConstructorDeclaration extends ClassMember { |
3136 /** | 3078 /** |
3137 * The token for the 'external' keyword, or `null` if the constructor is not e
xternal. | 3079 * The token for the 'external' keyword, or `null` if the constructor is not e
xternal. |
3138 */ | 3080 */ |
3139 Token externalKeyword; | 3081 Token externalKeyword; |
3140 | 3082 |
3141 /** | 3083 /** |
3142 * The token for the 'const' keyword, or `null` if the constructor is not a co
nst | 3084 * The token for the 'const' keyword, or `null` if the constructor is not a co
nst |
3143 * constructor. | 3085 * constructor. |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3221 ConstructorDeclaration(Comment comment, List<Annotation> metadata, this.extern
alKeyword, this.constKeyword, this.factoryKeyword, Identifier returnType, this.p
eriod, SimpleIdentifier name, FormalParameterList parameters, this.separator, Li
st<ConstructorInitializer> initializers, ConstructorName redirectedConstructor,
FunctionBody body) : super(comment, metadata) { | 3163 ConstructorDeclaration(Comment comment, List<Annotation> metadata, this.extern
alKeyword, this.constKeyword, this.factoryKeyword, Identifier returnType, this.p
eriod, SimpleIdentifier name, FormalParameterList parameters, this.separator, Li
st<ConstructorInitializer> initializers, ConstructorName redirectedConstructor,
FunctionBody body) : super(comment, metadata) { |
3222 this._initializers = new NodeList<ConstructorInitializer>(this); | 3164 this._initializers = new NodeList<ConstructorInitializer>(this); |
3223 this._returnType = becomeParentOf(returnType); | 3165 this._returnType = becomeParentOf(returnType); |
3224 this._name = becomeParentOf(name); | 3166 this._name = becomeParentOf(name); |
3225 this._parameters = becomeParentOf(parameters); | 3167 this._parameters = becomeParentOf(parameters); |
3226 this._initializers.addAll(initializers); | 3168 this._initializers.addAll(initializers); |
3227 this._redirectedConstructor = becomeParentOf(redirectedConstructor); | 3169 this._redirectedConstructor = becomeParentOf(redirectedConstructor); |
3228 this._body = becomeParentOf(body); | 3170 this._body = becomeParentOf(body); |
3229 } | 3171 } |
3230 | 3172 |
3231 accept(ASTVisitor visitor) => visitor.visitConstructorDeclaration(this); | 3173 accept(AstVisitor visitor) => visitor.visitConstructorDeclaration(this); |
3232 | 3174 |
3233 /** | 3175 /** |
3234 * Return the body of the constructor, or `null` if the constructor does not h
ave a body. | 3176 * Return the body of the constructor, or `null` if the constructor does not h
ave a body. |
3235 * | 3177 * |
3236 * @return the body of the constructor | 3178 * @return the body of the constructor |
3237 */ | 3179 */ |
3238 FunctionBody get body => _body; | 3180 FunctionBody get body => _body; |
3239 | 3181 |
3240 Token get endToken { | 3182 Token get endToken { |
3241 if (_body != null) { | 3183 if (_body != null) { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3325 | 3267 |
3326 /** | 3268 /** |
3327 * Set the type of object being created to the given type name. | 3269 * Set the type of object being created to the given type name. |
3328 * | 3270 * |
3329 * @param typeName the type of object being created | 3271 * @param typeName the type of object being created |
3330 */ | 3272 */ |
3331 void set returnType(Identifier typeName) { | 3273 void set returnType(Identifier typeName) { |
3332 _returnType = becomeParentOf(typeName); | 3274 _returnType = becomeParentOf(typeName); |
3333 } | 3275 } |
3334 | 3276 |
3335 void visitChildren(ASTVisitor visitor) { | 3277 void visitChildren(AstVisitor visitor) { |
3336 super.visitChildren(visitor); | 3278 super.visitChildren(visitor); |
3337 safelyVisitChild(_returnType, visitor); | 3279 safelyVisitChild(_returnType, visitor); |
3338 safelyVisitChild(_name, visitor); | 3280 safelyVisitChild(_name, visitor); |
3339 safelyVisitChild(_parameters, visitor); | 3281 safelyVisitChild(_parameters, visitor); |
3340 _initializers.accept(visitor); | 3282 _initializers.accept(visitor); |
3341 safelyVisitChild(_redirectedConstructor, visitor); | 3283 safelyVisitChild(_redirectedConstructor, visitor); |
3342 safelyVisitChild(_body, visitor); | 3284 safelyVisitChild(_body, visitor); |
3343 } | 3285 } |
3344 | 3286 |
3345 Token get firstTokenAfterCommentAndMetadata { | 3287 Token get firstTokenAfterCommentAndMetadata { |
(...skipping 24 matching lines...) Expand all Loading... |
3370 } | 3312 } |
3371 | 3313 |
3372 /** | 3314 /** |
3373 * Instances of the class `ConstructorFieldInitializer` represent the initializa
tion of a | 3315 * Instances of the class `ConstructorFieldInitializer` represent the initializa
tion of a |
3374 * field within a constructor's initialization list. | 3316 * field within a constructor's initialization list. |
3375 * | 3317 * |
3376 * <pre> | 3318 * <pre> |
3377 * fieldInitializer ::= | 3319 * fieldInitializer ::= |
3378 * ('this' '.')? [SimpleIdentifier] '=' [Expression] | 3320 * ('this' '.')? [SimpleIdentifier] '=' [Expression] |
3379 * </pre> | 3321 * </pre> |
3380 * | |
3381 * @coverage dart.engine.ast | |
3382 */ | 3322 */ |
3383 class ConstructorFieldInitializer extends ConstructorInitializer { | 3323 class ConstructorFieldInitializer extends ConstructorInitializer { |
3384 /** | 3324 /** |
3385 * The token for the 'this' keyword, or `null` if there is no 'this' keyword. | 3325 * The token for the 'this' keyword, or `null` if there is no 'this' keyword. |
3386 */ | 3326 */ |
3387 Token keyword; | 3327 Token keyword; |
3388 | 3328 |
3389 /** | 3329 /** |
3390 * The token for the period after the 'this' keyword, or `null` if there is no
'this' | 3330 * The token for the period after the 'this' keyword, or `null` if there is no
'this' |
3391 * keyword. | 3331 * keyword. |
(...skipping 23 matching lines...) Expand all Loading... |
3415 * @param period the token for the period after the 'this' keyword | 3355 * @param period the token for the period after the 'this' keyword |
3416 * @param fieldName the name of the field being initialized | 3356 * @param fieldName the name of the field being initialized |
3417 * @param equals the token for the equal sign between the field name and the e
xpression | 3357 * @param equals the token for the equal sign between the field name and the e
xpression |
3418 * @param expression the expression computing the value to which the field wil
l be initialized | 3358 * @param expression the expression computing the value to which the field wil
l be initialized |
3419 */ | 3359 */ |
3420 ConstructorFieldInitializer(this.keyword, this.period, SimpleIdentifier fieldN
ame, this.equals, Expression expression) { | 3360 ConstructorFieldInitializer(this.keyword, this.period, SimpleIdentifier fieldN
ame, this.equals, Expression expression) { |
3421 this._fieldName = becomeParentOf(fieldName); | 3361 this._fieldName = becomeParentOf(fieldName); |
3422 this._expression = becomeParentOf(expression); | 3362 this._expression = becomeParentOf(expression); |
3423 } | 3363 } |
3424 | 3364 |
3425 accept(ASTVisitor visitor) => visitor.visitConstructorFieldInitializer(this); | 3365 accept(AstVisitor visitor) => visitor.visitConstructorFieldInitializer(this); |
3426 | 3366 |
3427 Token get beginToken { | 3367 Token get beginToken { |
3428 if (keyword != null) { | 3368 if (keyword != null) { |
3429 return keyword; | 3369 return keyword; |
3430 } | 3370 } |
3431 return _fieldName.beginToken; | 3371 return _fieldName.beginToken; |
3432 } | 3372 } |
3433 | 3373 |
3434 Token get endToken => _expression.endToken; | 3374 Token get endToken => _expression.endToken; |
3435 | 3375 |
(...skipping 23 matching lines...) Expand all Loading... |
3459 | 3399 |
3460 /** | 3400 /** |
3461 * Set the name of the field being initialized to the given identifier. | 3401 * Set the name of the field being initialized to the given identifier. |
3462 * | 3402 * |
3463 * @param identifier the name of the field being initialized | 3403 * @param identifier the name of the field being initialized |
3464 */ | 3404 */ |
3465 void set fieldName(SimpleIdentifier identifier) { | 3405 void set fieldName(SimpleIdentifier identifier) { |
3466 _fieldName = becomeParentOf(identifier); | 3406 _fieldName = becomeParentOf(identifier); |
3467 } | 3407 } |
3468 | 3408 |
3469 void visitChildren(ASTVisitor visitor) { | 3409 void visitChildren(AstVisitor visitor) { |
3470 safelyVisitChild(_fieldName, visitor); | 3410 safelyVisitChild(_fieldName, visitor); |
3471 safelyVisitChild(_expression, visitor); | 3411 safelyVisitChild(_expression, visitor); |
3472 } | 3412 } |
3473 } | 3413 } |
3474 | 3414 |
3475 /** | 3415 /** |
3476 * Instances of the class `ConstructorInitializer` defines the behavior of nodes
that can | 3416 * Instances of the class `ConstructorInitializer` defines the behavior of nodes
that can |
3477 * occur in the initializer list of a constructor declaration. | 3417 * occur in the initializer list of a constructor declaration. |
3478 * | 3418 * |
3479 * <pre> | 3419 * <pre> |
3480 * constructorInitializer ::= | 3420 * constructorInitializer ::= |
3481 * [SuperConstructorInvocation] | 3421 * [SuperConstructorInvocation] |
3482 * | [ConstructorFieldInitializer] | 3422 * | [ConstructorFieldInitializer] |
3483 * </pre> | 3423 * </pre> |
3484 * | |
3485 * @coverage dart.engine.ast | |
3486 */ | 3424 */ |
3487 abstract class ConstructorInitializer extends ASTNode { | 3425 abstract class ConstructorInitializer extends AstNode { |
3488 } | 3426 } |
3489 | 3427 |
3490 /** | 3428 /** |
3491 * Instances of the class `ConstructorName` represent the name of the constructo
r. | 3429 * Instances of the class `ConstructorName` represent the name of the constructo
r. |
3492 * | 3430 * |
3493 * <pre> | 3431 * <pre> |
3494 * constructorName: | 3432 * constructorName: |
3495 * type ('.' identifier)? | 3433 * type ('.' identifier)? |
3496 * </pre> | 3434 * </pre> |
3497 * | |
3498 * @coverage dart.engine.ast | |
3499 */ | 3435 */ |
3500 class ConstructorName extends ASTNode { | 3436 class ConstructorName extends AstNode { |
3501 /** | 3437 /** |
3502 * The name of the type defining the constructor. | 3438 * The name of the type defining the constructor. |
3503 */ | 3439 */ |
3504 TypeName _type; | 3440 TypeName _type; |
3505 | 3441 |
3506 /** | 3442 /** |
3507 * The token for the period before the constructor name, or `null` if the spec
ified | 3443 * The token for the period before the constructor name, or `null` if the spec
ified |
3508 * constructor is the unnamed constructor. | 3444 * constructor is the unnamed constructor. |
3509 */ | 3445 */ |
3510 Token period; | 3446 Token period; |
(...skipping 16 matching lines...) Expand all Loading... |
3527 * | 3463 * |
3528 * @param type the name of the type defining the constructor | 3464 * @param type the name of the type defining the constructor |
3529 * @param period the token for the period before the constructor name | 3465 * @param period the token for the period before the constructor name |
3530 * @param name the name of the constructor | 3466 * @param name the name of the constructor |
3531 */ | 3467 */ |
3532 ConstructorName(TypeName type, this.period, SimpleIdentifier name) { | 3468 ConstructorName(TypeName type, this.period, SimpleIdentifier name) { |
3533 this._type = becomeParentOf(type); | 3469 this._type = becomeParentOf(type); |
3534 this._name = becomeParentOf(name); | 3470 this._name = becomeParentOf(name); |
3535 } | 3471 } |
3536 | 3472 |
3537 accept(ASTVisitor visitor) => visitor.visitConstructorName(this); | 3473 accept(AstVisitor visitor) => visitor.visitConstructorName(this); |
3538 | 3474 |
3539 Token get beginToken => _type.beginToken; | 3475 Token get beginToken => _type.beginToken; |
3540 | 3476 |
3541 Token get endToken { | 3477 Token get endToken { |
3542 if (_name != null) { | 3478 if (_name != null) { |
3543 return _name.endToken; | 3479 return _name.endToken; |
3544 } | 3480 } |
3545 return _type.endToken; | 3481 return _type.endToken; |
3546 } | 3482 } |
3547 | 3483 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3590 | 3526 |
3591 /** | 3527 /** |
3592 * Set the name of the type defining the constructor to the given type name. | 3528 * Set the name of the type defining the constructor to the given type name. |
3593 * | 3529 * |
3594 * @param type the name of the type defining the constructor | 3530 * @param type the name of the type defining the constructor |
3595 */ | 3531 */ |
3596 void set type(TypeName type) { | 3532 void set type(TypeName type) { |
3597 this._type = becomeParentOf(type); | 3533 this._type = becomeParentOf(type); |
3598 } | 3534 } |
3599 | 3535 |
3600 void visitChildren(ASTVisitor visitor) { | 3536 void visitChildren(AstVisitor visitor) { |
3601 safelyVisitChild(_type, visitor); | 3537 safelyVisitChild(_type, visitor); |
3602 safelyVisitChild(_name, visitor); | 3538 safelyVisitChild(_name, visitor); |
3603 } | 3539 } |
3604 } | 3540 } |
3605 | 3541 |
3606 /** | 3542 /** |
3607 * Instances of the class `ContinueStatement` represent a continue statement. | 3543 * Instances of the class `ContinueStatement` represent a continue statement. |
3608 * | 3544 * |
3609 * <pre> | 3545 * <pre> |
3610 * continueStatement ::= | 3546 * continueStatement ::= |
3611 * 'continue' [SimpleIdentifier]? ';' | 3547 * 'continue' [SimpleIdentifier]? ';' |
3612 * </pre> | 3548 * </pre> |
3613 * | |
3614 * @coverage dart.engine.ast | |
3615 */ | 3549 */ |
3616 class ContinueStatement extends Statement { | 3550 class ContinueStatement extends Statement { |
3617 /** | 3551 /** |
3618 * The token representing the 'continue' keyword. | 3552 * The token representing the 'continue' keyword. |
3619 */ | 3553 */ |
3620 Token keyword; | 3554 Token keyword; |
3621 | 3555 |
3622 /** | 3556 /** |
3623 * The label associated with the statement, or `null` if there is no label. | 3557 * The label associated with the statement, or `null` if there is no label. |
3624 */ | 3558 */ |
3625 SimpleIdentifier _label; | 3559 SimpleIdentifier _label; |
3626 | 3560 |
3627 /** | 3561 /** |
3628 * The semicolon terminating the statement. | 3562 * The semicolon terminating the statement. |
3629 */ | 3563 */ |
3630 Token semicolon; | 3564 Token semicolon; |
3631 | 3565 |
3632 /** | 3566 /** |
3633 * Initialize a newly created continue statement. | 3567 * Initialize a newly created continue statement. |
3634 * | 3568 * |
3635 * @param keyword the token representing the 'continue' keyword | 3569 * @param keyword the token representing the 'continue' keyword |
3636 * @param label the label associated with the statement | 3570 * @param label the label associated with the statement |
3637 * @param semicolon the semicolon terminating the statement | 3571 * @param semicolon the semicolon terminating the statement |
3638 */ | 3572 */ |
3639 ContinueStatement(this.keyword, SimpleIdentifier label, this.semicolon) { | 3573 ContinueStatement(this.keyword, SimpleIdentifier label, this.semicolon) { |
3640 this._label = becomeParentOf(label); | 3574 this._label = becomeParentOf(label); |
3641 } | 3575 } |
3642 | 3576 |
3643 accept(ASTVisitor visitor) => visitor.visitContinueStatement(this); | 3577 accept(AstVisitor visitor) => visitor.visitContinueStatement(this); |
3644 | 3578 |
3645 Token get beginToken => keyword; | 3579 Token get beginToken => keyword; |
3646 | 3580 |
3647 Token get endToken => semicolon; | 3581 Token get endToken => semicolon; |
3648 | 3582 |
3649 /** | 3583 /** |
3650 * Return the label associated with the statement, or `null` if there is no la
bel. | 3584 * Return the label associated with the statement, or `null` if there is no la
bel. |
3651 * | 3585 * |
3652 * @return the label associated with the statement | 3586 * @return the label associated with the statement |
3653 */ | 3587 */ |
3654 SimpleIdentifier get label => _label; | 3588 SimpleIdentifier get label => _label; |
3655 | 3589 |
3656 /** | 3590 /** |
3657 * Set the label associated with the statement to the given label. | 3591 * Set the label associated with the statement to the given label. |
3658 * | 3592 * |
3659 * @param identifier the label associated with the statement | 3593 * @param identifier the label associated with the statement |
3660 */ | 3594 */ |
3661 void set label(SimpleIdentifier identifier) { | 3595 void set label(SimpleIdentifier identifier) { |
3662 _label = becomeParentOf(identifier); | 3596 _label = becomeParentOf(identifier); |
3663 } | 3597 } |
3664 | 3598 |
3665 void visitChildren(ASTVisitor visitor) { | 3599 void visitChildren(AstVisitor visitor) { |
3666 safelyVisitChild(_label, visitor); | 3600 safelyVisitChild(_label, visitor); |
3667 } | 3601 } |
3668 } | 3602 } |
3669 | 3603 |
3670 /** | 3604 /** |
3671 * The abstract class `Declaration` defines the behavior common to nodes that re
present the | 3605 * The abstract class `Declaration` defines the behavior common to nodes that re
present the |
3672 * declaration of a name. Each declared name is visible within a name scope. | 3606 * declaration of a name. Each declared name is visible within a name scope. |
3673 * | |
3674 * @coverage dart.engine.ast | |
3675 */ | 3607 */ |
3676 abstract class Declaration extends AnnotatedNode { | 3608 abstract class Declaration extends AnnotatedNode { |
3677 /** | 3609 /** |
3678 * Initialize a newly created declaration. | 3610 * Initialize a newly created declaration. |
3679 * | 3611 * |
3680 * @param comment the documentation comment associated with this declaration | 3612 * @param comment the documentation comment associated with this declaration |
3681 * @param metadata the annotations associated with this declaration | 3613 * @param metadata the annotations associated with this declaration |
3682 */ | 3614 */ |
3683 Declaration(Comment comment, List<Annotation> metadata) : super(comment, metad
ata); | 3615 Declaration(Comment comment, List<Annotation> metadata) : super(comment, metad
ata); |
3684 | 3616 |
3685 /** | 3617 /** |
3686 * Return the element associated with this declaration, or `null` if either th
is node | 3618 * Return the element associated with this declaration, or `null` if either th
is node |
3687 * corresponds to a list of declarations or if the AST structure has not been
resolved. | 3619 * corresponds to a list of declarations or if the AST structure has not been
resolved. |
3688 * | 3620 * |
3689 * @return the element associated with this declaration | 3621 * @return the element associated with this declaration |
3690 */ | 3622 */ |
3691 Element get element; | 3623 Element get element; |
3692 } | 3624 } |
3693 | 3625 |
3694 /** | 3626 /** |
3695 * Instances of the class `DeclaredIdentifier` represent the declaration of a si
ngle | 3627 * Instances of the class `DeclaredIdentifier` represent the declaration of a si
ngle |
3696 * identifier. | 3628 * identifier. |
3697 * | 3629 * |
3698 * <pre> | 3630 * <pre> |
3699 * declaredIdentifier ::= | 3631 * declaredIdentifier ::= |
3700 * ([Annotation] finalConstVarOrType [SimpleIdentifier] | 3632 * ([Annotation] finalConstVarOrType [SimpleIdentifier] |
3701 * </pre> | 3633 * </pre> |
3702 * | |
3703 * @coverage dart.engine.ast | |
3704 */ | 3634 */ |
3705 class DeclaredIdentifier extends Declaration { | 3635 class DeclaredIdentifier extends Declaration { |
3706 /** | 3636 /** |
3707 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no | 3637 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no |
3708 * keyword was used. | 3638 * keyword was used. |
3709 */ | 3639 */ |
3710 Token keyword; | 3640 Token keyword; |
3711 | 3641 |
3712 /** | 3642 /** |
3713 * The name of the declared type of the parameter, or `null` if the parameter
does not have | 3643 * The name of the declared type of the parameter, or `null` if the parameter
does not have |
(...skipping 13 matching lines...) Expand all Loading... |
3727 * @param metadata the annotations associated with this parameter | 3657 * @param metadata the annotations associated with this parameter |
3728 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 3658 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
3729 * @param type the name of the declared type of the parameter | 3659 * @param type the name of the declared type of the parameter |
3730 * @param identifier the name of the parameter being declared | 3660 * @param identifier the name of the parameter being declared |
3731 */ | 3661 */ |
3732 DeclaredIdentifier(Comment comment, List<Annotation> metadata, this.keyword, T
ypeName type, SimpleIdentifier identifier) : super(comment, metadata) { | 3662 DeclaredIdentifier(Comment comment, List<Annotation> metadata, this.keyword, T
ypeName type, SimpleIdentifier identifier) : super(comment, metadata) { |
3733 this._type = becomeParentOf(type); | 3663 this._type = becomeParentOf(type); |
3734 this._identifier = becomeParentOf(identifier); | 3664 this._identifier = becomeParentOf(identifier); |
3735 } | 3665 } |
3736 | 3666 |
3737 accept(ASTVisitor visitor) => visitor.visitDeclaredIdentifier(this); | 3667 accept(AstVisitor visitor) => visitor.visitDeclaredIdentifier(this); |
3738 | 3668 |
3739 LocalVariableElement get element { | 3669 LocalVariableElement get element { |
3740 SimpleIdentifier identifier = this.identifier; | 3670 SimpleIdentifier identifier = this.identifier; |
3741 if (identifier == null) { | 3671 if (identifier == null) { |
3742 return null; | 3672 return null; |
3743 } | 3673 } |
3744 return identifier.staticElement as LocalVariableElement; | 3674 return identifier.staticElement as LocalVariableElement; |
3745 } | 3675 } |
3746 | 3676 |
3747 Token get endToken => _identifier.endToken; | 3677 Token get endToken => _identifier.endToken; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3779 | 3709 |
3780 /** | 3710 /** |
3781 * Set the name of the declared type of the parameter to the given type name. | 3711 * Set the name of the declared type of the parameter to the given type name. |
3782 * | 3712 * |
3783 * @param typeName the name of the declared type of the parameter | 3713 * @param typeName the name of the declared type of the parameter |
3784 */ | 3714 */ |
3785 void set type(TypeName typeName) { | 3715 void set type(TypeName typeName) { |
3786 _type = becomeParentOf(typeName); | 3716 _type = becomeParentOf(typeName); |
3787 } | 3717 } |
3788 | 3718 |
3789 void visitChildren(ASTVisitor visitor) { | 3719 void visitChildren(AstVisitor visitor) { |
3790 super.visitChildren(visitor); | 3720 super.visitChildren(visitor); |
3791 safelyVisitChild(_type, visitor); | 3721 safelyVisitChild(_type, visitor); |
3792 safelyVisitChild(_identifier, visitor); | 3722 safelyVisitChild(_identifier, visitor); |
3793 } | 3723 } |
3794 | 3724 |
3795 Token get firstTokenAfterCommentAndMetadata { | 3725 Token get firstTokenAfterCommentAndMetadata { |
3796 if (keyword != null) { | 3726 if (keyword != null) { |
3797 return keyword; | 3727 return keyword; |
3798 } else if (_type != null) { | 3728 } else if (_type != null) { |
3799 return _type.beginToken; | 3729 return _type.beginToken; |
3800 } | 3730 } |
3801 return _identifier.beginToken; | 3731 return _identifier.beginToken; |
3802 } | 3732 } |
3803 } | 3733 } |
3804 | 3734 |
3805 /** | 3735 /** |
3806 * Instances of the class `DefaultFormalParameter` represent a formal parameter
with a default | 3736 * Instances of the class `DefaultFormalParameter` represent a formal parameter
with a default |
3807 * value. There are two kinds of parameters that are both represented by this cl
ass: named formal | 3737 * value. There are two kinds of parameters that are both represented by this cl
ass: named formal |
3808 * parameters and positional formal parameters. | 3738 * parameters and positional formal parameters. |
3809 * | 3739 * |
3810 * <pre> | 3740 * <pre> |
3811 * defaultFormalParameter ::= | 3741 * defaultFormalParameter ::= |
3812 * [NormalFormalParameter] ('=' [Expression])? | 3742 * [NormalFormalParameter] ('=' [Expression])? |
3813 * | 3743 * |
3814 * defaultNamedParameter ::= | 3744 * defaultNamedParameter ::= |
3815 * [NormalFormalParameter] (':' [Expression])? | 3745 * [NormalFormalParameter] (':' [Expression])? |
3816 * </pre> | 3746 * </pre> |
3817 * | |
3818 * @coverage dart.engine.ast | |
3819 */ | 3747 */ |
3820 class DefaultFormalParameter extends FormalParameter { | 3748 class DefaultFormalParameter extends FormalParameter { |
3821 /** | 3749 /** |
3822 * The formal parameter with which the default value is associated. | 3750 * The formal parameter with which the default value is associated. |
3823 */ | 3751 */ |
3824 NormalFormalParameter _parameter; | 3752 NormalFormalParameter _parameter; |
3825 | 3753 |
3826 /** | 3754 /** |
3827 * The kind of this parameter. | 3755 * The kind of this parameter. |
3828 */ | 3756 */ |
(...skipping 17 matching lines...) Expand all Loading... |
3846 * @param parameter the formal parameter with which the default value is assoc
iated | 3774 * @param parameter the formal parameter with which the default value is assoc
iated |
3847 * @param kind the kind of this parameter | 3775 * @param kind the kind of this parameter |
3848 * @param separator the token separating the parameter from the default value | 3776 * @param separator the token separating the parameter from the default value |
3849 * @param defaultValue the expression computing the default value for the para
meter | 3777 * @param defaultValue the expression computing the default value for the para
meter |
3850 */ | 3778 */ |
3851 DefaultFormalParameter(NormalFormalParameter parameter, this.kind, this.separa
tor, Expression defaultValue) { | 3779 DefaultFormalParameter(NormalFormalParameter parameter, this.kind, this.separa
tor, Expression defaultValue) { |
3852 this._parameter = becomeParentOf(parameter); | 3780 this._parameter = becomeParentOf(parameter); |
3853 this._defaultValue = becomeParentOf(defaultValue); | 3781 this._defaultValue = becomeParentOf(defaultValue); |
3854 } | 3782 } |
3855 | 3783 |
3856 accept(ASTVisitor visitor) => visitor.visitDefaultFormalParameter(this); | 3784 accept(AstVisitor visitor) => visitor.visitDefaultFormalParameter(this); |
3857 | 3785 |
3858 Token get beginToken => _parameter.beginToken; | 3786 Token get beginToken => _parameter.beginToken; |
3859 | 3787 |
3860 /** | 3788 /** |
3861 * Return the expression computing the default value for the parameter, or `nu
ll` if there | 3789 * Return the expression computing the default value for the parameter, or `nu
ll` if there |
3862 * is no default value. | 3790 * is no default value. |
3863 * | 3791 * |
3864 * @return the expression computing the default value for the parameter | 3792 * @return the expression computing the default value for the parameter |
3865 */ | 3793 */ |
3866 Expression get defaultValue => _defaultValue; | 3794 Expression get defaultValue => _defaultValue; |
(...skipping 29 matching lines...) Expand all Loading... |
3896 | 3824 |
3897 /** | 3825 /** |
3898 * Set the formal parameter with which the default value is associated to the
given parameter. | 3826 * Set the formal parameter with which the default value is associated to the
given parameter. |
3899 * | 3827 * |
3900 * @param formalParameter the formal parameter with which the default value is
associated | 3828 * @param formalParameter the formal parameter with which the default value is
associated |
3901 */ | 3829 */ |
3902 void set parameter(NormalFormalParameter formalParameter) { | 3830 void set parameter(NormalFormalParameter formalParameter) { |
3903 _parameter = becomeParentOf(formalParameter); | 3831 _parameter = becomeParentOf(formalParameter); |
3904 } | 3832 } |
3905 | 3833 |
3906 void visitChildren(ASTVisitor visitor) { | 3834 void visitChildren(AstVisitor visitor) { |
3907 safelyVisitChild(_parameter, visitor); | 3835 safelyVisitChild(_parameter, visitor); |
3908 safelyVisitChild(_defaultValue, visitor); | 3836 safelyVisitChild(_defaultValue, visitor); |
3909 } | 3837 } |
3910 } | 3838 } |
3911 | 3839 |
3912 /** | 3840 /** |
3913 * The abstract class `Directive` defines the behavior common to nodes that repr
esent a | 3841 * The abstract class `Directive` defines the behavior common to nodes that repr
esent a |
3914 * directive. | 3842 * directive. |
3915 * | 3843 * |
3916 * <pre> | 3844 * <pre> |
3917 * directive ::= | 3845 * directive ::= |
3918 * [ExportDirective] | 3846 * [ExportDirective] |
3919 * | [ImportDirective] | 3847 * | [ImportDirective] |
3920 * | [LibraryDirective] | 3848 * | [LibraryDirective] |
3921 * | [PartDirective] | 3849 * | [PartDirective] |
3922 * | [PartOfDirective] | 3850 * | [PartOfDirective] |
3923 * </pre> | 3851 * </pre> |
3924 * | |
3925 * @coverage dart.engine.ast | |
3926 */ | 3852 */ |
3927 abstract class Directive extends AnnotatedNode { | 3853 abstract class Directive extends AnnotatedNode { |
3928 /** | 3854 /** |
3929 * The element associated with this directive, or `null` if the AST structure
has not been | 3855 * The element associated with this directive, or `null` if the AST structure
has not been |
3930 * resolved or if this directive could not be resolved. | 3856 * resolved or if this directive could not be resolved. |
3931 */ | 3857 */ |
3932 Element _element; | 3858 Element _element; |
3933 | 3859 |
3934 /** | 3860 /** |
3935 * Initialize a newly create directive. | 3861 * Initialize a newly create directive. |
(...skipping 30 matching lines...) Expand all Loading... |
3966 } | 3892 } |
3967 } | 3893 } |
3968 | 3894 |
3969 /** | 3895 /** |
3970 * Instances of the class `DoStatement` represent a do statement. | 3896 * Instances of the class `DoStatement` represent a do statement. |
3971 * | 3897 * |
3972 * <pre> | 3898 * <pre> |
3973 * doStatement ::= | 3899 * doStatement ::= |
3974 * 'do' [Statement] 'while' '(' [Expression] ')' ';' | 3900 * 'do' [Statement] 'while' '(' [Expression] ')' ';' |
3975 * </pre> | 3901 * </pre> |
3976 * | |
3977 * @coverage dart.engine.ast | |
3978 */ | 3902 */ |
3979 class DoStatement extends Statement { | 3903 class DoStatement extends Statement { |
3980 /** | 3904 /** |
3981 * The token representing the 'do' keyword. | 3905 * The token representing the 'do' keyword. |
3982 */ | 3906 */ |
3983 Token doKeyword; | 3907 Token doKeyword; |
3984 | 3908 |
3985 /** | 3909 /** |
3986 * The body of the loop. | 3910 * The body of the loop. |
3987 */ | 3911 */ |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4023 * @param rightParenthesis the right parenthesis | 3947 * @param rightParenthesis the right parenthesis |
4024 * @param semicolon the semicolon terminating the statement | 3948 * @param semicolon the semicolon terminating the statement |
4025 */ | 3949 */ |
4026 DoStatement(this.doKeyword, Statement body, this.whileKeyword, Token leftParen
thesis, Expression condition, Token rightParenthesis, this.semicolon) { | 3950 DoStatement(this.doKeyword, Statement body, this.whileKeyword, Token leftParen
thesis, Expression condition, Token rightParenthesis, this.semicolon) { |
4027 this._body = becomeParentOf(body); | 3951 this._body = becomeParentOf(body); |
4028 this._leftParenthesis = leftParenthesis; | 3952 this._leftParenthesis = leftParenthesis; |
4029 this._condition = becomeParentOf(condition); | 3953 this._condition = becomeParentOf(condition); |
4030 this._rightParenthesis = rightParenthesis; | 3954 this._rightParenthesis = rightParenthesis; |
4031 } | 3955 } |
4032 | 3956 |
4033 accept(ASTVisitor visitor) => visitor.visitDoStatement(this); | 3957 accept(AstVisitor visitor) => visitor.visitDoStatement(this); |
4034 | 3958 |
4035 Token get beginToken => doKeyword; | 3959 Token get beginToken => doKeyword; |
4036 | 3960 |
4037 /** | 3961 /** |
4038 * Return the body of the loop. | 3962 * Return the body of the loop. |
4039 * | 3963 * |
4040 * @return the body of the loop | 3964 * @return the body of the loop |
4041 */ | 3965 */ |
4042 Statement get body => _body; | 3966 Statement get body => _body; |
4043 | 3967 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4093 | 4017 |
4094 /** | 4018 /** |
4095 * Set the right parenthesis to the given token. | 4019 * Set the right parenthesis to the given token. |
4096 * | 4020 * |
4097 * @param parenthesis the right parenthesis | 4021 * @param parenthesis the right parenthesis |
4098 */ | 4022 */ |
4099 void set rightParenthesis(Token parenthesis) { | 4023 void set rightParenthesis(Token parenthesis) { |
4100 _rightParenthesis = parenthesis; | 4024 _rightParenthesis = parenthesis; |
4101 } | 4025 } |
4102 | 4026 |
4103 void visitChildren(ASTVisitor visitor) { | 4027 void visitChildren(AstVisitor visitor) { |
4104 safelyVisitChild(_body, visitor); | 4028 safelyVisitChild(_body, visitor); |
4105 safelyVisitChild(_condition, visitor); | 4029 safelyVisitChild(_condition, visitor); |
4106 } | 4030 } |
4107 } | 4031 } |
4108 | 4032 |
4109 /** | 4033 /** |
4110 * Instances of the class `DoubleLiteral` represent a floating point literal exp
ression. | 4034 * Instances of the class `DoubleLiteral` represent a floating point literal exp
ression. |
4111 * | 4035 * |
4112 * <pre> | 4036 * <pre> |
4113 * doubleLiteral ::= | 4037 * doubleLiteral ::= |
4114 * decimalDigit+ ('.' decimalDigit*)? exponent? | 4038 * decimalDigit+ ('.' decimalDigit*)? exponent? |
4115 * | '.' decimalDigit+ exponent? | 4039 * | '.' decimalDigit+ exponent? |
4116 * | 4040 * |
4117 * exponent ::= | 4041 * exponent ::= |
4118 * ('e' | 'E') ('+' | '-')? decimalDigit+ | 4042 * ('e' | 'E') ('+' | '-')? decimalDigit+ |
4119 * </pre> | 4043 * </pre> |
4120 * | |
4121 * @coverage dart.engine.ast | |
4122 */ | 4044 */ |
4123 class DoubleLiteral extends Literal { | 4045 class DoubleLiteral extends Literal { |
4124 /** | 4046 /** |
4125 * The token representing the literal. | 4047 * The token representing the literal. |
4126 */ | 4048 */ |
4127 Token literal; | 4049 Token literal; |
4128 | 4050 |
4129 /** | 4051 /** |
4130 * The value of the literal. | 4052 * The value of the literal. |
4131 */ | 4053 */ |
4132 double value = 0.0; | 4054 double value = 0.0; |
4133 | 4055 |
4134 /** | 4056 /** |
4135 * Initialize a newly created floating point literal. | 4057 * Initialize a newly created floating point literal. |
4136 * | 4058 * |
4137 * @param literal the token representing the literal | 4059 * @param literal the token representing the literal |
4138 * @param value the value of the literal | 4060 * @param value the value of the literal |
4139 */ | 4061 */ |
4140 DoubleLiteral(this.literal, this.value); | 4062 DoubleLiteral(this.literal, this.value); |
4141 | 4063 |
4142 accept(ASTVisitor visitor) => visitor.visitDoubleLiteral(this); | 4064 accept(AstVisitor visitor) => visitor.visitDoubleLiteral(this); |
4143 | 4065 |
4144 Token get beginToken => literal; | 4066 Token get beginToken => literal; |
4145 | 4067 |
4146 Token get endToken => literal; | 4068 Token get endToken => literal; |
4147 | 4069 |
4148 void visitChildren(ASTVisitor visitor) { | 4070 void visitChildren(AstVisitor visitor) { |
4149 } | 4071 } |
4150 } | 4072 } |
4151 | 4073 |
4152 /** | 4074 /** |
4153 * Instances of the class `EmptyFunctionBody` represent an empty function body,
which can only | 4075 * Instances of the class `EmptyFunctionBody` represent an empty function body,
which can only |
4154 * appear in constructors or abstract methods. | 4076 * appear in constructors or abstract methods. |
4155 * | 4077 * |
4156 * <pre> | 4078 * <pre> |
4157 * emptyFunctionBody ::= | 4079 * emptyFunctionBody ::= |
4158 * ';' | 4080 * ';' |
4159 * </pre> | 4081 * </pre> |
4160 * | |
4161 * @coverage dart.engine.ast | |
4162 */ | 4082 */ |
4163 class EmptyFunctionBody extends FunctionBody { | 4083 class EmptyFunctionBody extends FunctionBody { |
4164 /** | 4084 /** |
4165 * The token representing the semicolon that marks the end of the function bod
y. | 4085 * The token representing the semicolon that marks the end of the function bod
y. |
4166 */ | 4086 */ |
4167 Token semicolon; | 4087 Token semicolon; |
4168 | 4088 |
4169 /** | 4089 /** |
4170 * Initialize a newly created function body. | 4090 * Initialize a newly created function body. |
4171 * | 4091 * |
4172 * @param semicolon the token representing the semicolon that marks the end of
the function body | 4092 * @param semicolon the token representing the semicolon that marks the end of
the function body |
4173 */ | 4093 */ |
4174 EmptyFunctionBody(this.semicolon); | 4094 EmptyFunctionBody(this.semicolon); |
4175 | 4095 |
4176 accept(ASTVisitor visitor) => visitor.visitEmptyFunctionBody(this); | 4096 accept(AstVisitor visitor) => visitor.visitEmptyFunctionBody(this); |
4177 | 4097 |
4178 Token get beginToken => semicolon; | 4098 Token get beginToken => semicolon; |
4179 | 4099 |
4180 Token get endToken => semicolon; | 4100 Token get endToken => semicolon; |
4181 | 4101 |
4182 void visitChildren(ASTVisitor visitor) { | 4102 void visitChildren(AstVisitor visitor) { |
4183 } | 4103 } |
4184 } | 4104 } |
4185 | 4105 |
4186 /** | 4106 /** |
4187 * Instances of the class `EmptyStatement` represent an empty statement. | 4107 * Instances of the class `EmptyStatement` represent an empty statement. |
4188 * | 4108 * |
4189 * <pre> | 4109 * <pre> |
4190 * emptyStatement ::= | 4110 * emptyStatement ::= |
4191 * ';' | 4111 * ';' |
4192 * </pre> | 4112 * </pre> |
4193 * | |
4194 * @coverage dart.engine.ast | |
4195 */ | 4113 */ |
4196 class EmptyStatement extends Statement { | 4114 class EmptyStatement extends Statement { |
4197 /** | 4115 /** |
4198 * The semicolon terminating the statement. | 4116 * The semicolon terminating the statement. |
4199 */ | 4117 */ |
4200 Token semicolon; | 4118 Token semicolon; |
4201 | 4119 |
4202 /** | 4120 /** |
4203 * Initialize a newly created empty statement. | 4121 * Initialize a newly created empty statement. |
4204 * | 4122 * |
4205 * @param semicolon the semicolon terminating the statement | 4123 * @param semicolon the semicolon terminating the statement |
4206 */ | 4124 */ |
4207 EmptyStatement(this.semicolon); | 4125 EmptyStatement(this.semicolon); |
4208 | 4126 |
4209 accept(ASTVisitor visitor) => visitor.visitEmptyStatement(this); | 4127 accept(AstVisitor visitor) => visitor.visitEmptyStatement(this); |
4210 | 4128 |
4211 Token get beginToken => semicolon; | 4129 Token get beginToken => semicolon; |
4212 | 4130 |
4213 Token get endToken => semicolon; | 4131 Token get endToken => semicolon; |
4214 | 4132 |
4215 void visitChildren(ASTVisitor visitor) { | 4133 void visitChildren(AstVisitor visitor) { |
4216 } | 4134 } |
4217 } | 4135 } |
4218 | 4136 |
4219 /** | 4137 /** |
4220 * Ephemeral identifiers are created as needed to mimic the presence of an empty
identifier. | 4138 * Ephemeral identifiers are created as needed to mimic the presence of an empty
identifier. |
4221 * | |
4222 * @coverage dart.engine.ast | |
4223 */ | 4139 */ |
4224 class EphemeralIdentifier extends SimpleIdentifier { | 4140 class EphemeralIdentifier extends SimpleIdentifier { |
4225 EphemeralIdentifier(ASTNode parent, int location) : super(new StringToken(Toke
nType.IDENTIFIER, "", location)) { | 4141 EphemeralIdentifier(AstNode parent, int location) : super(new StringToken(Toke
nType.IDENTIFIER, "", location)) { |
4226 parent.becomeParentOf(this); | 4142 parent.becomeParentOf(this); |
4227 } | 4143 } |
4228 } | 4144 } |
4229 | 4145 |
4230 /** | 4146 /** |
4231 * Instances of the class `ExportDirective` represent an export directive. | 4147 * Instances of the class `ExportDirective` represent an export directive. |
4232 * | 4148 * |
4233 * <pre> | 4149 * <pre> |
4234 * exportDirective ::= | 4150 * exportDirective ::= |
4235 * [Annotation] 'export' [StringLiteral] [Combinator]* ';' | 4151 * [Annotation] 'export' [StringLiteral] [Combinator]* ';' |
4236 * </pre> | 4152 * </pre> |
4237 * | |
4238 * @coverage dart.engine.ast | |
4239 */ | 4153 */ |
4240 class ExportDirective extends NamespaceDirective { | 4154 class ExportDirective extends NamespaceDirective { |
4241 /** | 4155 /** |
4242 * Initialize a newly created export directive. | 4156 * Initialize a newly created export directive. |
4243 * | 4157 * |
4244 * @param comment the documentation comment associated with this directive | 4158 * @param comment the documentation comment associated with this directive |
4245 * @param metadata the annotations associated with the directive | 4159 * @param metadata the annotations associated with the directive |
4246 * @param keyword the token representing the 'export' keyword | 4160 * @param keyword the token representing the 'export' keyword |
4247 * @param libraryUri the URI of the library being exported | 4161 * @param libraryUri the URI of the library being exported |
4248 * @param combinators the combinators used to control which names are exported | 4162 * @param combinators the combinators used to control which names are exported |
4249 * @param semicolon the semicolon terminating the directive | 4163 * @param semicolon the semicolon terminating the directive |
4250 */ | 4164 */ |
4251 ExportDirective(Comment comment, List<Annotation> metadata, Token keyword, Str
ingLiteral libraryUri, List<Combinator> combinators, Token semicolon) : super(co
mment, metadata, keyword, libraryUri, combinators, semicolon); | 4165 ExportDirective(Comment comment, List<Annotation> metadata, Token keyword, Str
ingLiteral libraryUri, List<Combinator> combinators, Token semicolon) : super(co
mment, metadata, keyword, libraryUri, combinators, semicolon); |
4252 | 4166 |
4253 accept(ASTVisitor visitor) => visitor.visitExportDirective(this); | 4167 accept(AstVisitor visitor) => visitor.visitExportDirective(this); |
4254 | 4168 |
4255 LibraryElement get uriElement { | 4169 LibraryElement get uriElement { |
4256 Element element = this.element; | 4170 Element element = this.element; |
4257 if (element is ExportElement) { | 4171 if (element is ExportElement) { |
4258 return element.exportedLibrary; | 4172 return element.exportedLibrary; |
4259 } | 4173 } |
4260 return null; | 4174 return null; |
4261 } | 4175 } |
4262 | 4176 |
4263 void visitChildren(ASTVisitor visitor) { | 4177 void visitChildren(AstVisitor visitor) { |
4264 super.visitChildren(visitor); | 4178 super.visitChildren(visitor); |
4265 combinators.accept(visitor); | 4179 combinators.accept(visitor); |
4266 } | 4180 } |
4267 } | 4181 } |
4268 | 4182 |
4269 /** | 4183 /** |
4270 * Instances of the class `Expression` defines the behavior common to nodes that
represent an | 4184 * Instances of the class `Expression` defines the behavior common to nodes that
represent an |
4271 * expression. | 4185 * expression. |
4272 * | 4186 * |
4273 * <pre> | 4187 * <pre> |
4274 * expression ::= | 4188 * expression ::= |
4275 * [AssignmentExpression] | 4189 * [AssignmentExpression] |
4276 * | [ConditionalExpression] cascadeSection* | 4190 * | [ConditionalExpression] cascadeSection* |
4277 * | [ThrowExpression] | 4191 * | [ThrowExpression] |
4278 * </pre> | 4192 * </pre> |
4279 * | |
4280 * @coverage dart.engine.ast | |
4281 */ | 4193 */ |
4282 abstract class Expression extends ASTNode { | 4194 abstract class Expression extends AstNode { |
4283 /** | 4195 /** |
4284 * An empty array of expressions. | 4196 * An empty array of expressions. |
4285 */ | 4197 */ |
4286 static List<Expression> EMPTY_ARRAY = new List<Expression>(0); | 4198 static List<Expression> EMPTY_ARRAY = new List<Expression>(0); |
4287 | 4199 |
4288 /** | 4200 /** |
4289 * The static type of this expression, or `null` if the AST structure has not
been resolved. | 4201 * The static type of this expression, or `null` if the AST structure has not
been resolved. |
4290 */ | 4202 */ |
4291 Type2 staticType; | 4203 Type2 staticType; |
4292 | 4204 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4346 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, | 4258 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, |
4347 * and the function being invoked is known based on propagated type informatio
n, and this | 4259 * and the function being invoked is known based on propagated type informatio
n, and this |
4348 * expression corresponds to one of the parameters of the function being invok
ed, then return the | 4260 * expression corresponds to one of the parameters of the function being invok
ed, then return the |
4349 * parameter element representing the parameter to which the value of this exp
ression will be | 4261 * parameter element representing the parameter to which the value of this exp
ression will be |
4350 * bound. Otherwise, return `null`. | 4262 * bound. Otherwise, return `null`. |
4351 * | 4263 * |
4352 * @return the parameter element representing the parameter to which the value
of this expression | 4264 * @return the parameter element representing the parameter to which the value
of this expression |
4353 * will be bound | 4265 * will be bound |
4354 */ | 4266 */ |
4355 ParameterElement get propagatedParameterElement { | 4267 ParameterElement get propagatedParameterElement { |
4356 ASTNode parent = this.parent; | 4268 AstNode parent = this.parent; |
4357 if (parent is ArgumentList) { | 4269 if (parent is ArgumentList) { |
4358 return parent.getPropagatedParameterElementFor(this); | 4270 return parent.getPropagatedParameterElementFor(this); |
4359 } else if (parent is IndexExpression) { | 4271 } else if (parent is IndexExpression) { |
4360 IndexExpression indexExpression = parent; | 4272 IndexExpression indexExpression = parent; |
4361 if (identical(indexExpression.index, this)) { | 4273 if (identical(indexExpression.index, this)) { |
4362 return indexExpression.propagatedParameterElementForIndex; | 4274 return indexExpression.propagatedParameterElementForIndex; |
4363 } | 4275 } |
4364 } else if (parent is BinaryExpression) { | 4276 } else if (parent is BinaryExpression) { |
4365 BinaryExpression binaryExpression = parent; | 4277 BinaryExpression binaryExpression = parent; |
4366 if (identical(binaryExpression.rightOperand, this)) { | 4278 if (identical(binaryExpression.rightOperand, this)) { |
(...skipping 16 matching lines...) Expand all Loading... |
4383 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, | 4295 * If this expression is an argument to an invocation, and the AST structure h
as been resolved, |
4384 * and the function being invoked is known based on static type information, a
nd this expression | 4296 * and the function being invoked is known based on static type information, a
nd this expression |
4385 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter | 4297 * corresponds to one of the parameters of the function being invoked, then re
turn the parameter |
4386 * element representing the parameter to which the value of this expression wi
ll be bound. | 4298 * element representing the parameter to which the value of this expression wi
ll be bound. |
4387 * Otherwise, return `null`. | 4299 * Otherwise, return `null`. |
4388 * | 4300 * |
4389 * @return the parameter element representing the parameter to which the value
of this expression | 4301 * @return the parameter element representing the parameter to which the value
of this expression |
4390 * will be bound | 4302 * will be bound |
4391 */ | 4303 */ |
4392 ParameterElement get staticParameterElement { | 4304 ParameterElement get staticParameterElement { |
4393 ASTNode parent = this.parent; | 4305 AstNode parent = this.parent; |
4394 if (parent is ArgumentList) { | 4306 if (parent is ArgumentList) { |
4395 return parent.getStaticParameterElementFor(this); | 4307 return parent.getStaticParameterElementFor(this); |
4396 } else if (parent is IndexExpression) { | 4308 } else if (parent is IndexExpression) { |
4397 IndexExpression indexExpression = parent; | 4309 IndexExpression indexExpression = parent; |
4398 if (identical(indexExpression.index, this)) { | 4310 if (identical(indexExpression.index, this)) { |
4399 return indexExpression.staticParameterElementForIndex; | 4311 return indexExpression.staticParameterElementForIndex; |
4400 } | 4312 } |
4401 } else if (parent is BinaryExpression) { | 4313 } else if (parent is BinaryExpression) { |
4402 BinaryExpression binaryExpression = parent; | 4314 BinaryExpression binaryExpression = parent; |
4403 if (identical(binaryExpression.rightOperand, this)) { | 4315 if (identical(binaryExpression.rightOperand, this)) { |
(...skipping 22 matching lines...) Expand all Loading... |
4426 } | 4338 } |
4427 | 4339 |
4428 /** | 4340 /** |
4429 * Instances of the class `ExpressionFunctionBody` represent a function body con
sisting of a | 4341 * Instances of the class `ExpressionFunctionBody` represent a function body con
sisting of a |
4430 * single expression. | 4342 * single expression. |
4431 * | 4343 * |
4432 * <pre> | 4344 * <pre> |
4433 * expressionFunctionBody ::= | 4345 * expressionFunctionBody ::= |
4434 * '=>' [Expression] ';' | 4346 * '=>' [Expression] ';' |
4435 * </pre> | 4347 * </pre> |
4436 * | |
4437 * @coverage dart.engine.ast | |
4438 */ | 4348 */ |
4439 class ExpressionFunctionBody extends FunctionBody { | 4349 class ExpressionFunctionBody extends FunctionBody { |
4440 /** | 4350 /** |
4441 * The token introducing the expression that represents the body of the functi
on. | 4351 * The token introducing the expression that represents the body of the functi
on. |
4442 */ | 4352 */ |
4443 Token functionDefinition; | 4353 Token functionDefinition; |
4444 | 4354 |
4445 /** | 4355 /** |
4446 * The expression representing the body of the function. | 4356 * The expression representing the body of the function. |
4447 */ | 4357 */ |
4448 Expression _expression; | 4358 Expression _expression; |
4449 | 4359 |
4450 /** | 4360 /** |
4451 * The semicolon terminating the statement. | 4361 * The semicolon terminating the statement. |
4452 */ | 4362 */ |
4453 Token semicolon; | 4363 Token semicolon; |
4454 | 4364 |
4455 /** | 4365 /** |
4456 * Initialize a newly created function body consisting of a block of statement
s. | 4366 * Initialize a newly created function body consisting of a block of statement
s. |
4457 * | 4367 * |
4458 * @param functionDefinition the token introducing the expression that represe
nts the body of the | 4368 * @param functionDefinition the token introducing the expression that represe
nts the body of the |
4459 * function | 4369 * function |
4460 * @param expression the expression representing the body of the function | 4370 * @param expression the expression representing the body of the function |
4461 * @param semicolon the semicolon terminating the statement | 4371 * @param semicolon the semicolon terminating the statement |
4462 */ | 4372 */ |
4463 ExpressionFunctionBody(this.functionDefinition, Expression expression, this.se
micolon) { | 4373 ExpressionFunctionBody(this.functionDefinition, Expression expression, this.se
micolon) { |
4464 this._expression = becomeParentOf(expression); | 4374 this._expression = becomeParentOf(expression); |
4465 } | 4375 } |
4466 | 4376 |
4467 accept(ASTVisitor visitor) => visitor.visitExpressionFunctionBody(this); | 4377 accept(AstVisitor visitor) => visitor.visitExpressionFunctionBody(this); |
4468 | 4378 |
4469 Token get beginToken => functionDefinition; | 4379 Token get beginToken => functionDefinition; |
4470 | 4380 |
4471 Token get endToken { | 4381 Token get endToken { |
4472 if (semicolon != null) { | 4382 if (semicolon != null) { |
4473 return semicolon; | 4383 return semicolon; |
4474 } | 4384 } |
4475 return _expression.endToken; | 4385 return _expression.endToken; |
4476 } | 4386 } |
4477 | 4387 |
4478 /** | 4388 /** |
4479 * Return the expression representing the body of the function. | 4389 * Return the expression representing the body of the function. |
4480 * | 4390 * |
4481 * @return the expression representing the body of the function | 4391 * @return the expression representing the body of the function |
4482 */ | 4392 */ |
4483 Expression get expression => _expression; | 4393 Expression get expression => _expression; |
4484 | 4394 |
4485 /** | 4395 /** |
4486 * Set the expression representing the body of the function to the given expre
ssion. | 4396 * Set the expression representing the body of the function to the given expre
ssion. |
4487 * | 4397 * |
4488 * @param expression the expression representing the body of the function | 4398 * @param expression the expression representing the body of the function |
4489 */ | 4399 */ |
4490 void set expression(Expression expression) { | 4400 void set expression(Expression expression) { |
4491 this._expression = becomeParentOf(expression); | 4401 this._expression = becomeParentOf(expression); |
4492 } | 4402 } |
4493 | 4403 |
4494 void visitChildren(ASTVisitor visitor) { | 4404 void visitChildren(AstVisitor visitor) { |
4495 safelyVisitChild(_expression, visitor); | 4405 safelyVisitChild(_expression, visitor); |
4496 } | 4406 } |
4497 } | 4407 } |
4498 | 4408 |
4499 /** | 4409 /** |
4500 * Instances of the class `ExpressionStatement` wrap an expression as a statemen
t. | 4410 * Instances of the class `ExpressionStatement` wrap an expression as a statemen
t. |
4501 * | 4411 * |
4502 * <pre> | 4412 * <pre> |
4503 * expressionStatement ::= | 4413 * expressionStatement ::= |
4504 * [Expression]? ';' | 4414 * [Expression]? ';' |
4505 * </pre> | 4415 * </pre> |
4506 * | |
4507 * @coverage dart.engine.ast | |
4508 */ | 4416 */ |
4509 class ExpressionStatement extends Statement { | 4417 class ExpressionStatement extends Statement { |
4510 /** | 4418 /** |
4511 * The expression that comprises the statement. | 4419 * The expression that comprises the statement. |
4512 */ | 4420 */ |
4513 Expression _expression; | 4421 Expression _expression; |
4514 | 4422 |
4515 /** | 4423 /** |
4516 * The semicolon terminating the statement, or `null` if the expression is a f
unction | 4424 * The semicolon terminating the statement, or `null` if the expression is a f
unction |
4517 * expression and therefore isn't followed by a semicolon. | 4425 * expression and therefore isn't followed by a semicolon. |
4518 */ | 4426 */ |
4519 Token semicolon; | 4427 Token semicolon; |
4520 | 4428 |
4521 /** | 4429 /** |
4522 * Initialize a newly created expression statement. | 4430 * Initialize a newly created expression statement. |
4523 * | 4431 * |
4524 * @param expression the expression that comprises the statement | 4432 * @param expression the expression that comprises the statement |
4525 * @param semicolon the semicolon terminating the statement | 4433 * @param semicolon the semicolon terminating the statement |
4526 */ | 4434 */ |
4527 ExpressionStatement(Expression expression, this.semicolon) { | 4435 ExpressionStatement(Expression expression, this.semicolon) { |
4528 this._expression = becomeParentOf(expression); | 4436 this._expression = becomeParentOf(expression); |
4529 } | 4437 } |
4530 | 4438 |
4531 accept(ASTVisitor visitor) => visitor.visitExpressionStatement(this); | 4439 accept(AstVisitor visitor) => visitor.visitExpressionStatement(this); |
4532 | 4440 |
4533 Token get beginToken => _expression.beginToken; | 4441 Token get beginToken => _expression.beginToken; |
4534 | 4442 |
4535 Token get endToken { | 4443 Token get endToken { |
4536 if (semicolon != null) { | 4444 if (semicolon != null) { |
4537 return semicolon; | 4445 return semicolon; |
4538 } | 4446 } |
4539 return _expression.endToken; | 4447 return _expression.endToken; |
4540 } | 4448 } |
4541 | 4449 |
4542 /** | 4450 /** |
4543 * Return the expression that comprises the statement. | 4451 * Return the expression that comprises the statement. |
4544 * | 4452 * |
4545 * @return the expression that comprises the statement | 4453 * @return the expression that comprises the statement |
4546 */ | 4454 */ |
4547 Expression get expression => _expression; | 4455 Expression get expression => _expression; |
4548 | 4456 |
4549 bool get isSynthetic => _expression.isSynthetic && semicolon.isSynthetic; | 4457 bool get isSynthetic => _expression.isSynthetic && semicolon.isSynthetic; |
4550 | 4458 |
4551 /** | 4459 /** |
4552 * Set the expression that comprises the statement to the given expression. | 4460 * Set the expression that comprises the statement to the given expression. |
4553 * | 4461 * |
4554 * @param expression the expression that comprises the statement | 4462 * @param expression the expression that comprises the statement |
4555 */ | 4463 */ |
4556 void set expression(Expression expression) { | 4464 void set expression(Expression expression) { |
4557 this._expression = becomeParentOf(expression); | 4465 this._expression = becomeParentOf(expression); |
4558 } | 4466 } |
4559 | 4467 |
4560 void visitChildren(ASTVisitor visitor) { | 4468 void visitChildren(AstVisitor visitor) { |
4561 safelyVisitChild(_expression, visitor); | 4469 safelyVisitChild(_expression, visitor); |
4562 } | 4470 } |
4563 } | 4471 } |
4564 | 4472 |
4565 /** | 4473 /** |
4566 * Instances of the class `ExtendsClause` represent the "extends" clause in a cl
ass | 4474 * Instances of the class `ExtendsClause` represent the "extends" clause in a cl
ass |
4567 * declaration. | 4475 * declaration. |
4568 * | 4476 * |
4569 * <pre> | 4477 * <pre> |
4570 * extendsClause ::= | 4478 * extendsClause ::= |
4571 * 'extends' [TypeName] | 4479 * 'extends' [TypeName] |
4572 * </pre> | 4480 * </pre> |
4573 * | |
4574 * @coverage dart.engine.ast | |
4575 */ | 4481 */ |
4576 class ExtendsClause extends ASTNode { | 4482 class ExtendsClause extends AstNode { |
4577 /** | 4483 /** |
4578 * The token representing the 'extends' keyword. | 4484 * The token representing the 'extends' keyword. |
4579 */ | 4485 */ |
4580 Token keyword; | 4486 Token keyword; |
4581 | 4487 |
4582 /** | 4488 /** |
4583 * The name of the class that is being extended. | 4489 * The name of the class that is being extended. |
4584 */ | 4490 */ |
4585 TypeName _superclass; | 4491 TypeName _superclass; |
4586 | 4492 |
4587 /** | 4493 /** |
4588 * Initialize a newly created extends clause. | 4494 * Initialize a newly created extends clause. |
4589 * | 4495 * |
4590 * @param keyword the token representing the 'extends' keyword | 4496 * @param keyword the token representing the 'extends' keyword |
4591 * @param superclass the name of the class that is being extended | 4497 * @param superclass the name of the class that is being extended |
4592 */ | 4498 */ |
4593 ExtendsClause(this.keyword, TypeName superclass) { | 4499 ExtendsClause(this.keyword, TypeName superclass) { |
4594 this._superclass = becomeParentOf(superclass); | 4500 this._superclass = becomeParentOf(superclass); |
4595 } | 4501 } |
4596 | 4502 |
4597 accept(ASTVisitor visitor) => visitor.visitExtendsClause(this); | 4503 accept(AstVisitor visitor) => visitor.visitExtendsClause(this); |
4598 | 4504 |
4599 Token get beginToken => keyword; | 4505 Token get beginToken => keyword; |
4600 | 4506 |
4601 Token get endToken => _superclass.endToken; | 4507 Token get endToken => _superclass.endToken; |
4602 | 4508 |
4603 /** | 4509 /** |
4604 * Return the name of the class that is being extended. | 4510 * Return the name of the class that is being extended. |
4605 * | 4511 * |
4606 * @return the name of the class that is being extended | 4512 * @return the name of the class that is being extended |
4607 */ | 4513 */ |
4608 TypeName get superclass => _superclass; | 4514 TypeName get superclass => _superclass; |
4609 | 4515 |
4610 /** | 4516 /** |
4611 * Set the name of the class that is being extended to the given name. | 4517 * Set the name of the class that is being extended to the given name. |
4612 * | 4518 * |
4613 * @param name the name of the class that is being extended | 4519 * @param name the name of the class that is being extended |
4614 */ | 4520 */ |
4615 void set superclass(TypeName name) { | 4521 void set superclass(TypeName name) { |
4616 _superclass = becomeParentOf(name); | 4522 _superclass = becomeParentOf(name); |
4617 } | 4523 } |
4618 | 4524 |
4619 void visitChildren(ASTVisitor visitor) { | 4525 void visitChildren(AstVisitor visitor) { |
4620 safelyVisitChild(_superclass, visitor); | 4526 safelyVisitChild(_superclass, visitor); |
4621 } | 4527 } |
4622 } | 4528 } |
4623 | 4529 |
4624 /** | 4530 /** |
4625 * Instances of the class `FieldDeclaration` represent the declaration of one or
more fields | 4531 * Instances of the class `FieldDeclaration` represent the declaration of one or
more fields |
4626 * of the same type. | 4532 * of the same type. |
4627 * | 4533 * |
4628 * <pre> | 4534 * <pre> |
4629 * fieldDeclaration ::= | 4535 * fieldDeclaration ::= |
4630 * 'static'? [VariableDeclarationList] ';' | 4536 * 'static'? [VariableDeclarationList] ';' |
4631 * </pre> | 4537 * </pre> |
4632 * | |
4633 * @coverage dart.engine.ast | |
4634 */ | 4538 */ |
4635 class FieldDeclaration extends ClassMember { | 4539 class FieldDeclaration extends ClassMember { |
4636 /** | 4540 /** |
4637 * The token representing the 'static' keyword, or `null` if the fields are no
t static. | 4541 * The token representing the 'static' keyword, or `null` if the fields are no
t static. |
4638 */ | 4542 */ |
4639 Token staticKeyword; | 4543 Token staticKeyword; |
4640 | 4544 |
4641 /** | 4545 /** |
4642 * The fields being declared. | 4546 * The fields being declared. |
4643 */ | 4547 */ |
(...skipping 10 matching lines...) Expand all Loading... |
4654 * @param comment the documentation comment associated with this field | 4558 * @param comment the documentation comment associated with this field |
4655 * @param metadata the annotations associated with this field | 4559 * @param metadata the annotations associated with this field |
4656 * @param staticKeyword the token representing the 'static' keyword | 4560 * @param staticKeyword the token representing the 'static' keyword |
4657 * @param fieldList the fields being declared | 4561 * @param fieldList the fields being declared |
4658 * @param semicolon the semicolon terminating the declaration | 4562 * @param semicolon the semicolon terminating the declaration |
4659 */ | 4563 */ |
4660 FieldDeclaration(Comment comment, List<Annotation> metadata, this.staticKeywor
d, VariableDeclarationList fieldList, this.semicolon) : super(comment, metadata)
{ | 4564 FieldDeclaration(Comment comment, List<Annotation> metadata, this.staticKeywor
d, VariableDeclarationList fieldList, this.semicolon) : super(comment, metadata)
{ |
4661 this._fieldList = becomeParentOf(fieldList); | 4565 this._fieldList = becomeParentOf(fieldList); |
4662 } | 4566 } |
4663 | 4567 |
4664 accept(ASTVisitor visitor) => visitor.visitFieldDeclaration(this); | 4568 accept(AstVisitor visitor) => visitor.visitFieldDeclaration(this); |
4665 | 4569 |
4666 Element get element => null; | 4570 Element get element => null; |
4667 | 4571 |
4668 Token get endToken => semicolon; | 4572 Token get endToken => semicolon; |
4669 | 4573 |
4670 /** | 4574 /** |
4671 * Return the fields being declared. | 4575 * Return the fields being declared. |
4672 * | 4576 * |
4673 * @return the fields being declared | 4577 * @return the fields being declared |
4674 */ | 4578 */ |
4675 VariableDeclarationList get fields => _fieldList; | 4579 VariableDeclarationList get fields => _fieldList; |
4676 | 4580 |
4677 /** | 4581 /** |
4678 * Return `true` if the fields are static. | 4582 * Return `true` if the fields are static. |
4679 * | 4583 * |
4680 * @return `true` if the fields are declared to be static | 4584 * @return `true` if the fields are declared to be static |
4681 */ | 4585 */ |
4682 bool get isStatic => staticKeyword != null; | 4586 bool get isStatic => staticKeyword != null; |
4683 | 4587 |
4684 /** | 4588 /** |
4685 * Set the fields being declared to the given list of variables. | 4589 * Set the fields being declared to the given list of variables. |
4686 * | 4590 * |
4687 * @param fieldList the fields being declared | 4591 * @param fieldList the fields being declared |
4688 */ | 4592 */ |
4689 void set fields(VariableDeclarationList fieldList) { | 4593 void set fields(VariableDeclarationList fieldList) { |
4690 fieldList = becomeParentOf(fieldList); | 4594 fieldList = becomeParentOf(fieldList); |
4691 } | 4595 } |
4692 | 4596 |
4693 void visitChildren(ASTVisitor visitor) { | 4597 void visitChildren(AstVisitor visitor) { |
4694 super.visitChildren(visitor); | 4598 super.visitChildren(visitor); |
4695 safelyVisitChild(_fieldList, visitor); | 4599 safelyVisitChild(_fieldList, visitor); |
4696 } | 4600 } |
4697 | 4601 |
4698 Token get firstTokenAfterCommentAndMetadata { | 4602 Token get firstTokenAfterCommentAndMetadata { |
4699 if (staticKeyword != null) { | 4603 if (staticKeyword != null) { |
4700 return staticKeyword; | 4604 return staticKeyword; |
4701 } | 4605 } |
4702 return _fieldList.beginToken; | 4606 return _fieldList.beginToken; |
4703 } | 4607 } |
4704 } | 4608 } |
4705 | 4609 |
4706 /** | 4610 /** |
4707 * Instances of the class `FieldFormalParameter` represent a field formal parame
ter. | 4611 * Instances of the class `FieldFormalParameter` represent a field formal parame
ter. |
4708 * | 4612 * |
4709 * <pre> | 4613 * <pre> |
4710 * fieldFormalParameter ::= | 4614 * fieldFormalParameter ::= |
4711 * ('final' [TypeName] | 'const' [TypeName] | 'var' | [TypeName])? 'this' '.
' [SimpleIdentifier] [FormalParameterList]? | 4615 * ('final' [TypeName] | 'const' [TypeName] | 'var' | [TypeName])? 'this' '.
' [SimpleIdentifier] [FormalParameterList]? |
4712 * </pre> | 4616 * </pre> |
4713 * | |
4714 * @coverage dart.engine.ast | |
4715 */ | 4617 */ |
4716 class FieldFormalParameter extends NormalFormalParameter { | 4618 class FieldFormalParameter extends NormalFormalParameter { |
4717 /** | 4619 /** |
4718 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no | 4620 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no |
4719 * keyword was used. | 4621 * keyword was used. |
4720 */ | 4622 */ |
4721 Token keyword; | 4623 Token keyword; |
4722 | 4624 |
4723 /** | 4625 /** |
4724 * The name of the declared type of the parameter, or `null` if the parameter
does not have | 4626 * The name of the declared type of the parameter, or `null` if the parameter
does not have |
(...skipping 28 matching lines...) Expand all Loading... |
4753 * @param period the token representing the period | 4655 * @param period the token representing the period |
4754 * @param identifier the name of the parameter being declared | 4656 * @param identifier the name of the parameter being declared |
4755 * @param parameters the parameters of the function-typed parameter, or `null`
if this is | 4657 * @param parameters the parameters of the function-typed parameter, or `null`
if this is |
4756 * not a function-typed field formal parameter | 4658 * not a function-typed field formal parameter |
4757 */ | 4659 */ |
4758 FieldFormalParameter(Comment comment, List<Annotation> metadata, this.keyword,
TypeName type, this.thisToken, this.period, SimpleIdentifier identifier, Formal
ParameterList parameters) : super(comment, metadata, identifier) { | 4660 FieldFormalParameter(Comment comment, List<Annotation> metadata, this.keyword,
TypeName type, this.thisToken, this.period, SimpleIdentifier identifier, Formal
ParameterList parameters) : super(comment, metadata, identifier) { |
4759 this._type = becomeParentOf(type); | 4661 this._type = becomeParentOf(type); |
4760 this._parameters = becomeParentOf(parameters); | 4662 this._parameters = becomeParentOf(parameters); |
4761 } | 4663 } |
4762 | 4664 |
4763 accept(ASTVisitor visitor) => visitor.visitFieldFormalParameter(this); | 4665 accept(AstVisitor visitor) => visitor.visitFieldFormalParameter(this); |
4764 | 4666 |
4765 Token get beginToken { | 4667 Token get beginToken { |
4766 if (keyword != null) { | 4668 if (keyword != null) { |
4767 return keyword; | 4669 return keyword; |
4768 } else if (_type != null) { | 4670 } else if (_type != null) { |
4769 return _type.beginToken; | 4671 return _type.beginToken; |
4770 } | 4672 } |
4771 return thisToken; | 4673 return thisToken; |
4772 } | 4674 } |
4773 | 4675 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4805 | 4707 |
4806 /** | 4708 /** |
4807 * Set the name of the declared type of the parameter to the given type name. | 4709 * Set the name of the declared type of the parameter to the given type name. |
4808 * | 4710 * |
4809 * @param typeName the name of the declared type of the parameter | 4711 * @param typeName the name of the declared type of the parameter |
4810 */ | 4712 */ |
4811 void set type(TypeName typeName) { | 4713 void set type(TypeName typeName) { |
4812 _type = becomeParentOf(typeName); | 4714 _type = becomeParentOf(typeName); |
4813 } | 4715 } |
4814 | 4716 |
4815 void visitChildren(ASTVisitor visitor) { | 4717 void visitChildren(AstVisitor visitor) { |
4816 super.visitChildren(visitor); | 4718 super.visitChildren(visitor); |
4817 safelyVisitChild(_type, visitor); | 4719 safelyVisitChild(_type, visitor); |
4818 safelyVisitChild(identifier, visitor); | 4720 safelyVisitChild(identifier, visitor); |
4819 safelyVisitChild(_parameters, visitor); | 4721 safelyVisitChild(_parameters, visitor); |
4820 } | 4722 } |
4821 } | 4723 } |
4822 | 4724 |
4823 /** | 4725 /** |
4824 * Instances of the class `ForEachStatement` represent a for-each statement. | 4726 * Instances of the class `ForEachStatement` represent a for-each statement. |
4825 * | 4727 * |
4826 * <pre> | 4728 * <pre> |
4827 * forEachStatement ::= | 4729 * forEachStatement ::= |
4828 * 'for' '(' [DeclaredIdentifier] 'in' [Expression] ')' [Block] | 4730 * 'for' '(' [DeclaredIdentifier] 'in' [Expression] ')' [Block] |
4829 * | 'for' '(' [SimpleIdentifier] 'in' [Expression] ')' [Block] | 4731 * | 'for' '(' [SimpleIdentifier] 'in' [Expression] ')' [Block] |
4830 * </pre> | 4732 * </pre> |
4831 * | |
4832 * @coverage dart.engine.ast | |
4833 */ | 4733 */ |
4834 class ForEachStatement extends Statement { | 4734 class ForEachStatement extends Statement { |
4835 /** | 4735 /** |
4836 * The token representing the 'for' keyword. | 4736 * The token representing the 'for' keyword. |
4837 */ | 4737 */ |
4838 Token forKeyword; | 4738 Token forKeyword; |
4839 | 4739 |
4840 /** | 4740 /** |
4841 * The left parenthesis. | 4741 * The left parenthesis. |
4842 */ | 4742 */ |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4898 * @param iterator the expression evaluated to produce the iterator | 4798 * @param iterator the expression evaluated to produce the iterator |
4899 * @param rightParenthesis the right parenthesis | 4799 * @param rightParenthesis the right parenthesis |
4900 * @param body the body of the loop | 4800 * @param body the body of the loop |
4901 */ | 4801 */ |
4902 ForEachStatement.con2(this.forKeyword, this.leftParenthesis, SimpleIdentifier
identifier, this.inKeyword, Expression iterator, this.rightParenthesis, Statemen
t body) { | 4802 ForEachStatement.con2(this.forKeyword, this.leftParenthesis, SimpleIdentifier
identifier, this.inKeyword, Expression iterator, this.rightParenthesis, Statemen
t body) { |
4903 this._identifier = becomeParentOf(identifier); | 4803 this._identifier = becomeParentOf(identifier); |
4904 this._iterator = becomeParentOf(iterator); | 4804 this._iterator = becomeParentOf(iterator); |
4905 this._body = becomeParentOf(body); | 4805 this._body = becomeParentOf(body); |
4906 } | 4806 } |
4907 | 4807 |
4908 accept(ASTVisitor visitor) => visitor.visitForEachStatement(this); | 4808 accept(AstVisitor visitor) => visitor.visitForEachStatement(this); |
4909 | 4809 |
4910 Token get beginToken => forKeyword; | 4810 Token get beginToken => forKeyword; |
4911 | 4811 |
4912 /** | 4812 /** |
4913 * Return the body of the loop. | 4813 * Return the body of the loop. |
4914 * | 4814 * |
4915 * @return the body of the loop | 4815 * @return the body of the loop |
4916 */ | 4816 */ |
4917 Statement get body => _body; | 4817 Statement get body => _body; |
4918 | 4818 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4969 | 4869 |
4970 /** | 4870 /** |
4971 * Set the declaration of the loop variable to the given variable. | 4871 * Set the declaration of the loop variable to the given variable. |
4972 * | 4872 * |
4973 * @param variable the declaration of the loop variable | 4873 * @param variable the declaration of the loop variable |
4974 */ | 4874 */ |
4975 void set loopVariable(DeclaredIdentifier variable) { | 4875 void set loopVariable(DeclaredIdentifier variable) { |
4976 _loopVariable = becomeParentOf(variable); | 4876 _loopVariable = becomeParentOf(variable); |
4977 } | 4877 } |
4978 | 4878 |
4979 void visitChildren(ASTVisitor visitor) { | 4879 void visitChildren(AstVisitor visitor) { |
4980 safelyVisitChild(_loopVariable, visitor); | 4880 safelyVisitChild(_loopVariable, visitor); |
4981 safelyVisitChild(_identifier, visitor); | 4881 safelyVisitChild(_identifier, visitor); |
4982 safelyVisitChild(_iterator, visitor); | 4882 safelyVisitChild(_iterator, visitor); |
4983 safelyVisitChild(_body, visitor); | 4883 safelyVisitChild(_body, visitor); |
4984 } | 4884 } |
4985 } | 4885 } |
4986 | 4886 |
4987 /** | 4887 /** |
4988 * Instances of the class `ForStatement` represent a for statement. | 4888 * Instances of the class `ForStatement` represent a for statement. |
4989 * | 4889 * |
4990 * <pre> | 4890 * <pre> |
4991 * forStatement ::= | 4891 * forStatement ::= |
4992 * 'for' '(' forLoopParts ')' [Statement] | 4892 * 'for' '(' forLoopParts ')' [Statement] |
4993 * | 4893 * |
4994 * forLoopParts ::= | 4894 * forLoopParts ::= |
4995 * forInitializerStatement ';' [Expression]? ';' [Expression]? | 4895 * forInitializerStatement ';' [Expression]? ';' [Expression]? |
4996 * | 4896 * |
4997 * forInitializerStatement ::= | 4897 * forInitializerStatement ::= |
4998 * [DefaultFormalParameter] | 4898 * [DefaultFormalParameter] |
4999 * | [Expression]? | 4899 * | [Expression]? |
5000 * </pre> | 4900 * </pre> |
5001 * | |
5002 * @coverage dart.engine.ast | |
5003 */ | 4901 */ |
5004 class ForStatement extends Statement { | 4902 class ForStatement extends Statement { |
5005 /** | 4903 /** |
5006 * The token representing the 'for' keyword. | 4904 * The token representing the 'for' keyword. |
5007 */ | 4905 */ |
5008 Token forKeyword; | 4906 Token forKeyword; |
5009 | 4907 |
5010 /** | 4908 /** |
5011 * The left parenthesis. | 4909 * The left parenthesis. |
5012 */ | 4910 */ |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5073 */ | 4971 */ |
5074 ForStatement(this.forKeyword, this.leftParenthesis, VariableDeclarationList va
riableList, Expression initialization, this.leftSeparator, Expression condition,
this.rightSeparator, List<Expression> updaters, this.rightParenthesis, Statemen
t body) { | 4972 ForStatement(this.forKeyword, this.leftParenthesis, VariableDeclarationList va
riableList, Expression initialization, this.leftSeparator, Expression condition,
this.rightSeparator, List<Expression> updaters, this.rightParenthesis, Statemen
t body) { |
5075 this._updaters = new NodeList<Expression>(this); | 4973 this._updaters = new NodeList<Expression>(this); |
5076 this._variableList = becomeParentOf(variableList); | 4974 this._variableList = becomeParentOf(variableList); |
5077 this._initialization = becomeParentOf(initialization); | 4975 this._initialization = becomeParentOf(initialization); |
5078 this._condition = becomeParentOf(condition); | 4976 this._condition = becomeParentOf(condition); |
5079 this._updaters.addAll(updaters); | 4977 this._updaters.addAll(updaters); |
5080 this._body = becomeParentOf(body); | 4978 this._body = becomeParentOf(body); |
5081 } | 4979 } |
5082 | 4980 |
5083 accept(ASTVisitor visitor) => visitor.visitForStatement(this); | 4981 accept(AstVisitor visitor) => visitor.visitForStatement(this); |
5084 | 4982 |
5085 Token get beginToken => forKeyword; | 4983 Token get beginToken => forKeyword; |
5086 | 4984 |
5087 /** | 4985 /** |
5088 * Return the body of the loop. | 4986 * Return the body of the loop. |
5089 * | 4987 * |
5090 * @return the body of the loop | 4988 * @return the body of the loop |
5091 */ | 4989 */ |
5092 Statement get body => _body; | 4990 Statement get body => _body; |
5093 | 4991 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5151 | 5049 |
5152 /** | 5050 /** |
5153 * Set the declaration of the loop variables to the given parameter. | 5051 * Set the declaration of the loop variables to the given parameter. |
5154 * | 5052 * |
5155 * @param variableList the declaration of the loop variables | 5053 * @param variableList the declaration of the loop variables |
5156 */ | 5054 */ |
5157 void set variables(VariableDeclarationList variableList) { | 5055 void set variables(VariableDeclarationList variableList) { |
5158 variableList = becomeParentOf(variableList); | 5056 variableList = becomeParentOf(variableList); |
5159 } | 5057 } |
5160 | 5058 |
5161 void visitChildren(ASTVisitor visitor) { | 5059 void visitChildren(AstVisitor visitor) { |
5162 safelyVisitChild(_variableList, visitor); | 5060 safelyVisitChild(_variableList, visitor); |
5163 safelyVisitChild(_initialization, visitor); | 5061 safelyVisitChild(_initialization, visitor); |
5164 safelyVisitChild(_condition, visitor); | 5062 safelyVisitChild(_condition, visitor); |
5165 _updaters.accept(visitor); | 5063 _updaters.accept(visitor); |
5166 safelyVisitChild(_body, visitor); | 5064 safelyVisitChild(_body, visitor); |
5167 } | 5065 } |
5168 } | 5066 } |
5169 | 5067 |
5170 /** | 5068 /** |
5171 * The abstract class `FormalParameter` defines the behavior of objects represen
ting a | 5069 * The abstract class `FormalParameter` defines the behavior of objects represen
ting a |
5172 * parameter to a function. | 5070 * parameter to a function. |
5173 * | 5071 * |
5174 * <pre> | 5072 * <pre> |
5175 * formalParameter ::= | 5073 * formalParameter ::= |
5176 * [NormalFormalParameter] | 5074 * [NormalFormalParameter] |
5177 * | [DefaultFormalParameter] | 5075 * | [DefaultFormalParameter] |
5178 * | [DefaultFormalParameter] | 5076 * | [DefaultFormalParameter] |
5179 * </pre> | 5077 * </pre> |
5180 * | |
5181 * @coverage dart.engine.ast | |
5182 */ | 5078 */ |
5183 abstract class FormalParameter extends ASTNode { | 5079 abstract class FormalParameter extends AstNode { |
5184 /** | 5080 /** |
5185 * Return the element representing this parameter, or `null` if this parameter
has not been | 5081 * Return the element representing this parameter, or `null` if this parameter
has not been |
5186 * resolved. | 5082 * resolved. |
5187 * | 5083 * |
5188 * @return the element representing this parameter | 5084 * @return the element representing this parameter |
5189 */ | 5085 */ |
5190 ParameterElement get element { | 5086 ParameterElement get element { |
5191 SimpleIdentifier identifier = this.identifier; | 5087 SimpleIdentifier identifier = this.identifier; |
5192 if (identifier == null) { | 5088 if (identifier == null) { |
5193 return null; | 5089 return null; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5247 * optionalFormalParameters ::= | 5143 * optionalFormalParameters ::= |
5248 * optionalPositionalFormalParameters | 5144 * optionalPositionalFormalParameters |
5249 * | namedFormalParameters | 5145 * | namedFormalParameters |
5250 * | 5146 * |
5251 * optionalPositionalFormalParameters ::= | 5147 * optionalPositionalFormalParameters ::= |
5252 * '[' [DefaultFormalParameter] (',' [DefaultFormalParameter])* ']' | 5148 * '[' [DefaultFormalParameter] (',' [DefaultFormalParameter])* ']' |
5253 * | 5149 * |
5254 * namedFormalParameters ::= | 5150 * namedFormalParameters ::= |
5255 * '{' [DefaultFormalParameter] (',' [DefaultFormalParameter])* '}' | 5151 * '{' [DefaultFormalParameter] (',' [DefaultFormalParameter])* '}' |
5256 * </pre> | 5152 * </pre> |
5257 * | |
5258 * @coverage dart.engine.ast | |
5259 */ | 5153 */ |
5260 class FormalParameterList extends ASTNode { | 5154 class FormalParameterList extends AstNode { |
5261 /** | 5155 /** |
5262 * The left parenthesis. | 5156 * The left parenthesis. |
5263 */ | 5157 */ |
5264 Token _leftParenthesis; | 5158 Token _leftParenthesis; |
5265 | 5159 |
5266 /** | 5160 /** |
5267 * The parameters associated with the method. | 5161 * The parameters associated with the method. |
5268 */ | 5162 */ |
5269 NodeList<FormalParameter> _parameters; | 5163 NodeList<FormalParameter> _parameters; |
5270 | 5164 |
(...skipping 25 matching lines...) Expand all Loading... |
5296 */ | 5190 */ |
5297 FormalParameterList(Token leftParenthesis, List<FormalParameter> parameters, T
oken leftDelimiter, Token rightDelimiter, Token rightParenthesis) { | 5191 FormalParameterList(Token leftParenthesis, List<FormalParameter> parameters, T
oken leftDelimiter, Token rightDelimiter, Token rightParenthesis) { |
5298 this._parameters = new NodeList<FormalParameter>(this); | 5192 this._parameters = new NodeList<FormalParameter>(this); |
5299 this._leftParenthesis = leftParenthesis; | 5193 this._leftParenthesis = leftParenthesis; |
5300 this._parameters.addAll(parameters); | 5194 this._parameters.addAll(parameters); |
5301 this._leftDelimiter = leftDelimiter; | 5195 this._leftDelimiter = leftDelimiter; |
5302 this._rightDelimiter = rightDelimiter; | 5196 this._rightDelimiter = rightDelimiter; |
5303 this._rightParenthesis = rightParenthesis; | 5197 this._rightParenthesis = rightParenthesis; |
5304 } | 5198 } |
5305 | 5199 |
5306 accept(ASTVisitor visitor) => visitor.visitFormalParameterList(this); | 5200 accept(AstVisitor visitor) => visitor.visitFormalParameterList(this); |
5307 | 5201 |
5308 Token get beginToken => _leftParenthesis; | 5202 Token get beginToken => _leftParenthesis; |
5309 | 5203 |
5310 Token get endToken => _rightParenthesis; | 5204 Token get endToken => _rightParenthesis; |
5311 | 5205 |
5312 /** | 5206 /** |
5313 * Return the left square bracket ('[') or left curly brace ('{') introducing
the optional | 5207 * Return the left square bracket ('[') or left curly brace ('{') introducing
the optional |
5314 * parameters, or `null` if there are no optional parameters. | 5208 * parameters, or `null` if there are no optional parameters. |
5315 * | 5209 * |
5316 * @return the left square bracket ('[') or left curly brace ('{') introducing
the optional | 5210 * @return the left square bracket ('[') or left curly brace ('{') introducing
the optional |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5394 | 5288 |
5395 /** | 5289 /** |
5396 * Set the right parenthesis to the given token. | 5290 * Set the right parenthesis to the given token. |
5397 * | 5291 * |
5398 * @param parenthesis the right parenthesis | 5292 * @param parenthesis the right parenthesis |
5399 */ | 5293 */ |
5400 void set rightParenthesis(Token parenthesis) { | 5294 void set rightParenthesis(Token parenthesis) { |
5401 _rightParenthesis = parenthesis; | 5295 _rightParenthesis = parenthesis; |
5402 } | 5296 } |
5403 | 5297 |
5404 void visitChildren(ASTVisitor visitor) { | 5298 void visitChildren(AstVisitor visitor) { |
5405 _parameters.accept(visitor); | 5299 _parameters.accept(visitor); |
5406 } | 5300 } |
5407 } | 5301 } |
5408 | 5302 |
5409 /** | 5303 /** |
5410 * The abstract class `FunctionBody` defines the behavior common to objects repr
esenting the | 5304 * The abstract class `FunctionBody` defines the behavior common to objects repr
esenting the |
5411 * body of a function or method. | 5305 * body of a function or method. |
5412 * | 5306 * |
5413 * <pre> | 5307 * <pre> |
5414 * functionBody ::= | 5308 * functionBody ::= |
5415 * [BlockFunctionBody] | 5309 * [BlockFunctionBody] |
5416 * | [EmptyFunctionBody] | 5310 * | [EmptyFunctionBody] |
5417 * | [ExpressionFunctionBody] | 5311 * | [ExpressionFunctionBody] |
5418 * </pre> | 5312 * </pre> |
5419 * | |
5420 * @coverage dart.engine.ast | |
5421 */ | 5313 */ |
5422 abstract class FunctionBody extends ASTNode { | 5314 abstract class FunctionBody extends AstNode { |
5423 } | 5315 } |
5424 | 5316 |
5425 /** | 5317 /** |
5426 * Instances of the class `FunctionDeclaration` wrap a [FunctionExpression] as a
top-level declaration. | 5318 * Instances of the class `FunctionDeclaration` wrap a [FunctionExpression] as a
top-level declaration. |
5427 * | 5319 * |
5428 * <pre> | 5320 * <pre> |
5429 * functionDeclaration ::= | 5321 * functionDeclaration ::= |
5430 * 'external' functionSignature | 5322 * 'external' functionSignature |
5431 * | functionSignature [FunctionBody] | 5323 * | functionSignature [FunctionBody] |
5432 * | 5324 * |
5433 * functionSignature ::= | 5325 * functionSignature ::= |
5434 * [Type]? ('get' | 'set')? [SimpleIdentifier] [FormalParameterList] | 5326 * [Type]? ('get' | 'set')? [SimpleIdentifier] [FormalParameterList] |
5435 * </pre> | 5327 * </pre> |
5436 * | |
5437 * @coverage dart.engine.ast | |
5438 */ | 5328 */ |
5439 class FunctionDeclaration extends CompilationUnitMember { | 5329 class FunctionDeclaration extends CompilationUnitMember { |
5440 /** | 5330 /** |
5441 * The token representing the 'external' keyword, or `null` if this is not an
external | 5331 * The token representing the 'external' keyword, or `null` if this is not an
external |
5442 * function. | 5332 * function. |
5443 */ | 5333 */ |
5444 Token externalKeyword; | 5334 Token externalKeyword; |
5445 | 5335 |
5446 /** | 5336 /** |
5447 * The return type of the function, or `null` if no return type was declared. | 5337 * The return type of the function, or `null` if no return type was declared. |
(...skipping 26 matching lines...) Expand all Loading... |
5474 * @param propertyKeyword the token representing the 'get' or 'set' keyword | 5364 * @param propertyKeyword the token representing the 'get' or 'set' keyword |
5475 * @param name the name of the function | 5365 * @param name the name of the function |
5476 * @param functionExpression the function expression being wrapped | 5366 * @param functionExpression the function expression being wrapped |
5477 */ | 5367 */ |
5478 FunctionDeclaration(Comment comment, List<Annotation> metadata, this.externalK
eyword, TypeName returnType, this.propertyKeyword, SimpleIdentifier name, Functi
onExpression functionExpression) : super(comment, metadata) { | 5368 FunctionDeclaration(Comment comment, List<Annotation> metadata, this.externalK
eyword, TypeName returnType, this.propertyKeyword, SimpleIdentifier name, Functi
onExpression functionExpression) : super(comment, metadata) { |
5479 this._returnType = becomeParentOf(returnType); | 5369 this._returnType = becomeParentOf(returnType); |
5480 this._name = becomeParentOf(name); | 5370 this._name = becomeParentOf(name); |
5481 this._functionExpression = becomeParentOf(functionExpression); | 5371 this._functionExpression = becomeParentOf(functionExpression); |
5482 } | 5372 } |
5483 | 5373 |
5484 accept(ASTVisitor visitor) => visitor.visitFunctionDeclaration(this); | 5374 accept(AstVisitor visitor) => visitor.visitFunctionDeclaration(this); |
5485 | 5375 |
5486 ExecutableElement get element => _name != null ? (_name.staticElement as Execu
tableElement) : null; | 5376 ExecutableElement get element => _name != null ? (_name.staticElement as Execu
tableElement) : null; |
5487 | 5377 |
5488 Token get endToken => _functionExpression.endToken; | 5378 Token get endToken => _functionExpression.endToken; |
5489 | 5379 |
5490 /** | 5380 /** |
5491 * Return the function expression being wrapped. | 5381 * Return the function expression being wrapped. |
5492 * | 5382 * |
5493 * @return the function expression being wrapped | 5383 * @return the function expression being wrapped |
5494 */ | 5384 */ |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5542 | 5432 |
5543 /** | 5433 /** |
5544 * Set the return type of the function to the given name. | 5434 * Set the return type of the function to the given name. |
5545 * | 5435 * |
5546 * @param name the return type of the function | 5436 * @param name the return type of the function |
5547 */ | 5437 */ |
5548 void set returnType(TypeName name) { | 5438 void set returnType(TypeName name) { |
5549 _returnType = becomeParentOf(name); | 5439 _returnType = becomeParentOf(name); |
5550 } | 5440 } |
5551 | 5441 |
5552 void visitChildren(ASTVisitor visitor) { | 5442 void visitChildren(AstVisitor visitor) { |
5553 super.visitChildren(visitor); | 5443 super.visitChildren(visitor); |
5554 safelyVisitChild(_returnType, visitor); | 5444 safelyVisitChild(_returnType, visitor); |
5555 safelyVisitChild(_name, visitor); | 5445 safelyVisitChild(_name, visitor); |
5556 safelyVisitChild(_functionExpression, visitor); | 5446 safelyVisitChild(_functionExpression, visitor); |
5557 } | 5447 } |
5558 | 5448 |
5559 Token get firstTokenAfterCommentAndMetadata { | 5449 Token get firstTokenAfterCommentAndMetadata { |
5560 if (externalKeyword != null) { | 5450 if (externalKeyword != null) { |
5561 return externalKeyword; | 5451 return externalKeyword; |
5562 } | 5452 } |
5563 if (_returnType != null) { | 5453 if (_returnType != null) { |
5564 return _returnType.beginToken; | 5454 return _returnType.beginToken; |
5565 } else if (propertyKeyword != null) { | 5455 } else if (propertyKeyword != null) { |
5566 return propertyKeyword; | 5456 return propertyKeyword; |
5567 } else if (_name != null) { | 5457 } else if (_name != null) { |
5568 return _name.beginToken; | 5458 return _name.beginToken; |
5569 } | 5459 } |
5570 return _functionExpression.beginToken; | 5460 return _functionExpression.beginToken; |
5571 } | 5461 } |
5572 } | 5462 } |
5573 | 5463 |
5574 /** | 5464 /** |
5575 * Instances of the class `FunctionDeclarationStatement` wrap a [FunctionDeclara
tion | 5465 * Instances of the class `FunctionDeclarationStatement` wrap a [FunctionDeclara
tion |
5576 ] as a statement. | 5466 ] as a statement. |
5577 * | |
5578 * @coverage dart.engine.ast | |
5579 */ | 5467 */ |
5580 class FunctionDeclarationStatement extends Statement { | 5468 class FunctionDeclarationStatement extends Statement { |
5581 /** | 5469 /** |
5582 * The function declaration being wrapped. | 5470 * The function declaration being wrapped. |
5583 */ | 5471 */ |
5584 FunctionDeclaration _functionDeclaration; | 5472 FunctionDeclaration _functionDeclaration; |
5585 | 5473 |
5586 /** | 5474 /** |
5587 * Initialize a newly created function declaration statement. | 5475 * Initialize a newly created function declaration statement. |
5588 * | 5476 * |
5589 * @param functionDeclaration the the function declaration being wrapped | 5477 * @param functionDeclaration the the function declaration being wrapped |
5590 */ | 5478 */ |
5591 FunctionDeclarationStatement(FunctionDeclaration functionDeclaration) { | 5479 FunctionDeclarationStatement(FunctionDeclaration functionDeclaration) { |
5592 this._functionDeclaration = becomeParentOf(functionDeclaration); | 5480 this._functionDeclaration = becomeParentOf(functionDeclaration); |
5593 } | 5481 } |
5594 | 5482 |
5595 accept(ASTVisitor visitor) => visitor.visitFunctionDeclarationStatement(this); | 5483 accept(AstVisitor visitor) => visitor.visitFunctionDeclarationStatement(this); |
5596 | 5484 |
5597 Token get beginToken => _functionDeclaration.beginToken; | 5485 Token get beginToken => _functionDeclaration.beginToken; |
5598 | 5486 |
5599 Token get endToken => _functionDeclaration.endToken; | 5487 Token get endToken => _functionDeclaration.endToken; |
5600 | 5488 |
5601 /** | 5489 /** |
5602 * Return the function declaration being wrapped. | 5490 * Return the function declaration being wrapped. |
5603 * | 5491 * |
5604 * @return the function declaration being wrapped | 5492 * @return the function declaration being wrapped |
5605 */ | 5493 */ |
5606 FunctionDeclaration get functionDeclaration => _functionDeclaration; | 5494 FunctionDeclaration get functionDeclaration => _functionDeclaration; |
5607 | 5495 |
5608 /** | 5496 /** |
5609 * Set the function declaration being wrapped to the given function declaratio
n. | 5497 * Set the function declaration being wrapped to the given function declaratio
n. |
5610 * | 5498 * |
5611 * @param functionDeclaration the function declaration being wrapped | 5499 * @param functionDeclaration the function declaration being wrapped |
5612 */ | 5500 */ |
5613 void set functionExpression(FunctionDeclaration functionDeclaration) { | 5501 void set functionExpression(FunctionDeclaration functionDeclaration) { |
5614 this._functionDeclaration = becomeParentOf(functionDeclaration); | 5502 this._functionDeclaration = becomeParentOf(functionDeclaration); |
5615 } | 5503 } |
5616 | 5504 |
5617 void visitChildren(ASTVisitor visitor) { | 5505 void visitChildren(AstVisitor visitor) { |
5618 safelyVisitChild(_functionDeclaration, visitor); | 5506 safelyVisitChild(_functionDeclaration, visitor); |
5619 } | 5507 } |
5620 } | 5508 } |
5621 | 5509 |
5622 /** | 5510 /** |
5623 * Instances of the class `FunctionExpression` represent a function expression. | 5511 * Instances of the class `FunctionExpression` represent a function expression. |
5624 * | 5512 * |
5625 * <pre> | 5513 * <pre> |
5626 * functionExpression ::= | 5514 * functionExpression ::= |
5627 * [FormalParameterList] [FunctionBody] | 5515 * [FormalParameterList] [FunctionBody] |
5628 * </pre> | 5516 * </pre> |
5629 * | |
5630 * @coverage dart.engine.ast | |
5631 */ | 5517 */ |
5632 class FunctionExpression extends Expression { | 5518 class FunctionExpression extends Expression { |
5633 /** | 5519 /** |
5634 * The parameters associated with the function. | 5520 * The parameters associated with the function. |
5635 */ | 5521 */ |
5636 FormalParameterList _parameters; | 5522 FormalParameterList _parameters; |
5637 | 5523 |
5638 /** | 5524 /** |
5639 * The body of the function, or `null` if this is an external function. | 5525 * The body of the function, or `null` if this is an external function. |
5640 */ | 5526 */ |
5641 FunctionBody _body; | 5527 FunctionBody _body; |
5642 | 5528 |
5643 /** | 5529 /** |
5644 * The element associated with the function, or `null` if the AST structure ha
s not been | 5530 * The element associated with the function, or `null` if the AST structure ha
s not been |
5645 * resolved. | 5531 * resolved. |
5646 */ | 5532 */ |
5647 ExecutableElement element; | 5533 ExecutableElement element; |
5648 | 5534 |
5649 /** | 5535 /** |
5650 * Initialize a newly created function declaration. | 5536 * Initialize a newly created function declaration. |
5651 * | 5537 * |
5652 * @param parameters the parameters associated with the function | 5538 * @param parameters the parameters associated with the function |
5653 * @param body the body of the function | 5539 * @param body the body of the function |
5654 */ | 5540 */ |
5655 FunctionExpression(FormalParameterList parameters, FunctionBody body) { | 5541 FunctionExpression(FormalParameterList parameters, FunctionBody body) { |
5656 this._parameters = becomeParentOf(parameters); | 5542 this._parameters = becomeParentOf(parameters); |
5657 this._body = becomeParentOf(body); | 5543 this._body = becomeParentOf(body); |
5658 } | 5544 } |
5659 | 5545 |
5660 accept(ASTVisitor visitor) => visitor.visitFunctionExpression(this); | 5546 accept(AstVisitor visitor) => visitor.visitFunctionExpression(this); |
5661 | 5547 |
5662 Token get beginToken { | 5548 Token get beginToken { |
5663 if (_parameters != null) { | 5549 if (_parameters != null) { |
5664 return _parameters.beginToken; | 5550 return _parameters.beginToken; |
5665 } else if (_body != null) { | 5551 } else if (_body != null) { |
5666 return _body.beginToken; | 5552 return _body.beginToken; |
5667 } | 5553 } |
5668 // This should never be reached because external functions must be named, he
nce either the body | 5554 // This should never be reached because external functions must be named, he
nce either the body |
5669 // or the name should be non-null. | 5555 // or the name should be non-null. |
5670 throw new IllegalStateException("Non-external functions must have a body"); | 5556 throw new IllegalStateException("Non-external functions must have a body"); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5708 | 5594 |
5709 /** | 5595 /** |
5710 * Set the parameters associated with the function to the given list of parame
ters. | 5596 * Set the parameters associated with the function to the given list of parame
ters. |
5711 * | 5597 * |
5712 * @param parameters the parameters associated with the function | 5598 * @param parameters the parameters associated with the function |
5713 */ | 5599 */ |
5714 void set parameters(FormalParameterList parameters) { | 5600 void set parameters(FormalParameterList parameters) { |
5715 this._parameters = becomeParentOf(parameters); | 5601 this._parameters = becomeParentOf(parameters); |
5716 } | 5602 } |
5717 | 5603 |
5718 void visitChildren(ASTVisitor visitor) { | 5604 void visitChildren(AstVisitor visitor) { |
5719 safelyVisitChild(_parameters, visitor); | 5605 safelyVisitChild(_parameters, visitor); |
5720 safelyVisitChild(_body, visitor); | 5606 safelyVisitChild(_body, visitor); |
5721 } | 5607 } |
5722 } | 5608 } |
5723 | 5609 |
5724 /** | 5610 /** |
5725 * Instances of the class `FunctionExpressionInvocation` represent the invocatio
n of a | 5611 * Instances of the class `FunctionExpressionInvocation` represent the invocatio
n of a |
5726 * function resulting from evaluating an expression. Invocations of methods and
other forms of | 5612 * function resulting from evaluating an expression. Invocations of methods and
other forms of |
5727 * functions are represented by [MethodInvocation] nodes. Invocations of | 5613 * functions are represented by [MethodInvocation] nodes. Invocations of |
5728 * getters and setters are represented by either [PrefixedIdentifier] or | 5614 * getters and setters are represented by either [PrefixedIdentifier] or |
5729 * [PropertyAccess] nodes. | 5615 * [PropertyAccess] nodes. |
5730 * | 5616 * |
5731 * <pre> | 5617 * <pre> |
5732 * functionExpressionInvoction ::= | 5618 * functionExpressionInvoction ::= |
5733 * [Expression] [ArgumentList] | 5619 * [Expression] [ArgumentList] |
5734 * </pre> | 5620 * </pre> |
5735 * | |
5736 * @coverage dart.engine.ast | |
5737 */ | 5621 */ |
5738 class FunctionExpressionInvocation extends Expression { | 5622 class FunctionExpressionInvocation extends Expression { |
5739 /** | 5623 /** |
5740 * The expression producing the function being invoked. | 5624 * The expression producing the function being invoked. |
5741 */ | 5625 */ |
5742 Expression _function; | 5626 Expression _function; |
5743 | 5627 |
5744 /** | 5628 /** |
5745 * The list of arguments to the function. | 5629 * The list of arguments to the function. |
5746 */ | 5630 */ |
(...skipping 15 matching lines...) Expand all Loading... |
5762 * Initialize a newly created function expression invocation. | 5646 * Initialize a newly created function expression invocation. |
5763 * | 5647 * |
5764 * @param function the expression producing the function being invoked | 5648 * @param function the expression producing the function being invoked |
5765 * @param argumentList the list of arguments to the method | 5649 * @param argumentList the list of arguments to the method |
5766 */ | 5650 */ |
5767 FunctionExpressionInvocation(Expression function, ArgumentList argumentList) { | 5651 FunctionExpressionInvocation(Expression function, ArgumentList argumentList) { |
5768 this._function = becomeParentOf(function); | 5652 this._function = becomeParentOf(function); |
5769 this._argumentList = becomeParentOf(argumentList); | 5653 this._argumentList = becomeParentOf(argumentList); |
5770 } | 5654 } |
5771 | 5655 |
5772 accept(ASTVisitor visitor) => visitor.visitFunctionExpressionInvocation(this); | 5656 accept(AstVisitor visitor) => visitor.visitFunctionExpressionInvocation(this); |
5773 | 5657 |
5774 /** | 5658 /** |
5775 * Return the list of arguments to the method. | 5659 * Return the list of arguments to the method. |
5776 * | 5660 * |
5777 * @return the list of arguments to the method | 5661 * @return the list of arguments to the method |
5778 */ | 5662 */ |
5779 ArgumentList get argumentList => _argumentList; | 5663 ArgumentList get argumentList => _argumentList; |
5780 | 5664 |
5781 Token get beginToken => _function.beginToken; | 5665 Token get beginToken => _function.beginToken; |
5782 | 5666 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5838 /** | 5722 /** |
5839 * Set the element associated with the function being invoked based on propaga
ted type information | 5723 * Set the element associated with the function being invoked based on propaga
ted type information |
5840 * to the given element. | 5724 * to the given element. |
5841 * | 5725 * |
5842 * @param element the element to be associated with the function being invoked | 5726 * @param element the element to be associated with the function being invoked |
5843 */ | 5727 */ |
5844 void set propagatedElement(ExecutableElement element) { | 5728 void set propagatedElement(ExecutableElement element) { |
5845 _propagatedElement = element; | 5729 _propagatedElement = element; |
5846 } | 5730 } |
5847 | 5731 |
5848 void visitChildren(ASTVisitor visitor) { | 5732 void visitChildren(AstVisitor visitor) { |
5849 safelyVisitChild(_function, visitor); | 5733 safelyVisitChild(_function, visitor); |
5850 safelyVisitChild(_argumentList, visitor); | 5734 safelyVisitChild(_argumentList, visitor); |
5851 } | 5735 } |
5852 } | 5736 } |
5853 | 5737 |
5854 /** | 5738 /** |
5855 * Instances of the class `FunctionTypeAlias` represent a function type alias. | 5739 * Instances of the class `FunctionTypeAlias` represent a function type alias. |
5856 * | 5740 * |
5857 * <pre> | 5741 * <pre> |
5858 * functionTypeAlias ::= | 5742 * functionTypeAlias ::= |
5859 * functionPrefix [TypeParameterList]? [FormalParameterList] ';' | 5743 * functionPrefix [TypeParameterList]? [FormalParameterList] ';' |
5860 * | 5744 * |
5861 * functionPrefix ::= | 5745 * functionPrefix ::= |
5862 * [TypeName]? [SimpleIdentifier] | 5746 * [TypeName]? [SimpleIdentifier] |
5863 * </pre> | 5747 * </pre> |
5864 * | |
5865 * @coverage dart.engine.ast | |
5866 */ | 5748 */ |
5867 class FunctionTypeAlias extends TypeAlias { | 5749 class FunctionTypeAlias extends TypeAlias { |
5868 /** | 5750 /** |
5869 * The name of the return type of the function type being defined, or `null` i
f no return | 5751 * The name of the return type of the function type being defined, or `null` i
f no return |
5870 * type was given. | 5752 * type was given. |
5871 */ | 5753 */ |
5872 TypeName _returnType; | 5754 TypeName _returnType; |
5873 | 5755 |
5874 /** | 5756 /** |
5875 * The name of the function type being declared. | 5757 * The name of the function type being declared. |
(...skipping 23 matching lines...) Expand all Loading... |
5899 * @param parameters the parameters associated with the function | 5781 * @param parameters the parameters associated with the function |
5900 * @param semicolon the semicolon terminating the declaration | 5782 * @param semicolon the semicolon terminating the declaration |
5901 */ | 5783 */ |
5902 FunctionTypeAlias(Comment comment, List<Annotation> metadata, Token keyword, T
ypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters, For
malParameterList parameters, Token semicolon) : super(comment, metadata, keyword
, semicolon) { | 5784 FunctionTypeAlias(Comment comment, List<Annotation> metadata, Token keyword, T
ypeName returnType, SimpleIdentifier name, TypeParameterList typeParameters, For
malParameterList parameters, Token semicolon) : super(comment, metadata, keyword
, semicolon) { |
5903 this._returnType = becomeParentOf(returnType); | 5785 this._returnType = becomeParentOf(returnType); |
5904 this._name = becomeParentOf(name); | 5786 this._name = becomeParentOf(name); |
5905 this._typeParameters = becomeParentOf(typeParameters); | 5787 this._typeParameters = becomeParentOf(typeParameters); |
5906 this._parameters = becomeParentOf(parameters); | 5788 this._parameters = becomeParentOf(parameters); |
5907 } | 5789 } |
5908 | 5790 |
5909 accept(ASTVisitor visitor) => visitor.visitFunctionTypeAlias(this); | 5791 accept(AstVisitor visitor) => visitor.visitFunctionTypeAlias(this); |
5910 | 5792 |
5911 FunctionTypeAliasElement get element => _name != null ? (_name.staticElement a
s FunctionTypeAliasElement) : null; | 5793 FunctionTypeAliasElement get element => _name != null ? (_name.staticElement a
s FunctionTypeAliasElement) : null; |
5912 | 5794 |
5913 /** | 5795 /** |
5914 * Return the name of the function type being declared. | 5796 * Return the name of the function type being declared. |
5915 * | 5797 * |
5916 * @return the name of the function type being declared | 5798 * @return the name of the function type being declared |
5917 */ | 5799 */ |
5918 SimpleIdentifier get name => _name; | 5800 SimpleIdentifier get name => _name; |
5919 | 5801 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5969 | 5851 |
5970 /** | 5852 /** |
5971 * Set the type parameters for the function type to the given list of paramete
rs. | 5853 * Set the type parameters for the function type to the given list of paramete
rs. |
5972 * | 5854 * |
5973 * @param typeParameters the type parameters for the function type | 5855 * @param typeParameters the type parameters for the function type |
5974 */ | 5856 */ |
5975 void set typeParameters(TypeParameterList typeParameters) { | 5857 void set typeParameters(TypeParameterList typeParameters) { |
5976 this._typeParameters = becomeParentOf(typeParameters); | 5858 this._typeParameters = becomeParentOf(typeParameters); |
5977 } | 5859 } |
5978 | 5860 |
5979 void visitChildren(ASTVisitor visitor) { | 5861 void visitChildren(AstVisitor visitor) { |
5980 super.visitChildren(visitor); | 5862 super.visitChildren(visitor); |
5981 safelyVisitChild(_returnType, visitor); | 5863 safelyVisitChild(_returnType, visitor); |
5982 safelyVisitChild(_name, visitor); | 5864 safelyVisitChild(_name, visitor); |
5983 safelyVisitChild(_typeParameters, visitor); | 5865 safelyVisitChild(_typeParameters, visitor); |
5984 safelyVisitChild(_parameters, visitor); | 5866 safelyVisitChild(_parameters, visitor); |
5985 } | 5867 } |
5986 } | 5868 } |
5987 | 5869 |
5988 /** | 5870 /** |
5989 * Instances of the class `FunctionTypedFormalParameter` represent a function-ty
ped formal | 5871 * Instances of the class `FunctionTypedFormalParameter` represent a function-ty
ped formal |
5990 * parameter. | 5872 * parameter. |
5991 * | 5873 * |
5992 * <pre> | 5874 * <pre> |
5993 * functionSignature ::= | 5875 * functionSignature ::= |
5994 * [TypeName]? [SimpleIdentifier] [FormalParameterList] | 5876 * [TypeName]? [SimpleIdentifier] [FormalParameterList] |
5995 * </pre> | 5877 * </pre> |
5996 * | |
5997 * @coverage dart.engine.ast | |
5998 */ | 5878 */ |
5999 class FunctionTypedFormalParameter extends NormalFormalParameter { | 5879 class FunctionTypedFormalParameter extends NormalFormalParameter { |
6000 /** | 5880 /** |
6001 * The return type of the function, or `null` if the function does not have a
return type. | 5881 * The return type of the function, or `null` if the function does not have a
return type. |
6002 */ | 5882 */ |
6003 TypeName _returnType; | 5883 TypeName _returnType; |
6004 | 5884 |
6005 /** | 5885 /** |
6006 * The parameters of the function-typed parameter. | 5886 * The parameters of the function-typed parameter. |
6007 */ | 5887 */ |
6008 FormalParameterList _parameters; | 5888 FormalParameterList _parameters; |
6009 | 5889 |
6010 /** | 5890 /** |
6011 * Initialize a newly created formal parameter. | 5891 * Initialize a newly created formal parameter. |
6012 * | 5892 * |
6013 * @param comment the documentation comment associated with this parameter | 5893 * @param comment the documentation comment associated with this parameter |
6014 * @param metadata the annotations associated with this parameter | 5894 * @param metadata the annotations associated with this parameter |
6015 * @param returnType the return type of the function, or `null` if the functio
n does not | 5895 * @param returnType the return type of the function, or `null` if the functio
n does not |
6016 * have a return type | 5896 * have a return type |
6017 * @param identifier the name of the function-typed parameter | 5897 * @param identifier the name of the function-typed parameter |
6018 * @param parameters the parameters of the function-typed parameter | 5898 * @param parameters the parameters of the function-typed parameter |
6019 */ | 5899 */ |
6020 FunctionTypedFormalParameter(Comment comment, List<Annotation> metadata, TypeN
ame returnType, SimpleIdentifier identifier, FormalParameterList parameters) : s
uper(comment, metadata, identifier) { | 5900 FunctionTypedFormalParameter(Comment comment, List<Annotation> metadata, TypeN
ame returnType, SimpleIdentifier identifier, FormalParameterList parameters) : s
uper(comment, metadata, identifier) { |
6021 this._returnType = becomeParentOf(returnType); | 5901 this._returnType = becomeParentOf(returnType); |
6022 this._parameters = becomeParentOf(parameters); | 5902 this._parameters = becomeParentOf(parameters); |
6023 } | 5903 } |
6024 | 5904 |
6025 accept(ASTVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this); | 5905 accept(AstVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this); |
6026 | 5906 |
6027 Token get beginToken { | 5907 Token get beginToken { |
6028 if (_returnType != null) { | 5908 if (_returnType != null) { |
6029 return _returnType.beginToken; | 5909 return _returnType.beginToken; |
6030 } | 5910 } |
6031 return identifier.beginToken; | 5911 return identifier.beginToken; |
6032 } | 5912 } |
6033 | 5913 |
6034 Token get endToken => _parameters.endToken; | 5914 Token get endToken => _parameters.endToken; |
6035 | 5915 |
(...skipping 27 matching lines...) Expand all Loading... |
6063 | 5943 |
6064 /** | 5944 /** |
6065 * Set the return type of the function to the given type. | 5945 * Set the return type of the function to the given type. |
6066 * | 5946 * |
6067 * @param returnType the return type of the function | 5947 * @param returnType the return type of the function |
6068 */ | 5948 */ |
6069 void set returnType(TypeName returnType) { | 5949 void set returnType(TypeName returnType) { |
6070 this._returnType = becomeParentOf(returnType); | 5950 this._returnType = becomeParentOf(returnType); |
6071 } | 5951 } |
6072 | 5952 |
6073 void visitChildren(ASTVisitor visitor) { | 5953 void visitChildren(AstVisitor visitor) { |
6074 super.visitChildren(visitor); | 5954 super.visitChildren(visitor); |
6075 safelyVisitChild(_returnType, visitor); | 5955 safelyVisitChild(_returnType, visitor); |
6076 safelyVisitChild(identifier, visitor); | 5956 safelyVisitChild(identifier, visitor); |
6077 safelyVisitChild(_parameters, visitor); | 5957 safelyVisitChild(_parameters, visitor); |
6078 } | 5958 } |
6079 } | 5959 } |
6080 | 5960 |
6081 /** | 5961 /** |
6082 * Instances of the class `HideCombinator` represent a combinator that restricts
the names | 5962 * Instances of the class `HideCombinator` represent a combinator that restricts
the names |
6083 * being imported to those that are not in a given list. | 5963 * being imported to those that are not in a given list. |
6084 * | 5964 * |
6085 * <pre> | 5965 * <pre> |
6086 * hideCombinator ::= | 5966 * hideCombinator ::= |
6087 * 'hide' [SimpleIdentifier] (',' [SimpleIdentifier])* | 5967 * 'hide' [SimpleIdentifier] (',' [SimpleIdentifier])* |
6088 * </pre> | 5968 * </pre> |
6089 * | |
6090 * @coverage dart.engine.ast | |
6091 */ | 5969 */ |
6092 class HideCombinator extends Combinator { | 5970 class HideCombinator extends Combinator { |
6093 /** | 5971 /** |
6094 * The list of names from the library that are hidden by this combinator. | 5972 * The list of names from the library that are hidden by this combinator. |
6095 */ | 5973 */ |
6096 NodeList<SimpleIdentifier> _hiddenNames; | 5974 NodeList<SimpleIdentifier> _hiddenNames; |
6097 | 5975 |
6098 /** | 5976 /** |
6099 * Initialize a newly created import show combinator. | 5977 * Initialize a newly created import show combinator. |
6100 * | 5978 * |
6101 * @param keyword the comma introducing the combinator | 5979 * @param keyword the comma introducing the combinator |
6102 * @param hiddenNames the list of names from the library that are hidden by th
is combinator | 5980 * @param hiddenNames the list of names from the library that are hidden by th
is combinator |
6103 */ | 5981 */ |
6104 HideCombinator(Token keyword, List<SimpleIdentifier> hiddenNames) : super(keyw
ord) { | 5982 HideCombinator(Token keyword, List<SimpleIdentifier> hiddenNames) : super(keyw
ord) { |
6105 this._hiddenNames = new NodeList<SimpleIdentifier>(this); | 5983 this._hiddenNames = new NodeList<SimpleIdentifier>(this); |
6106 this._hiddenNames.addAll(hiddenNames); | 5984 this._hiddenNames.addAll(hiddenNames); |
6107 } | 5985 } |
6108 | 5986 |
6109 accept(ASTVisitor visitor) => visitor.visitHideCombinator(this); | 5987 accept(AstVisitor visitor) => visitor.visitHideCombinator(this); |
6110 | 5988 |
6111 Token get endToken => _hiddenNames.endToken; | 5989 Token get endToken => _hiddenNames.endToken; |
6112 | 5990 |
6113 /** | 5991 /** |
6114 * Return the list of names from the library that are hidden by this combinato
r. | 5992 * Return the list of names from the library that are hidden by this combinato
r. |
6115 * | 5993 * |
6116 * @return the list of names from the library that are hidden by this combinat
or | 5994 * @return the list of names from the library that are hidden by this combinat
or |
6117 */ | 5995 */ |
6118 NodeList<SimpleIdentifier> get hiddenNames => _hiddenNames; | 5996 NodeList<SimpleIdentifier> get hiddenNames => _hiddenNames; |
6119 | 5997 |
6120 void visitChildren(ASTVisitor visitor) { | 5998 void visitChildren(AstVisitor visitor) { |
6121 _hiddenNames.accept(visitor); | 5999 _hiddenNames.accept(visitor); |
6122 } | 6000 } |
6123 } | 6001 } |
6124 | 6002 |
6125 /** | 6003 /** |
6126 * The abstract class `Identifier` defines the behavior common to nodes that rep
resent an | 6004 * The abstract class `Identifier` defines the behavior common to nodes that rep
resent an |
6127 * identifier. | 6005 * identifier. |
6128 * | 6006 * |
6129 * <pre> | 6007 * <pre> |
6130 * identifier ::= | 6008 * identifier ::= |
6131 * [SimpleIdentifier] | 6009 * [SimpleIdentifier] |
6132 * | [PrefixedIdentifier] | 6010 * | [PrefixedIdentifier] |
6133 * </pre> | 6011 * </pre> |
6134 * | |
6135 * @coverage dart.engine.ast | |
6136 */ | 6012 */ |
6137 abstract class Identifier extends Expression { | 6013 abstract class Identifier extends Expression { |
6138 /** | 6014 /** |
6139 * Return `true` if the given name is visible only within the library in which
it is | 6015 * Return `true` if the given name is visible only within the library in which
it is |
6140 * declared. | 6016 * declared. |
6141 * | 6017 * |
6142 * @param name the name being tested | 6018 * @param name the name being tested |
6143 * @return `true` if the given name is private | 6019 * @return `true` if the given name is private |
6144 */ | 6020 */ |
6145 static bool isPrivateName(String name) => StringUtilities.startsWithChar(name,
0x5F); | 6021 static bool isPrivateName(String name) => StringUtilities.startsWithChar(name,
0x5F); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6184 bool get isAssignable => true; | 6060 bool get isAssignable => true; |
6185 } | 6061 } |
6186 | 6062 |
6187 /** | 6063 /** |
6188 * Instances of the class `IfStatement` represent an if statement. | 6064 * Instances of the class `IfStatement` represent an if statement. |
6189 * | 6065 * |
6190 * <pre> | 6066 * <pre> |
6191 * ifStatement ::= | 6067 * ifStatement ::= |
6192 * 'if' '(' [Expression] ')' [Statement] ('else' [Statement])? | 6068 * 'if' '(' [Expression] ')' [Statement] ('else' [Statement])? |
6193 * </pre> | 6069 * </pre> |
6194 * | |
6195 * @coverage dart.engine.ast | |
6196 */ | 6070 */ |
6197 class IfStatement extends Statement { | 6071 class IfStatement extends Statement { |
6198 /** | 6072 /** |
6199 * The token representing the 'if' keyword. | 6073 * The token representing the 'if' keyword. |
6200 */ | 6074 */ |
6201 Token ifKeyword; | 6075 Token ifKeyword; |
6202 | 6076 |
6203 /** | 6077 /** |
6204 * The left parenthesis. | 6078 * The left parenthesis. |
6205 */ | 6079 */ |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6241 * @param thenStatement the statement that is executed if the condition evalua
tes to `true` | 6115 * @param thenStatement the statement that is executed if the condition evalua
tes to `true` |
6242 * @param elseKeyword the token representing the 'else' keyword | 6116 * @param elseKeyword the token representing the 'else' keyword |
6243 * @param elseStatement the statement that is executed if the condition evalua
tes to `false` | 6117 * @param elseStatement the statement that is executed if the condition evalua
tes to `false` |
6244 */ | 6118 */ |
6245 IfStatement(this.ifKeyword, this.leftParenthesis, Expression condition, this.r
ightParenthesis, Statement thenStatement, this.elseKeyword, Statement elseStatem
ent) { | 6119 IfStatement(this.ifKeyword, this.leftParenthesis, Expression condition, this.r
ightParenthesis, Statement thenStatement, this.elseKeyword, Statement elseStatem
ent) { |
6246 this._condition = becomeParentOf(condition); | 6120 this._condition = becomeParentOf(condition); |
6247 this._thenStatement = becomeParentOf(thenStatement); | 6121 this._thenStatement = becomeParentOf(thenStatement); |
6248 this._elseStatement = becomeParentOf(elseStatement); | 6122 this._elseStatement = becomeParentOf(elseStatement); |
6249 } | 6123 } |
6250 | 6124 |
6251 accept(ASTVisitor visitor) => visitor.visitIfStatement(this); | 6125 accept(AstVisitor visitor) => visitor.visitIfStatement(this); |
6252 | 6126 |
6253 Token get beginToken => ifKeyword; | 6127 Token get beginToken => ifKeyword; |
6254 | 6128 |
6255 /** | 6129 /** |
6256 * Return the condition used to determine which of the statements is executed
next. | 6130 * Return the condition used to determine which of the statements is executed
next. |
6257 * | 6131 * |
6258 * @return the condition used to determine which statement is executed next | 6132 * @return the condition used to determine which statement is executed next |
6259 */ | 6133 */ |
6260 Expression get condition => _condition; | 6134 Expression get condition => _condition; |
6261 | 6135 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6304 /** | 6178 /** |
6305 * Set the statement that is executed if the condition evaluates to `true` to
the given | 6179 * Set the statement that is executed if the condition evaluates to `true` to
the given |
6306 * statement. | 6180 * statement. |
6307 * | 6181 * |
6308 * @param statement the statement that is executed if the condition evaluates
to `true` | 6182 * @param statement the statement that is executed if the condition evaluates
to `true` |
6309 */ | 6183 */ |
6310 void set thenStatement(Statement statement) { | 6184 void set thenStatement(Statement statement) { |
6311 _thenStatement = becomeParentOf(statement); | 6185 _thenStatement = becomeParentOf(statement); |
6312 } | 6186 } |
6313 | 6187 |
6314 void visitChildren(ASTVisitor visitor) { | 6188 void visitChildren(AstVisitor visitor) { |
6315 safelyVisitChild(_condition, visitor); | 6189 safelyVisitChild(_condition, visitor); |
6316 safelyVisitChild(_thenStatement, visitor); | 6190 safelyVisitChild(_thenStatement, visitor); |
6317 safelyVisitChild(_elseStatement, visitor); | 6191 safelyVisitChild(_elseStatement, visitor); |
6318 } | 6192 } |
6319 } | 6193 } |
6320 | 6194 |
6321 /** | 6195 /** |
6322 * Instances of the class `ImplementsClause` represent the "implements" clause i
n an class | 6196 * Instances of the class `ImplementsClause` represent the "implements" clause i
n an class |
6323 * declaration. | 6197 * declaration. |
6324 * | 6198 * |
6325 * <pre> | 6199 * <pre> |
6326 * implementsClause ::= | 6200 * implementsClause ::= |
6327 * 'implements' [TypeName] (',' [TypeName])* | 6201 * 'implements' [TypeName] (',' [TypeName])* |
6328 * </pre> | 6202 * </pre> |
6329 * | |
6330 * @coverage dart.engine.ast | |
6331 */ | 6203 */ |
6332 class ImplementsClause extends ASTNode { | 6204 class ImplementsClause extends AstNode { |
6333 /** | 6205 /** |
6334 * The token representing the 'implements' keyword. | 6206 * The token representing the 'implements' keyword. |
6335 */ | 6207 */ |
6336 Token keyword; | 6208 Token keyword; |
6337 | 6209 |
6338 /** | 6210 /** |
6339 * The interfaces that are being implemented. | 6211 * The interfaces that are being implemented. |
6340 */ | 6212 */ |
6341 NodeList<TypeName> _interfaces; | 6213 NodeList<TypeName> _interfaces; |
6342 | 6214 |
6343 /** | 6215 /** |
6344 * Initialize a newly created implements clause. | 6216 * Initialize a newly created implements clause. |
6345 * | 6217 * |
6346 * @param keyword the token representing the 'implements' keyword | 6218 * @param keyword the token representing the 'implements' keyword |
6347 * @param interfaces the interfaces that are being implemented | 6219 * @param interfaces the interfaces that are being implemented |
6348 */ | 6220 */ |
6349 ImplementsClause(this.keyword, List<TypeName> interfaces) { | 6221 ImplementsClause(this.keyword, List<TypeName> interfaces) { |
6350 this._interfaces = new NodeList<TypeName>(this); | 6222 this._interfaces = new NodeList<TypeName>(this); |
6351 this._interfaces.addAll(interfaces); | 6223 this._interfaces.addAll(interfaces); |
6352 } | 6224 } |
6353 | 6225 |
6354 accept(ASTVisitor visitor) => visitor.visitImplementsClause(this); | 6226 accept(AstVisitor visitor) => visitor.visitImplementsClause(this); |
6355 | 6227 |
6356 Token get beginToken => keyword; | 6228 Token get beginToken => keyword; |
6357 | 6229 |
6358 Token get endToken => _interfaces.endToken; | 6230 Token get endToken => _interfaces.endToken; |
6359 | 6231 |
6360 /** | 6232 /** |
6361 * Return the list of the interfaces that are being implemented. | 6233 * Return the list of the interfaces that are being implemented. |
6362 * | 6234 * |
6363 * @return the list of the interfaces that are being implemented | 6235 * @return the list of the interfaces that are being implemented |
6364 */ | 6236 */ |
6365 NodeList<TypeName> get interfaces => _interfaces; | 6237 NodeList<TypeName> get interfaces => _interfaces; |
6366 | 6238 |
6367 void visitChildren(ASTVisitor visitor) { | 6239 void visitChildren(AstVisitor visitor) { |
6368 _interfaces.accept(visitor); | 6240 _interfaces.accept(visitor); |
6369 } | 6241 } |
6370 } | 6242 } |
6371 | 6243 |
6372 /** | 6244 /** |
6373 * Instances of the class `ImportDirective` represent an import directive. | 6245 * Instances of the class `ImportDirective` represent an import directive. |
6374 * | 6246 * |
6375 * <pre> | 6247 * <pre> |
6376 * importDirective ::= | 6248 * importDirective ::= |
6377 * [Annotation] 'import' [StringLiteral] ('as' identifier)? [Combinator]* ';
' | 6249 * [Annotation] 'import' [StringLiteral] ('as' identifier)? [Combinator]* ';
' |
6378 * </pre> | 6250 * </pre> |
6379 * | |
6380 * @coverage dart.engine.ast | |
6381 */ | 6251 */ |
6382 class ImportDirective extends NamespaceDirective { | 6252 class ImportDirective extends NamespaceDirective { |
6383 static Comparator<ImportDirective> COMPARATOR = (ImportDirective import1, Impo
rtDirective import2) { | 6253 static Comparator<ImportDirective> COMPARATOR = (ImportDirective import1, Impo
rtDirective import2) { |
6384 // | 6254 // |
6385 // uri | 6255 // uri |
6386 // | 6256 // |
6387 StringLiteral uri1 = import1.uri; | 6257 StringLiteral uri1 = import1.uri; |
6388 StringLiteral uri2 = import2.uri; | 6258 StringLiteral uri2 = import2.uri; |
6389 String uriStr1 = uri1.stringValue; | 6259 String uriStr1 = uri1.stringValue; |
6390 String uriStr2 = uri2.stringValue; | 6260 String uriStr2 = uri2.stringValue; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6491 * @param libraryUri the URI of the library being imported | 6361 * @param libraryUri the URI of the library being imported |
6492 * @param asToken the token representing the 'as' token | 6362 * @param asToken the token representing the 'as' token |
6493 * @param prefix the prefix to be used with the imported names | 6363 * @param prefix the prefix to be used with the imported names |
6494 * @param combinators the combinators used to control how names are imported | 6364 * @param combinators the combinators used to control how names are imported |
6495 * @param semicolon the semicolon terminating the directive | 6365 * @param semicolon the semicolon terminating the directive |
6496 */ | 6366 */ |
6497 ImportDirective(Comment comment, List<Annotation> metadata, Token keyword, Str
ingLiteral libraryUri, this.asToken, SimpleIdentifier prefix, List<Combinator> c
ombinators, Token semicolon) : super(comment, metadata, keyword, libraryUri, com
binators, semicolon) { | 6367 ImportDirective(Comment comment, List<Annotation> metadata, Token keyword, Str
ingLiteral libraryUri, this.asToken, SimpleIdentifier prefix, List<Combinator> c
ombinators, Token semicolon) : super(comment, metadata, keyword, libraryUri, com
binators, semicolon) { |
6498 this._prefix = becomeParentOf(prefix); | 6368 this._prefix = becomeParentOf(prefix); |
6499 } | 6369 } |
6500 | 6370 |
6501 accept(ASTVisitor visitor) => visitor.visitImportDirective(this); | 6371 accept(AstVisitor visitor) => visitor.visitImportDirective(this); |
6502 | 6372 |
6503 ImportElement get element => super.element as ImportElement; | 6373 ImportElement get element => super.element as ImportElement; |
6504 | 6374 |
6505 /** | 6375 /** |
6506 * Return the prefix to be used with the imported names, or `null` if the impo
rted names are | 6376 * Return the prefix to be used with the imported names, or `null` if the impo
rted names are |
6507 * not prefixed. | 6377 * not prefixed. |
6508 * | 6378 * |
6509 * @return the prefix to be used with the imported names | 6379 * @return the prefix to be used with the imported names |
6510 */ | 6380 */ |
6511 SimpleIdentifier get prefix => _prefix; | 6381 SimpleIdentifier get prefix => _prefix; |
6512 | 6382 |
6513 LibraryElement get uriElement { | 6383 LibraryElement get uriElement { |
6514 ImportElement element = this.element; | 6384 ImportElement element = this.element; |
6515 if (element == null) { | 6385 if (element == null) { |
6516 return null; | 6386 return null; |
6517 } | 6387 } |
6518 return element.importedLibrary; | 6388 return element.importedLibrary; |
6519 } | 6389 } |
6520 | 6390 |
6521 /** | 6391 /** |
6522 * Set the prefix to be used with the imported names to the given identifier. | 6392 * Set the prefix to be used with the imported names to the given identifier. |
6523 * | 6393 * |
6524 * @param prefix the prefix to be used with the imported names | 6394 * @param prefix the prefix to be used with the imported names |
6525 */ | 6395 */ |
6526 void set prefix(SimpleIdentifier prefix) { | 6396 void set prefix(SimpleIdentifier prefix) { |
6527 this._prefix = becomeParentOf(prefix); | 6397 this._prefix = becomeParentOf(prefix); |
6528 } | 6398 } |
6529 | 6399 |
6530 void visitChildren(ASTVisitor visitor) { | 6400 void visitChildren(AstVisitor visitor) { |
6531 super.visitChildren(visitor); | 6401 super.visitChildren(visitor); |
6532 safelyVisitChild(_prefix, visitor); | 6402 safelyVisitChild(_prefix, visitor); |
6533 combinators.accept(visitor); | 6403 combinators.accept(visitor); |
6534 } | 6404 } |
6535 } | 6405 } |
6536 | 6406 |
6537 /** | 6407 /** |
6538 * Instances of the class `IndexExpression` represent an index expression. | 6408 * Instances of the class `IndexExpression` represent an index expression. |
6539 * | 6409 * |
6540 * <pre> | 6410 * <pre> |
6541 * indexExpression ::= | 6411 * indexExpression ::= |
6542 * [Expression] '[' [Expression] ']' | 6412 * [Expression] '[' [Expression] ']' |
6543 * </pre> | 6413 * </pre> |
6544 * | |
6545 * @coverage dart.engine.ast | |
6546 */ | 6414 */ |
6547 class IndexExpression extends Expression { | 6415 class IndexExpression extends Expression { |
6548 /** | 6416 /** |
6549 * The expression used to compute the object being indexed, or `null` if this
index | 6417 * The expression used to compute the object being indexed, or `null` if this
index |
6550 * expression is part of a cascade expression. | 6418 * expression is part of a cascade expression. |
6551 */ | 6419 */ |
6552 Expression _target; | 6420 Expression _target; |
6553 | 6421 |
6554 /** | 6422 /** |
6555 * The period ("..") before a cascaded index expression, or `null` if this ind
ex expression | 6423 * The period ("..") before a cascaded index expression, or `null` if this ind
ex expression |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6615 * @param leftBracket the left square bracket | 6483 * @param leftBracket the left square bracket |
6616 * @param index the expression used to compute the index | 6484 * @param index the expression used to compute the index |
6617 * @param rightBracket the right square bracket | 6485 * @param rightBracket the right square bracket |
6618 */ | 6486 */ |
6619 IndexExpression.forCascade(this.period, Token leftBracket, Expression index, T
oken rightBracket) { | 6487 IndexExpression.forCascade(this.period, Token leftBracket, Expression index, T
oken rightBracket) { |
6620 this._leftBracket = leftBracket; | 6488 this._leftBracket = leftBracket; |
6621 this._index = becomeParentOf(index); | 6489 this._index = becomeParentOf(index); |
6622 this._rightBracket = rightBracket; | 6490 this._rightBracket = rightBracket; |
6623 } | 6491 } |
6624 | 6492 |
6625 accept(ASTVisitor visitor) => visitor.visitIndexExpression(this); | 6493 accept(AstVisitor visitor) => visitor.visitIndexExpression(this); |
6626 | 6494 |
6627 Token get beginToken { | 6495 Token get beginToken { |
6628 if (_target != null) { | 6496 if (_target != null) { |
6629 return _target.beginToken; | 6497 return _target.beginToken; |
6630 } | 6498 } |
6631 return period; | 6499 return period; |
6632 } | 6500 } |
6633 | 6501 |
6634 /** | 6502 /** |
6635 * Return the best element available for this operator. If resolution was able
to find a better | 6503 * Return the best element available for this operator. If resolution was able
to find a better |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6679 * Return the expression used to compute the object being indexed. If this ind
ex expression is not | 6547 * Return the expression used to compute the object being indexed. If this ind
ex expression is not |
6680 * part of a cascade expression, then this is the same as [getTarget]. If this
index | 6548 * part of a cascade expression, then this is the same as [getTarget]. If this
index |
6681 * expression is part of a cascade expression, then the target expression stor
ed with the cascade | 6549 * expression is part of a cascade expression, then the target expression stor
ed with the cascade |
6682 * expression is returned. | 6550 * expression is returned. |
6683 * | 6551 * |
6684 * @return the expression used to compute the object being indexed | 6552 * @return the expression used to compute the object being indexed |
6685 * @see #getTarget() | 6553 * @see #getTarget() |
6686 */ | 6554 */ |
6687 Expression get realTarget { | 6555 Expression get realTarget { |
6688 if (isCascaded) { | 6556 if (isCascaded) { |
6689 ASTNode ancestor = parent; | 6557 AstNode ancestor = parent; |
6690 while (ancestor is! CascadeExpression) { | 6558 while (ancestor is! CascadeExpression) { |
6691 if (ancestor == null) { | 6559 if (ancestor == null) { |
6692 return _target; | 6560 return _target; |
6693 } | 6561 } |
6694 ancestor = ancestor.parent; | 6562 ancestor = ancestor.parent; |
6695 } | 6563 } |
6696 return (ancestor as CascadeExpression).target; | 6564 return (ancestor as CascadeExpression).target; |
6697 } | 6565 } |
6698 return _target; | 6566 return _target; |
6699 } | 6567 } |
(...skipping 27 matching lines...) Expand all Loading... |
6727 /** | 6595 /** |
6728 * Return `true` if this expression is computing a right-hand value. | 6596 * Return `true` if this expression is computing a right-hand value. |
6729 * | 6597 * |
6730 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e | 6598 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e |
6731 * they mutually exclusive. In other words, it is possible for both methods to
return `true` | 6599 * they mutually exclusive. In other words, it is possible for both methods to
return `true` |
6732 * when invoked on the same node. | 6600 * when invoked on the same node. |
6733 * | 6601 * |
6734 * @return `true` if this expression is in a context where the operator '[]' w
ill be invoked | 6602 * @return `true` if this expression is in a context where the operator '[]' w
ill be invoked |
6735 */ | 6603 */ |
6736 bool inGetterContext() { | 6604 bool inGetterContext() { |
6737 ASTNode parent = this.parent; | 6605 AstNode parent = this.parent; |
6738 if (parent is AssignmentExpression) { | 6606 if (parent is AssignmentExpression) { |
6739 AssignmentExpression assignment = parent; | 6607 AssignmentExpression assignment = parent; |
6740 if (identical(assignment.leftHandSide, this) && identical(assignment.opera
tor.type, TokenType.EQ)) { | 6608 if (identical(assignment.leftHandSide, this) && identical(assignment.opera
tor.type, TokenType.EQ)) { |
6741 return false; | 6609 return false; |
6742 } | 6610 } |
6743 } | 6611 } |
6744 return true; | 6612 return true; |
6745 } | 6613 } |
6746 | 6614 |
6747 /** | 6615 /** |
6748 * Return `true` if this expression is computing a left-hand value. | 6616 * Return `true` if this expression is computing a left-hand value. |
6749 * | 6617 * |
6750 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e | 6618 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e |
6751 * they mutually exclusive. In other words, it is possible for both methods to
return `true` | 6619 * they mutually exclusive. In other words, it is possible for both methods to
return `true` |
6752 * when invoked on the same node. | 6620 * when invoked on the same node. |
6753 * | 6621 * |
6754 * @return `true` if this expression is in a context where the operator '[]='
will be | 6622 * @return `true` if this expression is in a context where the operator '[]='
will be |
6755 * invoked | 6623 * invoked |
6756 */ | 6624 */ |
6757 bool inSetterContext() { | 6625 bool inSetterContext() { |
6758 ASTNode parent = this.parent; | 6626 AstNode parent = this.parent; |
6759 if (parent is PrefixExpression) { | 6627 if (parent is PrefixExpression) { |
6760 return parent.operator.type.isIncrementOperator; | 6628 return parent.operator.type.isIncrementOperator; |
6761 } else if (parent is PostfixExpression) { | 6629 } else if (parent is PostfixExpression) { |
6762 return true; | 6630 return true; |
6763 } else if (parent is AssignmentExpression) { | 6631 } else if (parent is AssignmentExpression) { |
6764 return identical(parent.leftHandSide, this); | 6632 return identical(parent.leftHandSide, this); |
6765 } | 6633 } |
6766 return false; | 6634 return false; |
6767 } | 6635 } |
6768 | 6636 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6826 | 6694 |
6827 /** | 6695 /** |
6828 * Set the expression used to compute the object being indexed to the given ex
pression. | 6696 * Set the expression used to compute the object being indexed to the given ex
pression. |
6829 * | 6697 * |
6830 * @param expression the expression used to compute the object being indexed | 6698 * @param expression the expression used to compute the object being indexed |
6831 */ | 6699 */ |
6832 void set target(Expression expression) { | 6700 void set target(Expression expression) { |
6833 _target = becomeParentOf(expression); | 6701 _target = becomeParentOf(expression); |
6834 } | 6702 } |
6835 | 6703 |
6836 void visitChildren(ASTVisitor visitor) { | 6704 void visitChildren(AstVisitor visitor) { |
6837 safelyVisitChild(_target, visitor); | 6705 safelyVisitChild(_target, visitor); |
6838 safelyVisitChild(_index, visitor); | 6706 safelyVisitChild(_index, visitor); |
6839 } | 6707 } |
6840 | 6708 |
6841 /** | 6709 /** |
6842 * If the AST structure has been resolved, and the function being invoked is k
nown based on | 6710 * If the AST structure has been resolved, and the function being invoked is k
nown based on |
6843 * propagated type information, then return the parameter element representing
the parameter to | 6711 * propagated type information, then return the parameter element representing
the parameter to |
6844 * which the value of the index expression will be bound. Otherwise, return `n
ull`. | 6712 * which the value of the index expression will be bound. Otherwise, return `n
ull`. |
6845 * | 6713 * |
6846 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | 6714 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6882 } | 6750 } |
6883 | 6751 |
6884 /** | 6752 /** |
6885 * Instances of the class `InstanceCreationExpression` represent an instance cre
ation | 6753 * Instances of the class `InstanceCreationExpression` represent an instance cre
ation |
6886 * expression. | 6754 * expression. |
6887 * | 6755 * |
6888 * <pre> | 6756 * <pre> |
6889 * newExpression ::= | 6757 * newExpression ::= |
6890 * ('new' | 'const') [TypeName] ('.' [SimpleIdentifier])? [ArgumentList] | 6758 * ('new' | 'const') [TypeName] ('.' [SimpleIdentifier])? [ArgumentList] |
6891 * </pre> | 6759 * </pre> |
6892 * | |
6893 * @coverage dart.engine.ast | |
6894 */ | 6760 */ |
6895 class InstanceCreationExpression extends Expression { | 6761 class InstanceCreationExpression extends Expression { |
6896 /** | 6762 /** |
6897 * The keyword used to indicate how an object should be created. | 6763 * The keyword used to indicate how an object should be created. |
6898 */ | 6764 */ |
6899 Token keyword; | 6765 Token keyword; |
6900 | 6766 |
6901 /** | 6767 /** |
6902 * The name of the constructor to be invoked. | 6768 * The name of the constructor to be invoked. |
6903 */ | 6769 */ |
(...skipping 15 matching lines...) Expand all Loading... |
6919 * | 6785 * |
6920 * @param keyword the keyword used to indicate how an object should be created | 6786 * @param keyword the keyword used to indicate how an object should be created |
6921 * @param constructorName the name of the constructor to be invoked | 6787 * @param constructorName the name of the constructor to be invoked |
6922 * @param argumentList the list of arguments to the constructor | 6788 * @param argumentList the list of arguments to the constructor |
6923 */ | 6789 */ |
6924 InstanceCreationExpression(this.keyword, ConstructorName constructorName, Argu
mentList argumentList) { | 6790 InstanceCreationExpression(this.keyword, ConstructorName constructorName, Argu
mentList argumentList) { |
6925 this.constructorName = becomeParentOf(constructorName); | 6791 this.constructorName = becomeParentOf(constructorName); |
6926 this._argumentList = becomeParentOf(argumentList); | 6792 this._argumentList = becomeParentOf(argumentList); |
6927 } | 6793 } |
6928 | 6794 |
6929 accept(ASTVisitor visitor) => visitor.visitInstanceCreationExpression(this); | 6795 accept(AstVisitor visitor) => visitor.visitInstanceCreationExpression(this); |
6930 | 6796 |
6931 /** | 6797 /** |
6932 * Return the list of arguments to the constructor. | 6798 * Return the list of arguments to the constructor. |
6933 * | 6799 * |
6934 * @return the list of arguments to the constructor | 6800 * @return the list of arguments to the constructor |
6935 */ | 6801 */ |
6936 ArgumentList get argumentList => _argumentList; | 6802 ArgumentList get argumentList => _argumentList; |
6937 | 6803 |
6938 Token get beginToken => keyword; | 6804 Token get beginToken => keyword; |
6939 | 6805 |
(...skipping 10 matching lines...) Expand all Loading... |
6950 | 6816 |
6951 /** | 6817 /** |
6952 * Set the list of arguments to the constructor to the given list. | 6818 * Set the list of arguments to the constructor to the given list. |
6953 * | 6819 * |
6954 * @param argumentList the list of arguments to the constructor | 6820 * @param argumentList the list of arguments to the constructor |
6955 */ | 6821 */ |
6956 void set argumentList(ArgumentList argumentList) { | 6822 void set argumentList(ArgumentList argumentList) { |
6957 this._argumentList = becomeParentOf(argumentList); | 6823 this._argumentList = becomeParentOf(argumentList); |
6958 } | 6824 } |
6959 | 6825 |
6960 void visitChildren(ASTVisitor visitor) { | 6826 void visitChildren(AstVisitor visitor) { |
6961 safelyVisitChild(constructorName, visitor); | 6827 safelyVisitChild(constructorName, visitor); |
6962 safelyVisitChild(_argumentList, visitor); | 6828 safelyVisitChild(_argumentList, visitor); |
6963 } | 6829 } |
6964 } | 6830 } |
6965 | 6831 |
6966 /** | 6832 /** |
6967 * Instances of the class `IntegerLiteral` represent an integer literal expressi
on. | 6833 * Instances of the class `IntegerLiteral` represent an integer literal expressi
on. |
6968 * | 6834 * |
6969 * <pre> | 6835 * <pre> |
6970 * integerLiteral ::= | 6836 * integerLiteral ::= |
6971 * decimalIntegerLiteral | 6837 * decimalIntegerLiteral |
6972 * | hexidecimalIntegerLiteral | 6838 * | hexidecimalIntegerLiteral |
6973 * | 6839 * |
6974 * decimalIntegerLiteral ::= | 6840 * decimalIntegerLiteral ::= |
6975 * decimalDigit+ | 6841 * decimalDigit+ |
6976 * | 6842 * |
6977 * hexidecimalIntegerLiteral ::= | 6843 * hexidecimalIntegerLiteral ::= |
6978 * '0x' hexidecimalDigit+ | 6844 * '0x' hexidecimalDigit+ |
6979 * | '0X' hexidecimalDigit+ | 6845 * | '0X' hexidecimalDigit+ |
6980 * </pre> | 6846 * </pre> |
6981 * | |
6982 * @coverage dart.engine.ast | |
6983 */ | 6847 */ |
6984 class IntegerLiteral extends Literal { | 6848 class IntegerLiteral extends Literal { |
6985 /** | 6849 /** |
6986 * The token representing the literal. | 6850 * The token representing the literal. |
6987 */ | 6851 */ |
6988 Token literal; | 6852 Token literal; |
6989 | 6853 |
6990 /** | 6854 /** |
6991 * The value of the literal. | 6855 * The value of the literal. |
6992 */ | 6856 */ |
6993 int value = 0; | 6857 int value = 0; |
6994 | 6858 |
6995 /** | 6859 /** |
6996 * Initialize a newly created integer literal. | 6860 * Initialize a newly created integer literal. |
6997 * | 6861 * |
6998 * @param literal the token representing the literal | 6862 * @param literal the token representing the literal |
6999 * @param value the value of the literal | 6863 * @param value the value of the literal |
7000 */ | 6864 */ |
7001 IntegerLiteral(this.literal, this.value); | 6865 IntegerLiteral(this.literal, this.value); |
7002 | 6866 |
7003 accept(ASTVisitor visitor) => visitor.visitIntegerLiteral(this); | 6867 accept(AstVisitor visitor) => visitor.visitIntegerLiteral(this); |
7004 | 6868 |
7005 Token get beginToken => literal; | 6869 Token get beginToken => literal; |
7006 | 6870 |
7007 Token get endToken => literal; | 6871 Token get endToken => literal; |
7008 | 6872 |
7009 void visitChildren(ASTVisitor visitor) { | 6873 void visitChildren(AstVisitor visitor) { |
7010 } | 6874 } |
7011 } | 6875 } |
7012 | 6876 |
7013 /** | 6877 /** |
7014 * The abstract class `InterpolationElement` defines the behavior common to elem
ents within a | 6878 * The abstract class `InterpolationElement` defines the behavior common to elem
ents within a |
7015 * [StringInterpolation]. | 6879 * [StringInterpolation]. |
7016 * | 6880 * |
7017 * <pre> | 6881 * <pre> |
7018 * interpolationElement ::= | 6882 * interpolationElement ::= |
7019 * [InterpolationExpression] | 6883 * [InterpolationExpression] |
7020 * | [InterpolationString] | 6884 * | [InterpolationString] |
7021 * </pre> | 6885 * </pre> |
7022 * | |
7023 * @coverage dart.engine.ast | |
7024 */ | 6886 */ |
7025 abstract class InterpolationElement extends ASTNode { | 6887 abstract class InterpolationElement extends AstNode { |
7026 } | 6888 } |
7027 | 6889 |
7028 /** | 6890 /** |
7029 * Instances of the class `InterpolationExpression` represent an expression embe
dded in a | 6891 * Instances of the class `InterpolationExpression` represent an expression embe
dded in a |
7030 * string interpolation. | 6892 * string interpolation. |
7031 * | 6893 * |
7032 * <pre> | 6894 * <pre> |
7033 * interpolationExpression ::= | 6895 * interpolationExpression ::= |
7034 * '$' [SimpleIdentifier] | 6896 * '$' [SimpleIdentifier] |
7035 * | '$' '{' [Expression] '}' | 6897 * | '$' '{' [Expression] '}' |
7036 * </pre> | 6898 * </pre> |
7037 * | |
7038 * @coverage dart.engine.ast | |
7039 */ | 6899 */ |
7040 class InterpolationExpression extends InterpolationElement { | 6900 class InterpolationExpression extends InterpolationElement { |
7041 /** | 6901 /** |
7042 * The token used to introduce the interpolation expression; either '$' if the
expression is a | 6902 * The token used to introduce the interpolation expression; either '$' if the
expression is a |
7043 * simple identifier or '${' if the expression is a full expression. | 6903 * simple identifier or '${' if the expression is a full expression. |
7044 */ | 6904 */ |
7045 Token leftBracket; | 6905 Token leftBracket; |
7046 | 6906 |
7047 /** | 6907 /** |
7048 * The expression to be evaluated for the value to be converted into a string. | 6908 * The expression to be evaluated for the value to be converted into a string. |
7049 */ | 6909 */ |
7050 Expression _expression; | 6910 Expression _expression; |
7051 | 6911 |
7052 /** | 6912 /** |
7053 * The right curly bracket, or `null` if the expression is an identifier witho
ut brackets. | 6913 * The right curly bracket, or `null` if the expression is an identifier witho
ut brackets. |
7054 */ | 6914 */ |
7055 Token rightBracket; | 6915 Token rightBracket; |
7056 | 6916 |
7057 /** | 6917 /** |
7058 * Initialize a newly created interpolation expression. | 6918 * Initialize a newly created interpolation expression. |
7059 * | 6919 * |
7060 * @param leftBracket the left curly bracket | 6920 * @param leftBracket the left curly bracket |
7061 * @param expression the expression to be evaluated for the value to be conver
ted into a string | 6921 * @param expression the expression to be evaluated for the value to be conver
ted into a string |
7062 * @param rightBracket the right curly bracket | 6922 * @param rightBracket the right curly bracket |
7063 */ | 6923 */ |
7064 InterpolationExpression(this.leftBracket, Expression expression, this.rightBra
cket) { | 6924 InterpolationExpression(this.leftBracket, Expression expression, this.rightBra
cket) { |
7065 this._expression = becomeParentOf(expression); | 6925 this._expression = becomeParentOf(expression); |
7066 } | 6926 } |
7067 | 6927 |
7068 accept(ASTVisitor visitor) => visitor.visitInterpolationExpression(this); | 6928 accept(AstVisitor visitor) => visitor.visitInterpolationExpression(this); |
7069 | 6929 |
7070 Token get beginToken => leftBracket; | 6930 Token get beginToken => leftBracket; |
7071 | 6931 |
7072 Token get endToken { | 6932 Token get endToken { |
7073 if (rightBracket != null) { | 6933 if (rightBracket != null) { |
7074 return rightBracket; | 6934 return rightBracket; |
7075 } | 6935 } |
7076 return _expression.endToken; | 6936 return _expression.endToken; |
7077 } | 6937 } |
7078 | 6938 |
7079 /** | 6939 /** |
7080 * Return the expression to be evaluated for the value to be converted into a
string. | 6940 * Return the expression to be evaluated for the value to be converted into a
string. |
7081 * | 6941 * |
7082 * @return the expression to be evaluated for the value to be converted into a
string | 6942 * @return the expression to be evaluated for the value to be converted into a
string |
7083 */ | 6943 */ |
7084 Expression get expression => _expression; | 6944 Expression get expression => _expression; |
7085 | 6945 |
7086 /** | 6946 /** |
7087 * Set the expression to be evaluated for the value to be converted into a str
ing to the given | 6947 * Set the expression to be evaluated for the value to be converted into a str
ing to the given |
7088 * expression. | 6948 * expression. |
7089 * | 6949 * |
7090 * @param expression the expression to be evaluated for the value to be conver
ted into a string | 6950 * @param expression the expression to be evaluated for the value to be conver
ted into a string |
7091 */ | 6951 */ |
7092 void set expression(Expression expression) { | 6952 void set expression(Expression expression) { |
7093 this._expression = becomeParentOf(expression); | 6953 this._expression = becomeParentOf(expression); |
7094 } | 6954 } |
7095 | 6955 |
7096 void visitChildren(ASTVisitor visitor) { | 6956 void visitChildren(AstVisitor visitor) { |
7097 safelyVisitChild(_expression, visitor); | 6957 safelyVisitChild(_expression, visitor); |
7098 } | 6958 } |
7099 } | 6959 } |
7100 | 6960 |
7101 /** | 6961 /** |
7102 * Instances of the class `InterpolationString` represent a non-empty substring
of an | 6962 * Instances of the class `InterpolationString` represent a non-empty substring
of an |
7103 * interpolated string. | 6963 * interpolated string. |
7104 * | 6964 * |
7105 * <pre> | 6965 * <pre> |
7106 * interpolationString ::= | 6966 * interpolationString ::= |
7107 * characters | 6967 * characters |
7108 * </pre> | 6968 * </pre> |
7109 * | |
7110 * @coverage dart.engine.ast | |
7111 */ | 6969 */ |
7112 class InterpolationString extends InterpolationElement { | 6970 class InterpolationString extends InterpolationElement { |
7113 /** | 6971 /** |
7114 * The characters that will be added to the string. | 6972 * The characters that will be added to the string. |
7115 */ | 6973 */ |
7116 Token _contents; | 6974 Token _contents; |
7117 | 6975 |
7118 /** | 6976 /** |
7119 * The value of the literal. | 6977 * The value of the literal. |
7120 */ | 6978 */ |
7121 String _value; | 6979 String _value; |
7122 | 6980 |
7123 /** | 6981 /** |
7124 * Initialize a newly created string of characters that are part of a string i
nterpolation. | 6982 * Initialize a newly created string of characters that are part of a string i
nterpolation. |
7125 * | 6983 * |
7126 * @param the characters that will be added to the string | 6984 * @param the characters that will be added to the string |
7127 * @param value the value of the literal | 6985 * @param value the value of the literal |
7128 */ | 6986 */ |
7129 InterpolationString(Token contents, String value) { | 6987 InterpolationString(Token contents, String value) { |
7130 this._contents = contents; | 6988 this._contents = contents; |
7131 this._value = value; | 6989 this._value = value; |
7132 } | 6990 } |
7133 | 6991 |
7134 accept(ASTVisitor visitor) => visitor.visitInterpolationString(this); | 6992 accept(AstVisitor visitor) => visitor.visitInterpolationString(this); |
7135 | 6993 |
7136 Token get beginToken => _contents; | 6994 Token get beginToken => _contents; |
7137 | 6995 |
7138 /** | 6996 /** |
7139 * Return the characters that will be added to the string. | 6997 * Return the characters that will be added to the string. |
7140 * | 6998 * |
7141 * @return the characters that will be added to the string | 6999 * @return the characters that will be added to the string |
7142 */ | 7000 */ |
7143 Token get contents => _contents; | 7001 Token get contents => _contents; |
7144 | 7002 |
(...skipping 17 matching lines...) Expand all Loading... |
7162 | 7020 |
7163 /** | 7021 /** |
7164 * Set the value of the literal to the given string. | 7022 * Set the value of the literal to the given string. |
7165 * | 7023 * |
7166 * @param string the value of the literal | 7024 * @param string the value of the literal |
7167 */ | 7025 */ |
7168 void set value(String string) { | 7026 void set value(String string) { |
7169 _value = string; | 7027 _value = string; |
7170 } | 7028 } |
7171 | 7029 |
7172 void visitChildren(ASTVisitor visitor) { | 7030 void visitChildren(AstVisitor visitor) { |
7173 } | 7031 } |
7174 } | 7032 } |
7175 | 7033 |
7176 /** | 7034 /** |
7177 * Instances of the class `IsExpression` represent an is expression. | 7035 * Instances of the class `IsExpression` represent an is expression. |
7178 * | 7036 * |
7179 * <pre> | 7037 * <pre> |
7180 * isExpression ::= | 7038 * isExpression ::= |
7181 * [Expression] 'is' '!'? [TypeName] | 7039 * [Expression] 'is' '!'? [TypeName] |
7182 * </pre> | 7040 * </pre> |
7183 * | |
7184 * @coverage dart.engine.ast | |
7185 */ | 7041 */ |
7186 class IsExpression extends Expression { | 7042 class IsExpression extends Expression { |
7187 /** | 7043 /** |
7188 * The expression used to compute the value whose type is being tested. | 7044 * The expression used to compute the value whose type is being tested. |
7189 */ | 7045 */ |
7190 Expression _expression; | 7046 Expression _expression; |
7191 | 7047 |
7192 /** | 7048 /** |
7193 * The is operator. | 7049 * The is operator. |
7194 */ | 7050 */ |
(...skipping 15 matching lines...) Expand all Loading... |
7210 * @param expression the expression used to compute the value whose type is be
ing tested | 7066 * @param expression the expression used to compute the value whose type is be
ing tested |
7211 * @param isOperator the is operator | 7067 * @param isOperator the is operator |
7212 * @param notOperator the not operator, or `null` if the sense of the test is
not negated | 7068 * @param notOperator the not operator, or `null` if the sense of the test is
not negated |
7213 * @param type the name of the type being tested for | 7069 * @param type the name of the type being tested for |
7214 */ | 7070 */ |
7215 IsExpression(Expression expression, this.isOperator, this.notOperator, TypeNam
e type) { | 7071 IsExpression(Expression expression, this.isOperator, this.notOperator, TypeNam
e type) { |
7216 this._expression = becomeParentOf(expression); | 7072 this._expression = becomeParentOf(expression); |
7217 this._type = becomeParentOf(type); | 7073 this._type = becomeParentOf(type); |
7218 } | 7074 } |
7219 | 7075 |
7220 accept(ASTVisitor visitor) => visitor.visitIsExpression(this); | 7076 accept(AstVisitor visitor) => visitor.visitIsExpression(this); |
7221 | 7077 |
7222 Token get beginToken => _expression.beginToken; | 7078 Token get beginToken => _expression.beginToken; |
7223 | 7079 |
7224 Token get endToken => _type.endToken; | 7080 Token get endToken => _type.endToken; |
7225 | 7081 |
7226 /** | 7082 /** |
7227 * Return the expression used to compute the value whose type is being tested. | 7083 * Return the expression used to compute the value whose type is being tested. |
7228 * | 7084 * |
7229 * @return the expression used to compute the value whose type is being tested | 7085 * @return the expression used to compute the value whose type is being tested |
7230 */ | 7086 */ |
(...skipping 20 matching lines...) Expand all Loading... |
7251 | 7107 |
7252 /** | 7108 /** |
7253 * Set the name of the type being tested for to the given name. | 7109 * Set the name of the type being tested for to the given name. |
7254 * | 7110 * |
7255 * @param name the name of the type being tested for | 7111 * @param name the name of the type being tested for |
7256 */ | 7112 */ |
7257 void set type(TypeName name) { | 7113 void set type(TypeName name) { |
7258 this._type = becomeParentOf(name); | 7114 this._type = becomeParentOf(name); |
7259 } | 7115 } |
7260 | 7116 |
7261 void visitChildren(ASTVisitor visitor) { | 7117 void visitChildren(AstVisitor visitor) { |
7262 safelyVisitChild(_expression, visitor); | 7118 safelyVisitChild(_expression, visitor); |
7263 safelyVisitChild(_type, visitor); | 7119 safelyVisitChild(_type, visitor); |
7264 } | 7120 } |
7265 } | 7121 } |
7266 | 7122 |
7267 /** | 7123 /** |
7268 * Instances of the class `Label` represent a label. | 7124 * Instances of the class `Label` represent a label. |
7269 * | 7125 * |
7270 * <pre> | 7126 * <pre> |
7271 * label ::= | 7127 * label ::= |
7272 * [SimpleIdentifier] ':' | 7128 * [SimpleIdentifier] ':' |
7273 * </pre> | 7129 * </pre> |
7274 * | |
7275 * @coverage dart.engine.ast | |
7276 */ | 7130 */ |
7277 class Label extends ASTNode { | 7131 class Label extends AstNode { |
7278 /** | 7132 /** |
7279 * The label being associated with the statement. | 7133 * The label being associated with the statement. |
7280 */ | 7134 */ |
7281 SimpleIdentifier _label; | 7135 SimpleIdentifier _label; |
7282 | 7136 |
7283 /** | 7137 /** |
7284 * The colon that separates the label from the statement. | 7138 * The colon that separates the label from the statement. |
7285 */ | 7139 */ |
7286 Token colon; | 7140 Token colon; |
7287 | 7141 |
7288 /** | 7142 /** |
7289 * Initialize a newly created label. | 7143 * Initialize a newly created label. |
7290 * | 7144 * |
7291 * @param label the label being applied | 7145 * @param label the label being applied |
7292 * @param colon the colon that separates the label from whatever follows | 7146 * @param colon the colon that separates the label from whatever follows |
7293 */ | 7147 */ |
7294 Label(SimpleIdentifier label, this.colon) { | 7148 Label(SimpleIdentifier label, this.colon) { |
7295 this._label = becomeParentOf(label); | 7149 this._label = becomeParentOf(label); |
7296 } | 7150 } |
7297 | 7151 |
7298 accept(ASTVisitor visitor) => visitor.visitLabel(this); | 7152 accept(AstVisitor visitor) => visitor.visitLabel(this); |
7299 | 7153 |
7300 Token get beginToken => _label.beginToken; | 7154 Token get beginToken => _label.beginToken; |
7301 | 7155 |
7302 Token get endToken => colon; | 7156 Token get endToken => colon; |
7303 | 7157 |
7304 /** | 7158 /** |
7305 * Return the label being associated with the statement. | 7159 * Return the label being associated with the statement. |
7306 * | 7160 * |
7307 * @return the label being associated with the statement | 7161 * @return the label being associated with the statement |
7308 */ | 7162 */ |
7309 SimpleIdentifier get label => _label; | 7163 SimpleIdentifier get label => _label; |
7310 | 7164 |
7311 /** | 7165 /** |
7312 * Set the label being associated with the statement to the given label. | 7166 * Set the label being associated with the statement to the given label. |
7313 * | 7167 * |
7314 * @param label the label being associated with the statement | 7168 * @param label the label being associated with the statement |
7315 */ | 7169 */ |
7316 void set label(SimpleIdentifier label) { | 7170 void set label(SimpleIdentifier label) { |
7317 this._label = becomeParentOf(label); | 7171 this._label = becomeParentOf(label); |
7318 } | 7172 } |
7319 | 7173 |
7320 void visitChildren(ASTVisitor visitor) { | 7174 void visitChildren(AstVisitor visitor) { |
7321 safelyVisitChild(_label, visitor); | 7175 safelyVisitChild(_label, visitor); |
7322 } | 7176 } |
7323 } | 7177 } |
7324 | 7178 |
7325 /** | 7179 /** |
7326 * Instances of the class `LabeledStatement` represent a statement that has a la
bel associated | 7180 * Instances of the class `LabeledStatement` represent a statement that has a la
bel associated |
7327 * with them. | 7181 * with them. |
7328 * | 7182 * |
7329 * <pre> | 7183 * <pre> |
7330 * labeledStatement ::= | 7184 * labeledStatement ::= |
7331 * [Label]+ [Statement] | 7185 * [Label]+ [Statement] |
7332 * </pre> | 7186 * </pre> |
7333 * | |
7334 * @coverage dart.engine.ast | |
7335 */ | 7187 */ |
7336 class LabeledStatement extends Statement { | 7188 class LabeledStatement extends Statement { |
7337 /** | 7189 /** |
7338 * The labels being associated with the statement. | 7190 * The labels being associated with the statement. |
7339 */ | 7191 */ |
7340 NodeList<Label> _labels; | 7192 NodeList<Label> _labels; |
7341 | 7193 |
7342 /** | 7194 /** |
7343 * The statement with which the labels are being associated. | 7195 * The statement with which the labels are being associated. |
7344 */ | 7196 */ |
7345 Statement _statement; | 7197 Statement _statement; |
7346 | 7198 |
7347 /** | 7199 /** |
7348 * Initialize a newly created labeled statement. | 7200 * Initialize a newly created labeled statement. |
7349 * | 7201 * |
7350 * @param labels the labels being associated with the statement | 7202 * @param labels the labels being associated with the statement |
7351 * @param statement the statement with which the labels are being associated | 7203 * @param statement the statement with which the labels are being associated |
7352 */ | 7204 */ |
7353 LabeledStatement(List<Label> labels, Statement statement) { | 7205 LabeledStatement(List<Label> labels, Statement statement) { |
7354 this._labels = new NodeList<Label>(this); | 7206 this._labels = new NodeList<Label>(this); |
7355 this._labels.addAll(labels); | 7207 this._labels.addAll(labels); |
7356 this._statement = becomeParentOf(statement); | 7208 this._statement = becomeParentOf(statement); |
7357 } | 7209 } |
7358 | 7210 |
7359 accept(ASTVisitor visitor) => visitor.visitLabeledStatement(this); | 7211 accept(AstVisitor visitor) => visitor.visitLabeledStatement(this); |
7360 | 7212 |
7361 Token get beginToken { | 7213 Token get beginToken { |
7362 if (!_labels.isEmpty) { | 7214 if (!_labels.isEmpty) { |
7363 return _labels.beginToken; | 7215 return _labels.beginToken; |
7364 } | 7216 } |
7365 return _statement.beginToken; | 7217 return _statement.beginToken; |
7366 } | 7218 } |
7367 | 7219 |
7368 Token get endToken => _statement.endToken; | 7220 Token get endToken => _statement.endToken; |
7369 | 7221 |
(...skipping 13 matching lines...) Expand all Loading... |
7383 | 7235 |
7384 /** | 7236 /** |
7385 * Set the statement with which the labels are being associated to the given s
tatement. | 7237 * Set the statement with which the labels are being associated to the given s
tatement. |
7386 * | 7238 * |
7387 * @param statement the statement with which the labels are being associated | 7239 * @param statement the statement with which the labels are being associated |
7388 */ | 7240 */ |
7389 void set statement(Statement statement) { | 7241 void set statement(Statement statement) { |
7390 this._statement = becomeParentOf(statement); | 7242 this._statement = becomeParentOf(statement); |
7391 } | 7243 } |
7392 | 7244 |
7393 void visitChildren(ASTVisitor visitor) { | 7245 void visitChildren(AstVisitor visitor) { |
7394 _labels.accept(visitor); | 7246 _labels.accept(visitor); |
7395 safelyVisitChild(_statement, visitor); | 7247 safelyVisitChild(_statement, visitor); |
7396 } | 7248 } |
7397 } | 7249 } |
7398 | 7250 |
7399 /** | 7251 /** |
7400 * Instances of the class `LibraryDirective` represent a library directive. | 7252 * Instances of the class `LibraryDirective` represent a library directive. |
7401 * | 7253 * |
7402 * <pre> | 7254 * <pre> |
7403 * libraryDirective ::= | 7255 * libraryDirective ::= |
7404 * [Annotation] 'library' [Identifier] ';' | 7256 * [Annotation] 'library' [Identifier] ';' |
7405 * </pre> | 7257 * </pre> |
7406 * | |
7407 * @coverage dart.engine.ast | |
7408 */ | 7258 */ |
7409 class LibraryDirective extends Directive { | 7259 class LibraryDirective extends Directive { |
7410 /** | 7260 /** |
7411 * The token representing the 'library' token. | 7261 * The token representing the 'library' token. |
7412 */ | 7262 */ |
7413 Token libraryToken; | 7263 Token libraryToken; |
7414 | 7264 |
7415 /** | 7265 /** |
7416 * The name of the library being defined. | 7266 * The name of the library being defined. |
7417 */ | 7267 */ |
(...skipping 10 matching lines...) Expand all Loading... |
7428 * @param comment the documentation comment associated with this directive | 7278 * @param comment the documentation comment associated with this directive |
7429 * @param metadata the annotations associated with the directive | 7279 * @param metadata the annotations associated with the directive |
7430 * @param libraryToken the token representing the 'library' token | 7280 * @param libraryToken the token representing the 'library' token |
7431 * @param name the name of the library being defined | 7281 * @param name the name of the library being defined |
7432 * @param semicolon the semicolon terminating the directive | 7282 * @param semicolon the semicolon terminating the directive |
7433 */ | 7283 */ |
7434 LibraryDirective(Comment comment, List<Annotation> metadata, this.libraryToken
, LibraryIdentifier name, this.semicolon) : super(comment, metadata) { | 7284 LibraryDirective(Comment comment, List<Annotation> metadata, this.libraryToken
, LibraryIdentifier name, this.semicolon) : super(comment, metadata) { |
7435 this._name = becomeParentOf(name); | 7285 this._name = becomeParentOf(name); |
7436 } | 7286 } |
7437 | 7287 |
7438 accept(ASTVisitor visitor) => visitor.visitLibraryDirective(this); | 7288 accept(AstVisitor visitor) => visitor.visitLibraryDirective(this); |
7439 | 7289 |
7440 Token get endToken => semicolon; | 7290 Token get endToken => semicolon; |
7441 | 7291 |
7442 Token get keyword => libraryToken; | 7292 Token get keyword => libraryToken; |
7443 | 7293 |
7444 /** | 7294 /** |
7445 * Return the name of the library being defined. | 7295 * Return the name of the library being defined. |
7446 * | 7296 * |
7447 * @return the name of the library being defined | 7297 * @return the name of the library being defined |
7448 */ | 7298 */ |
7449 LibraryIdentifier get name => _name; | 7299 LibraryIdentifier get name => _name; |
7450 | 7300 |
7451 /** | 7301 /** |
7452 * Set the name of the library being defined to the given name. | 7302 * Set the name of the library being defined to the given name. |
7453 * | 7303 * |
7454 * @param name the name of the library being defined | 7304 * @param name the name of the library being defined |
7455 */ | 7305 */ |
7456 void set name(LibraryIdentifier name) { | 7306 void set name(LibraryIdentifier name) { |
7457 this._name = becomeParentOf(name); | 7307 this._name = becomeParentOf(name); |
7458 } | 7308 } |
7459 | 7309 |
7460 void visitChildren(ASTVisitor visitor) { | 7310 void visitChildren(AstVisitor visitor) { |
7461 super.visitChildren(visitor); | 7311 super.visitChildren(visitor); |
7462 safelyVisitChild(_name, visitor); | 7312 safelyVisitChild(_name, visitor); |
7463 } | 7313 } |
7464 | 7314 |
7465 Token get firstTokenAfterCommentAndMetadata => libraryToken; | 7315 Token get firstTokenAfterCommentAndMetadata => libraryToken; |
7466 } | 7316 } |
7467 | 7317 |
7468 /** | 7318 /** |
7469 * Instances of the class `LibraryIdentifier` represent the identifier for a lib
rary. | 7319 * Instances of the class `LibraryIdentifier` represent the identifier for a lib
rary. |
7470 * | 7320 * |
7471 * <pre> | 7321 * <pre> |
7472 * libraryIdentifier ::= | 7322 * libraryIdentifier ::= |
7473 * [SimpleIdentifier] ('.' [SimpleIdentifier])* | 7323 * [SimpleIdentifier] ('.' [SimpleIdentifier])* |
7474 * </pre> | 7324 * </pre> |
7475 * | |
7476 * @coverage dart.engine.ast | |
7477 */ | 7325 */ |
7478 class LibraryIdentifier extends Identifier { | 7326 class LibraryIdentifier extends Identifier { |
7479 /** | 7327 /** |
7480 * The components of the identifier. | 7328 * The components of the identifier. |
7481 */ | 7329 */ |
7482 NodeList<SimpleIdentifier> _components; | 7330 NodeList<SimpleIdentifier> _components; |
7483 | 7331 |
7484 /** | 7332 /** |
7485 * Initialize a newly created prefixed identifier. | 7333 * Initialize a newly created prefixed identifier. |
7486 * | 7334 * |
7487 * @param components the components of the identifier | 7335 * @param components the components of the identifier |
7488 */ | 7336 */ |
7489 LibraryIdentifier(List<SimpleIdentifier> components) { | 7337 LibraryIdentifier(List<SimpleIdentifier> components) { |
7490 this._components = new NodeList<SimpleIdentifier>(this); | 7338 this._components = new NodeList<SimpleIdentifier>(this); |
7491 this._components.addAll(components); | 7339 this._components.addAll(components); |
7492 } | 7340 } |
7493 | 7341 |
7494 accept(ASTVisitor visitor) => visitor.visitLibraryIdentifier(this); | 7342 accept(AstVisitor visitor) => visitor.visitLibraryIdentifier(this); |
7495 | 7343 |
7496 Token get beginToken => _components.beginToken; | 7344 Token get beginToken => _components.beginToken; |
7497 | 7345 |
7498 Element get bestElement => staticElement; | 7346 Element get bestElement => staticElement; |
7499 | 7347 |
7500 /** | 7348 /** |
7501 * Return the components of the identifier. | 7349 * Return the components of the identifier. |
7502 * | 7350 * |
7503 * @return the components of the identifier | 7351 * @return the components of the identifier |
7504 */ | 7352 */ |
(...skipping 14 matching lines...) Expand all Loading... |
7519 } | 7367 } |
7520 return builder.toString(); | 7368 return builder.toString(); |
7521 } | 7369 } |
7522 | 7370 |
7523 int get precedence => 15; | 7371 int get precedence => 15; |
7524 | 7372 |
7525 Element get propagatedElement => null; | 7373 Element get propagatedElement => null; |
7526 | 7374 |
7527 Element get staticElement => null; | 7375 Element get staticElement => null; |
7528 | 7376 |
7529 void visitChildren(ASTVisitor visitor) { | 7377 void visitChildren(AstVisitor visitor) { |
7530 _components.accept(visitor); | 7378 _components.accept(visitor); |
7531 } | 7379 } |
7532 } | 7380 } |
7533 | 7381 |
7534 /** | 7382 /** |
7535 * Instances of the class `ListLiteral` represent a list literal. | 7383 * Instances of the class `ListLiteral` represent a list literal. |
7536 * | 7384 * |
7537 * <pre> | 7385 * <pre> |
7538 * listLiteral ::= | 7386 * listLiteral ::= |
7539 * 'const'? ('<' [TypeName] '>')? '[' ([Expression] ','?)? ']' | 7387 * 'const'? ('<' [TypeName] '>')? '[' ([Expression] ','?)? ']' |
7540 * </pre> | 7388 * </pre> |
7541 * | |
7542 * @coverage dart.engine.ast | |
7543 */ | 7389 */ |
7544 class ListLiteral extends TypedLiteral { | 7390 class ListLiteral extends TypedLiteral { |
7545 /** | 7391 /** |
7546 * The left square bracket. | 7392 * The left square bracket. |
7547 */ | 7393 */ |
7548 Token _leftBracket; | 7394 Token _leftBracket; |
7549 | 7395 |
7550 /** | 7396 /** |
7551 * The expressions used to compute the elements of the list. | 7397 * The expressions used to compute the elements of the list. |
7552 */ | 7398 */ |
(...skipping 14 matching lines...) Expand all Loading... |
7567 * @param elements the expressions used to compute the elements of the list | 7413 * @param elements the expressions used to compute the elements of the list |
7568 * @param rightBracket the right square bracket | 7414 * @param rightBracket the right square bracket |
7569 */ | 7415 */ |
7570 ListLiteral(Token constKeyword, TypeArgumentList typeArguments, Token leftBrac
ket, List<Expression> elements, Token rightBracket) : super(constKeyword, typeAr
guments) { | 7416 ListLiteral(Token constKeyword, TypeArgumentList typeArguments, Token leftBrac
ket, List<Expression> elements, Token rightBracket) : super(constKeyword, typeAr
guments) { |
7571 this._elements = new NodeList<Expression>(this); | 7417 this._elements = new NodeList<Expression>(this); |
7572 this._leftBracket = leftBracket; | 7418 this._leftBracket = leftBracket; |
7573 this._elements.addAll(elements); | 7419 this._elements.addAll(elements); |
7574 this._rightBracket = rightBracket; | 7420 this._rightBracket = rightBracket; |
7575 } | 7421 } |
7576 | 7422 |
7577 accept(ASTVisitor visitor) => visitor.visitListLiteral(this); | 7423 accept(AstVisitor visitor) => visitor.visitListLiteral(this); |
7578 | 7424 |
7579 Token get beginToken { | 7425 Token get beginToken { |
7580 Token token = constKeyword; | 7426 Token token = constKeyword; |
7581 if (token != null) { | 7427 if (token != null) { |
7582 return token; | 7428 return token; |
7583 } | 7429 } |
7584 TypeArgumentList typeArguments = this.typeArguments; | 7430 TypeArgumentList typeArguments = this.typeArguments; |
7585 if (typeArguments != null) { | 7431 if (typeArguments != null) { |
7586 return typeArguments.beginToken; | 7432 return typeArguments.beginToken; |
7587 } | 7433 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7622 | 7468 |
7623 /** | 7469 /** |
7624 * Set the right square bracket to the given token. | 7470 * Set the right square bracket to the given token. |
7625 * | 7471 * |
7626 * @param bracket the right square bracket | 7472 * @param bracket the right square bracket |
7627 */ | 7473 */ |
7628 void set rightBracket(Token bracket) { | 7474 void set rightBracket(Token bracket) { |
7629 _rightBracket = bracket; | 7475 _rightBracket = bracket; |
7630 } | 7476 } |
7631 | 7477 |
7632 void visitChildren(ASTVisitor visitor) { | 7478 void visitChildren(AstVisitor visitor) { |
7633 super.visitChildren(visitor); | 7479 super.visitChildren(visitor); |
7634 _elements.accept(visitor); | 7480 _elements.accept(visitor); |
7635 } | 7481 } |
7636 } | 7482 } |
7637 | 7483 |
7638 /** | 7484 /** |
7639 * The abstract class `Literal` defines the behavior common to nodes that repres
ent a literal | 7485 * The abstract class `Literal` defines the behavior common to nodes that repres
ent a literal |
7640 * expression. | 7486 * expression. |
7641 * | 7487 * |
7642 * <pre> | 7488 * <pre> |
7643 * literal ::= | 7489 * literal ::= |
7644 * [BooleanLiteral] | 7490 * [BooleanLiteral] |
7645 * | [DoubleLiteral] | 7491 * | [DoubleLiteral] |
7646 * | [IntegerLiteral] | 7492 * | [IntegerLiteral] |
7647 * | [ListLiteral] | 7493 * | [ListLiteral] |
7648 * | [MapLiteral] | 7494 * | [MapLiteral] |
7649 * | [NullLiteral] | 7495 * | [NullLiteral] |
7650 * | [StringLiteral] | 7496 * | [StringLiteral] |
7651 * </pre> | 7497 * </pre> |
7652 * | |
7653 * @coverage dart.engine.ast | |
7654 */ | 7498 */ |
7655 abstract class Literal extends Expression { | 7499 abstract class Literal extends Expression { |
7656 int get precedence => 16; | 7500 int get precedence => 16; |
7657 } | 7501 } |
7658 | 7502 |
7659 /** | 7503 /** |
7660 * Instances of the class `MapLiteral` represent a literal map. | 7504 * Instances of the class `MapLiteral` represent a literal map. |
7661 * | 7505 * |
7662 * <pre> | 7506 * <pre> |
7663 * mapLiteral ::= | 7507 * mapLiteral ::= |
7664 * 'const'? ('<' [TypeName] (',' [TypeName])* '>')? '{' ([MapLiteralEntry] (
',' [MapLiteralEntry])* ','?)? '}' | 7508 * 'const'? ('<' [TypeName] (',' [TypeName])* '>')? '{' ([MapLiteralEntry] (
',' [MapLiteralEntry])* ','?)? '}' |
7665 * </pre> | 7509 * </pre> |
7666 * | |
7667 * @coverage dart.engine.ast | |
7668 */ | 7510 */ |
7669 class MapLiteral extends TypedLiteral { | 7511 class MapLiteral extends TypedLiteral { |
7670 /** | 7512 /** |
7671 * The left curly bracket. | 7513 * The left curly bracket. |
7672 */ | 7514 */ |
7673 Token _leftBracket; | 7515 Token _leftBracket; |
7674 | 7516 |
7675 /** | 7517 /** |
7676 * The entries in the map. | 7518 * The entries in the map. |
7677 */ | 7519 */ |
(...skipping 14 matching lines...) Expand all Loading... |
7692 * @param entries the entries in the map | 7534 * @param entries the entries in the map |
7693 * @param rightBracket the right curly bracket | 7535 * @param rightBracket the right curly bracket |
7694 */ | 7536 */ |
7695 MapLiteral(Token constKeyword, TypeArgumentList typeArguments, Token leftBrack
et, List<MapLiteralEntry> entries, Token rightBracket) : super(constKeyword, typ
eArguments) { | 7537 MapLiteral(Token constKeyword, TypeArgumentList typeArguments, Token leftBrack
et, List<MapLiteralEntry> entries, Token rightBracket) : super(constKeyword, typ
eArguments) { |
7696 this._entries = new NodeList<MapLiteralEntry>(this); | 7538 this._entries = new NodeList<MapLiteralEntry>(this); |
7697 this._leftBracket = leftBracket; | 7539 this._leftBracket = leftBracket; |
7698 this._entries.addAll(entries); | 7540 this._entries.addAll(entries); |
7699 this._rightBracket = rightBracket; | 7541 this._rightBracket = rightBracket; |
7700 } | 7542 } |
7701 | 7543 |
7702 accept(ASTVisitor visitor) => visitor.visitMapLiteral(this); | 7544 accept(AstVisitor visitor) => visitor.visitMapLiteral(this); |
7703 | 7545 |
7704 Token get beginToken { | 7546 Token get beginToken { |
7705 Token token = constKeyword; | 7547 Token token = constKeyword; |
7706 if (token != null) { | 7548 if (token != null) { |
7707 return token; | 7549 return token; |
7708 } | 7550 } |
7709 TypeArgumentList typeArguments = this.typeArguments; | 7551 TypeArgumentList typeArguments = this.typeArguments; |
7710 if (typeArguments != null) { | 7552 if (typeArguments != null) { |
7711 return typeArguments.beginToken; | 7553 return typeArguments.beginToken; |
7712 } | 7554 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7747 | 7589 |
7748 /** | 7590 /** |
7749 * Set the right curly bracket to the given token. | 7591 * Set the right curly bracket to the given token. |
7750 * | 7592 * |
7751 * @param bracket the right curly bracket | 7593 * @param bracket the right curly bracket |
7752 */ | 7594 */ |
7753 void set rightBracket(Token bracket) { | 7595 void set rightBracket(Token bracket) { |
7754 _rightBracket = bracket; | 7596 _rightBracket = bracket; |
7755 } | 7597 } |
7756 | 7598 |
7757 void visitChildren(ASTVisitor visitor) { | 7599 void visitChildren(AstVisitor visitor) { |
7758 super.visitChildren(visitor); | 7600 super.visitChildren(visitor); |
7759 _entries.accept(visitor); | 7601 _entries.accept(visitor); |
7760 } | 7602 } |
7761 } | 7603 } |
7762 | 7604 |
7763 /** | 7605 /** |
7764 * Instances of the class `MapLiteralEntry` represent a single key/value pair in
a map | 7606 * Instances of the class `MapLiteralEntry` represent a single key/value pair in
a map |
7765 * literal. | 7607 * literal. |
7766 * | 7608 * |
7767 * <pre> | 7609 * <pre> |
7768 * mapLiteralEntry ::= | 7610 * mapLiteralEntry ::= |
7769 * [Expression] ':' [Expression] | 7611 * [Expression] ':' [Expression] |
7770 * </pre> | 7612 * </pre> |
7771 * | |
7772 * @coverage dart.engine.ast | |
7773 */ | 7613 */ |
7774 class MapLiteralEntry extends ASTNode { | 7614 class MapLiteralEntry extends AstNode { |
7775 /** | 7615 /** |
7776 * The expression computing the key with which the value will be associated. | 7616 * The expression computing the key with which the value will be associated. |
7777 */ | 7617 */ |
7778 Expression _key; | 7618 Expression _key; |
7779 | 7619 |
7780 /** | 7620 /** |
7781 * The colon that separates the key from the value. | 7621 * The colon that separates the key from the value. |
7782 */ | 7622 */ |
7783 Token separator; | 7623 Token separator; |
7784 | 7624 |
7785 /** | 7625 /** |
7786 * The expression computing the value that will be associated with the key. | 7626 * The expression computing the value that will be associated with the key. |
7787 */ | 7627 */ |
7788 Expression _value; | 7628 Expression _value; |
7789 | 7629 |
7790 /** | 7630 /** |
7791 * Initialize a newly created map literal entry. | 7631 * Initialize a newly created map literal entry. |
7792 * | 7632 * |
7793 * @param key the expression computing the key with which the value will be as
sociated | 7633 * @param key the expression computing the key with which the value will be as
sociated |
7794 * @param separator the colon that separates the key from the value | 7634 * @param separator the colon that separates the key from the value |
7795 * @param value the expression computing the value that will be associated wit
h the key | 7635 * @param value the expression computing the value that will be associated wit
h the key |
7796 */ | 7636 */ |
7797 MapLiteralEntry(Expression key, this.separator, Expression value) { | 7637 MapLiteralEntry(Expression key, this.separator, Expression value) { |
7798 this._key = becomeParentOf(key); | 7638 this._key = becomeParentOf(key); |
7799 this._value = becomeParentOf(value); | 7639 this._value = becomeParentOf(value); |
7800 } | 7640 } |
7801 | 7641 |
7802 accept(ASTVisitor visitor) => visitor.visitMapLiteralEntry(this); | 7642 accept(AstVisitor visitor) => visitor.visitMapLiteralEntry(this); |
7803 | 7643 |
7804 Token get beginToken => _key.beginToken; | 7644 Token get beginToken => _key.beginToken; |
7805 | 7645 |
7806 Token get endToken => _value.endToken; | 7646 Token get endToken => _value.endToken; |
7807 | 7647 |
7808 /** | 7648 /** |
7809 * Return the expression computing the key with which the value will be associ
ated. | 7649 * Return the expression computing the key with which the value will be associ
ated. |
7810 * | 7650 * |
7811 * @return the expression computing the key with which the value will be assoc
iated | 7651 * @return the expression computing the key with which the value will be assoc
iated |
7812 */ | 7652 */ |
(...skipping 19 matching lines...) Expand all Loading... |
7832 /** | 7672 /** |
7833 * Set the expression computing the value that will be associated with the key
to the given | 7673 * Set the expression computing the value that will be associated with the key
to the given |
7834 * expression. | 7674 * expression. |
7835 * | 7675 * |
7836 * @param expression the expression computing the value that will be associate
d with the key | 7676 * @param expression the expression computing the value that will be associate
d with the key |
7837 */ | 7677 */ |
7838 void set value(Expression expression) { | 7678 void set value(Expression expression) { |
7839 _value = becomeParentOf(expression); | 7679 _value = becomeParentOf(expression); |
7840 } | 7680 } |
7841 | 7681 |
7842 void visitChildren(ASTVisitor visitor) { | 7682 void visitChildren(AstVisitor visitor) { |
7843 safelyVisitChild(_key, visitor); | 7683 safelyVisitChild(_key, visitor); |
7844 safelyVisitChild(_value, visitor); | 7684 safelyVisitChild(_value, visitor); |
7845 } | 7685 } |
7846 } | 7686 } |
7847 | 7687 |
7848 /** | 7688 /** |
7849 * Instances of the class `MethodDeclaration` represent a method declaration. | 7689 * Instances of the class `MethodDeclaration` represent a method declaration. |
7850 * | 7690 * |
7851 * <pre> | 7691 * <pre> |
7852 * methodDeclaration ::= | 7692 * methodDeclaration ::= |
7853 * methodSignature [FunctionBody] | 7693 * methodSignature [FunctionBody] |
7854 * | 7694 * |
7855 * methodSignature ::= | 7695 * methodSignature ::= |
7856 * 'external'? ('abstract' | 'static')? [Type]? ('get' | 'set')? methodName | 7696 * 'external'? ('abstract' | 'static')? [Type]? ('get' | 'set')? methodName |
7857 * [FormalParameterList] | 7697 * [FormalParameterList] |
7858 * | 7698 * |
7859 * methodName ::= | 7699 * methodName ::= |
7860 * [SimpleIdentifier] | 7700 * [SimpleIdentifier] |
7861 * | 'operator' [SimpleIdentifier] | 7701 * | 'operator' [SimpleIdentifier] |
7862 * </pre> | 7702 * </pre> |
7863 * | |
7864 * @coverage dart.engine.ast | |
7865 */ | 7703 */ |
7866 class MethodDeclaration extends ClassMember { | 7704 class MethodDeclaration extends ClassMember { |
7867 /** | 7705 /** |
7868 * The token for the 'external' keyword, or `null` if the constructor is not e
xternal. | 7706 * The token for the 'external' keyword, or `null` if the constructor is not e
xternal. |
7869 */ | 7707 */ |
7870 Token externalKeyword; | 7708 Token externalKeyword; |
7871 | 7709 |
7872 /** | 7710 /** |
7873 * The token representing the 'abstract' or 'static' keyword, or `null` if nei
ther modifier | 7711 * The token representing the 'abstract' or 'static' keyword, or `null` if nei
ther modifier |
7874 * was specified. | 7712 * was specified. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7922 * declares a getter | 7760 * declares a getter |
7923 * @param body the body of the method | 7761 * @param body the body of the method |
7924 */ | 7762 */ |
7925 MethodDeclaration(Comment comment, List<Annotation> metadata, this.externalKey
word, this.modifierKeyword, TypeName returnType, this.propertyKeyword, this.oper
atorKeyword, SimpleIdentifier name, FormalParameterList parameters, FunctionBody
body) : super(comment, metadata) { | 7763 MethodDeclaration(Comment comment, List<Annotation> metadata, this.externalKey
word, this.modifierKeyword, TypeName returnType, this.propertyKeyword, this.oper
atorKeyword, SimpleIdentifier name, FormalParameterList parameters, FunctionBody
body) : super(comment, metadata) { |
7926 this._returnType = becomeParentOf(returnType); | 7764 this._returnType = becomeParentOf(returnType); |
7927 this._name = becomeParentOf(name); | 7765 this._name = becomeParentOf(name); |
7928 this._parameters = becomeParentOf(parameters); | 7766 this._parameters = becomeParentOf(parameters); |
7929 this._body = becomeParentOf(body); | 7767 this._body = becomeParentOf(body); |
7930 } | 7768 } |
7931 | 7769 |
7932 accept(ASTVisitor visitor) => visitor.visitMethodDeclaration(this); | 7770 accept(AstVisitor visitor) => visitor.visitMethodDeclaration(this); |
7933 | 7771 |
7934 /** | 7772 /** |
7935 * Return the body of the method. | 7773 * Return the body of the method. |
7936 * | 7774 * |
7937 * @return the body of the method | 7775 * @return the body of the method |
7938 */ | 7776 */ |
7939 FunctionBody get body => _body; | 7777 FunctionBody get body => _body; |
7940 | 7778 |
7941 /** | 7779 /** |
7942 * Return the element associated with this method, or `null` if the AST struct
ure has not | 7780 * Return the element associated with this method, or `null` if the AST struct
ure has not |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8036 | 7874 |
8037 /** | 7875 /** |
8038 * Set the return type of the method to the given type name. | 7876 * Set the return type of the method to the given type name. |
8039 * | 7877 * |
8040 * @param typeName the return type of the method | 7878 * @param typeName the return type of the method |
8041 */ | 7879 */ |
8042 void set returnType(TypeName typeName) { | 7880 void set returnType(TypeName typeName) { |
8043 _returnType = becomeParentOf(typeName); | 7881 _returnType = becomeParentOf(typeName); |
8044 } | 7882 } |
8045 | 7883 |
8046 void visitChildren(ASTVisitor visitor) { | 7884 void visitChildren(AstVisitor visitor) { |
8047 super.visitChildren(visitor); | 7885 super.visitChildren(visitor); |
8048 safelyVisitChild(_returnType, visitor); | 7886 safelyVisitChild(_returnType, visitor); |
8049 safelyVisitChild(_name, visitor); | 7887 safelyVisitChild(_name, visitor); |
8050 safelyVisitChild(_parameters, visitor); | 7888 safelyVisitChild(_parameters, visitor); |
8051 safelyVisitChild(_body, visitor); | 7889 safelyVisitChild(_body, visitor); |
8052 } | 7890 } |
8053 | 7891 |
8054 Token get firstTokenAfterCommentAndMetadata { | 7892 Token get firstTokenAfterCommentAndMetadata { |
8055 if (modifierKeyword != null) { | 7893 if (modifierKeyword != null) { |
8056 return modifierKeyword; | 7894 return modifierKeyword; |
(...skipping 12 matching lines...) Expand all Loading... |
8069 * Instances of the class `MethodInvocation` represent the invocation of either
a function or | 7907 * Instances of the class `MethodInvocation` represent the invocation of either
a function or |
8070 * a method. Invocations of functions resulting from evaluating an expression ar
e represented by | 7908 * a method. Invocations of functions resulting from evaluating an expression ar
e represented by |
8071 * [FunctionExpressionInvocation] nodes. Invocations of getters | 7909 * [FunctionExpressionInvocation] nodes. Invocations of getters |
8072 * and setters are represented by either [PrefixedIdentifier] or | 7910 * and setters are represented by either [PrefixedIdentifier] or |
8073 * [PropertyAccess] nodes. | 7911 * [PropertyAccess] nodes. |
8074 * | 7912 * |
8075 * <pre> | 7913 * <pre> |
8076 * methodInvoction ::= | 7914 * methodInvoction ::= |
8077 * ([Expression] '.')? [SimpleIdentifier] [ArgumentList] | 7915 * ([Expression] '.')? [SimpleIdentifier] [ArgumentList] |
8078 * </pre> | 7916 * </pre> |
8079 * | |
8080 * @coverage dart.engine.ast | |
8081 */ | 7917 */ |
8082 class MethodInvocation extends Expression { | 7918 class MethodInvocation extends Expression { |
8083 /** | 7919 /** |
8084 * The expression producing the object on which the method is defined, or `nul
l` if there is | 7920 * The expression producing the object on which the method is defined, or `nul
l` if there is |
8085 * no target (that is, the target is implicitly `this`). | 7921 * no target (that is, the target is implicitly `this`). |
8086 */ | 7922 */ |
8087 Expression _target; | 7923 Expression _target; |
8088 | 7924 |
8089 /** | 7925 /** |
8090 * The period that separates the target from the method name, or `null` if the
re is no | 7926 * The period that separates the target from the method name, or `null` if the
re is no |
(...skipping 18 matching lines...) Expand all Loading... |
8109 * @param period the period that separates the target from the method name | 7945 * @param period the period that separates the target from the method name |
8110 * @param methodName the name of the method being invoked | 7946 * @param methodName the name of the method being invoked |
8111 * @param argumentList the list of arguments to the method | 7947 * @param argumentList the list of arguments to the method |
8112 */ | 7948 */ |
8113 MethodInvocation(Expression target, this.period, SimpleIdentifier methodName,
ArgumentList argumentList) { | 7949 MethodInvocation(Expression target, this.period, SimpleIdentifier methodName,
ArgumentList argumentList) { |
8114 this._target = becomeParentOf(target); | 7950 this._target = becomeParentOf(target); |
8115 this._methodName = becomeParentOf(methodName); | 7951 this._methodName = becomeParentOf(methodName); |
8116 this._argumentList = becomeParentOf(argumentList); | 7952 this._argumentList = becomeParentOf(argumentList); |
8117 } | 7953 } |
8118 | 7954 |
8119 accept(ASTVisitor visitor) => visitor.visitMethodInvocation(this); | 7955 accept(AstVisitor visitor) => visitor.visitMethodInvocation(this); |
8120 | 7956 |
8121 /** | 7957 /** |
8122 * Return the list of arguments to the method. | 7958 * Return the list of arguments to the method. |
8123 * | 7959 * |
8124 * @return the list of arguments to the method | 7960 * @return the list of arguments to the method |
8125 */ | 7961 */ |
8126 ArgumentList get argumentList => _argumentList; | 7962 ArgumentList get argumentList => _argumentList; |
8127 | 7963 |
8128 Token get beginToken { | 7964 Token get beginToken { |
8129 if (_target != null) { | 7965 if (_target != null) { |
(...skipping 19 matching lines...) Expand all Loading... |
8149 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not | 7985 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not |
8150 * part of a cascade expression, then this is the same as [getTarget]. If this
invocation | 7986 * part of a cascade expression, then this is the same as [getTarget]. If this
invocation |
8151 * is part of a cascade expression, then the target stored with the cascade ex
pression is | 7987 * is part of a cascade expression, then the target stored with the cascade ex
pression is |
8152 * returned. | 7988 * returned. |
8153 * | 7989 * |
8154 * @return the expression used to compute the receiver of the invocation | 7990 * @return the expression used to compute the receiver of the invocation |
8155 * @see #getTarget() | 7991 * @see #getTarget() |
8156 */ | 7992 */ |
8157 Expression get realTarget { | 7993 Expression get realTarget { |
8158 if (isCascaded) { | 7994 if (isCascaded) { |
8159 ASTNode ancestor = parent; | 7995 AstNode ancestor = parent; |
8160 while (ancestor is! CascadeExpression) { | 7996 while (ancestor is! CascadeExpression) { |
8161 if (ancestor == null) { | 7997 if (ancestor == null) { |
8162 return _target; | 7998 return _target; |
8163 } | 7999 } |
8164 ancestor = ancestor.parent; | 8000 ancestor = ancestor.parent; |
8165 } | 8001 } |
8166 return (ancestor as CascadeExpression).target; | 8002 return (ancestor as CascadeExpression).target; |
8167 } | 8003 } |
8168 return _target; | 8004 return _target; |
8169 } | 8005 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8207 | 8043 |
8208 /** | 8044 /** |
8209 * Set the expression producing the object on which the method is defined to t
he given expression. | 8045 * Set the expression producing the object on which the method is defined to t
he given expression. |
8210 * | 8046 * |
8211 * @param expression the expression producing the object on which the method i
s defined | 8047 * @param expression the expression producing the object on which the method i
s defined |
8212 */ | 8048 */ |
8213 void set target(Expression expression) { | 8049 void set target(Expression expression) { |
8214 _target = becomeParentOf(expression); | 8050 _target = becomeParentOf(expression); |
8215 } | 8051 } |
8216 | 8052 |
8217 void visitChildren(ASTVisitor visitor) { | 8053 void visitChildren(AstVisitor visitor) { |
8218 safelyVisitChild(_target, visitor); | 8054 safelyVisitChild(_target, visitor); |
8219 safelyVisitChild(_methodName, visitor); | 8055 safelyVisitChild(_methodName, visitor); |
8220 safelyVisitChild(_argumentList, visitor); | 8056 safelyVisitChild(_argumentList, visitor); |
8221 } | 8057 } |
8222 } | 8058 } |
8223 | 8059 |
8224 /** | 8060 /** |
8225 * Instances of the class `NamedExpression` represent an expression that has a n
ame associated | 8061 * Instances of the class `NamedExpression` represent an expression that has a n
ame associated |
8226 * with it. They are used in method invocations when there are named parameters. | 8062 * with it. They are used in method invocations when there are named parameters. |
8227 * | 8063 * |
8228 * <pre> | 8064 * <pre> |
8229 * namedExpression ::= | 8065 * namedExpression ::= |
8230 * [Label] [Expression] | 8066 * [Label] [Expression] |
8231 * </pre> | 8067 * </pre> |
8232 * | |
8233 * @coverage dart.engine.ast | |
8234 */ | 8068 */ |
8235 class NamedExpression extends Expression { | 8069 class NamedExpression extends Expression { |
8236 /** | 8070 /** |
8237 * The name associated with the expression. | 8071 * The name associated with the expression. |
8238 */ | 8072 */ |
8239 Label _name; | 8073 Label _name; |
8240 | 8074 |
8241 /** | 8075 /** |
8242 * The expression with which the name is associated. | 8076 * The expression with which the name is associated. |
8243 */ | 8077 */ |
8244 Expression _expression; | 8078 Expression _expression; |
8245 | 8079 |
8246 /** | 8080 /** |
8247 * Initialize a newly created named expression. | 8081 * Initialize a newly created named expression. |
8248 * | 8082 * |
8249 * @param name the name associated with the expression | 8083 * @param name the name associated with the expression |
8250 * @param expression the expression with which the name is associated | 8084 * @param expression the expression with which the name is associated |
8251 */ | 8085 */ |
8252 NamedExpression(Label name, Expression expression) { | 8086 NamedExpression(Label name, Expression expression) { |
8253 this._name = becomeParentOf(name); | 8087 this._name = becomeParentOf(name); |
8254 this._expression = becomeParentOf(expression); | 8088 this._expression = becomeParentOf(expression); |
8255 } | 8089 } |
8256 | 8090 |
8257 accept(ASTVisitor visitor) => visitor.visitNamedExpression(this); | 8091 accept(AstVisitor visitor) => visitor.visitNamedExpression(this); |
8258 | 8092 |
8259 Token get beginToken => _name.beginToken; | 8093 Token get beginToken => _name.beginToken; |
8260 | 8094 |
8261 /** | 8095 /** |
8262 * Return the element representing the parameter being named by this expressio
n, or `null` | 8096 * Return the element representing the parameter being named by this expressio
n, or `null` |
8263 * if the AST structure has not been resolved or if there is no parameter with
the same name as | 8097 * if the AST structure has not been resolved or if there is no parameter with
the same name as |
8264 * this expression. | 8098 * this expression. |
8265 * | 8099 * |
8266 * @return the element representing the parameter being named by this expressi
on | 8100 * @return the element representing the parameter being named by this expressi
on |
8267 */ | 8101 */ |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8302 | 8136 |
8303 /** | 8137 /** |
8304 * Set the name associated with the expression to the given identifier. | 8138 * Set the name associated with the expression to the given identifier. |
8305 * | 8139 * |
8306 * @param identifier the name associated with the expression | 8140 * @param identifier the name associated with the expression |
8307 */ | 8141 */ |
8308 void set name(Label identifier) { | 8142 void set name(Label identifier) { |
8309 _name = becomeParentOf(identifier); | 8143 _name = becomeParentOf(identifier); |
8310 } | 8144 } |
8311 | 8145 |
8312 void visitChildren(ASTVisitor visitor) { | 8146 void visitChildren(AstVisitor visitor) { |
8313 safelyVisitChild(_name, visitor); | 8147 safelyVisitChild(_name, visitor); |
8314 safelyVisitChild(_expression, visitor); | 8148 safelyVisitChild(_expression, visitor); |
8315 } | 8149 } |
8316 } | 8150 } |
8317 | 8151 |
8318 /** | 8152 /** |
8319 * The abstract class `NamespaceDirective` defines the behavior common to nodes
that represent | 8153 * The abstract class `NamespaceDirective` defines the behavior common to nodes
that represent |
8320 * a directive that impacts the namespace of a library. | 8154 * a directive that impacts the namespace of a library. |
8321 * | 8155 * |
8322 * <pre> | 8156 * <pre> |
8323 * directive ::= | 8157 * directive ::= |
8324 * [ExportDirective] | 8158 * [ExportDirective] |
8325 * | [ImportDirective] | 8159 * | [ImportDirective] |
8326 * </pre> | 8160 * </pre> |
8327 * | |
8328 * @coverage dart.engine.ast | |
8329 */ | 8161 */ |
8330 abstract class NamespaceDirective extends UriBasedDirective { | 8162 abstract class NamespaceDirective extends UriBasedDirective { |
8331 /** | 8163 /** |
8332 * The token representing the 'import' or 'export' keyword. | 8164 * The token representing the 'import' or 'export' keyword. |
8333 */ | 8165 */ |
8334 Token keyword; | 8166 Token keyword; |
8335 | 8167 |
8336 /** | 8168 /** |
8337 * The combinators used to control which names are imported or exported. | 8169 * The combinators used to control which names are imported or exported. |
8338 */ | 8170 */ |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8373 } | 8205 } |
8374 | 8206 |
8375 /** | 8207 /** |
8376 * Instances of the class `NativeClause` represent the "native" clause in an cla
ss | 8208 * Instances of the class `NativeClause` represent the "native" clause in an cla
ss |
8377 * declaration. | 8209 * declaration. |
8378 * | 8210 * |
8379 * <pre> | 8211 * <pre> |
8380 * nativeClause ::= | 8212 * nativeClause ::= |
8381 * 'native' [StringLiteral] | 8213 * 'native' [StringLiteral] |
8382 * </pre> | 8214 * </pre> |
8383 * | |
8384 * @coverage dart.engine.ast | |
8385 */ | 8215 */ |
8386 class NativeClause extends ASTNode { | 8216 class NativeClause extends AstNode { |
8387 /** | 8217 /** |
8388 * The token representing the 'native' keyword. | 8218 * The token representing the 'native' keyword. |
8389 */ | 8219 */ |
8390 Token keyword; | 8220 Token keyword; |
8391 | 8221 |
8392 /** | 8222 /** |
8393 * The name of the native object that implements the class. | 8223 * The name of the native object that implements the class. |
8394 */ | 8224 */ |
8395 StringLiteral name; | 8225 StringLiteral name; |
8396 | 8226 |
8397 /** | 8227 /** |
8398 * Initialize a newly created native clause. | 8228 * Initialize a newly created native clause. |
8399 * | 8229 * |
8400 * @param keyword the token representing the 'native' keyword | 8230 * @param keyword the token representing the 'native' keyword |
8401 * @param name the name of the native object that implements the class. | 8231 * @param name the name of the native object that implements the class. |
8402 */ | 8232 */ |
8403 NativeClause(this.keyword, this.name); | 8233 NativeClause(this.keyword, this.name); |
8404 | 8234 |
8405 accept(ASTVisitor visitor) => visitor.visitNativeClause(this); | 8235 accept(AstVisitor visitor) => visitor.visitNativeClause(this); |
8406 | 8236 |
8407 Token get beginToken => keyword; | 8237 Token get beginToken => keyword; |
8408 | 8238 |
8409 Token get endToken => name.endToken; | 8239 Token get endToken => name.endToken; |
8410 | 8240 |
8411 void visitChildren(ASTVisitor visitor) { | 8241 void visitChildren(AstVisitor visitor) { |
8412 safelyVisitChild(name, visitor); | 8242 safelyVisitChild(name, visitor); |
8413 } | 8243 } |
8414 } | 8244 } |
8415 | 8245 |
8416 /** | 8246 /** |
8417 * Instances of the class `NativeFunctionBody` represent a function body that co
nsists of a | 8247 * Instances of the class `NativeFunctionBody` represent a function body that co
nsists of a |
8418 * native keyword followed by a string literal. | 8248 * native keyword followed by a string literal. |
8419 * | 8249 * |
8420 * <pre> | 8250 * <pre> |
8421 * nativeFunctionBody ::= | 8251 * nativeFunctionBody ::= |
8422 * 'native' [SimpleStringLiteral] ';' | 8252 * 'native' [SimpleStringLiteral] ';' |
8423 * </pre> | 8253 * </pre> |
8424 * | |
8425 * @coverage dart.engine.ast | |
8426 */ | 8254 */ |
8427 class NativeFunctionBody extends FunctionBody { | 8255 class NativeFunctionBody extends FunctionBody { |
8428 /** | 8256 /** |
8429 * The token representing 'native' that marks the start of the function body. | 8257 * The token representing 'native' that marks the start of the function body. |
8430 */ | 8258 */ |
8431 final Token nativeToken; | 8259 final Token nativeToken; |
8432 | 8260 |
8433 /** | 8261 /** |
8434 * The string literal, after the 'native' token. | 8262 * The string literal, after the 'native' token. |
8435 */ | 8263 */ |
8436 StringLiteral _stringLiteral; | 8264 StringLiteral _stringLiteral; |
8437 | 8265 |
8438 /** | 8266 /** |
8439 * The token representing the semicolon that marks the end of the function bod
y. | 8267 * The token representing the semicolon that marks the end of the function bod
y. |
8440 */ | 8268 */ |
8441 final Token semicolon; | 8269 final Token semicolon; |
8442 | 8270 |
8443 /** | 8271 /** |
8444 * Initialize a newly created function body consisting of the 'native' token,
a string literal, | 8272 * Initialize a newly created function body consisting of the 'native' token,
a string literal, |
8445 * and a semicolon. | 8273 * and a semicolon. |
8446 * | 8274 * |
8447 * @param nativeToken the token representing 'native' that marks the start of
the function body | 8275 * @param nativeToken the token representing 'native' that marks the start of
the function body |
8448 * @param stringLiteral the string literal | 8276 * @param stringLiteral the string literal |
8449 * @param semicolon the token representing the semicolon that marks the end of
the function body | 8277 * @param semicolon the token representing the semicolon that marks the end of
the function body |
8450 */ | 8278 */ |
8451 NativeFunctionBody(this.nativeToken, StringLiteral stringLiteral, this.semicol
on) { | 8279 NativeFunctionBody(this.nativeToken, StringLiteral stringLiteral, this.semicol
on) { |
8452 this._stringLiteral = becomeParentOf(stringLiteral); | 8280 this._stringLiteral = becomeParentOf(stringLiteral); |
8453 } | 8281 } |
8454 | 8282 |
8455 accept(ASTVisitor visitor) => visitor.visitNativeFunctionBody(this); | 8283 accept(AstVisitor visitor) => visitor.visitNativeFunctionBody(this); |
8456 | 8284 |
8457 Token get beginToken => nativeToken; | 8285 Token get beginToken => nativeToken; |
8458 | 8286 |
8459 Token get endToken => semicolon; | 8287 Token get endToken => semicolon; |
8460 | 8288 |
8461 /** | 8289 /** |
8462 * Return the string literal representing the string after the 'native' token. | 8290 * Return the string literal representing the string after the 'native' token. |
8463 * | 8291 * |
8464 * @return the string literal representing the string after the 'native' token | 8292 * @return the string literal representing the string after the 'native' token |
8465 */ | 8293 */ |
8466 StringLiteral get stringLiteral => _stringLiteral; | 8294 StringLiteral get stringLiteral => _stringLiteral; |
8467 | 8295 |
8468 void visitChildren(ASTVisitor visitor) { | 8296 void visitChildren(AstVisitor visitor) { |
8469 safelyVisitChild(_stringLiteral, visitor); | 8297 safelyVisitChild(_stringLiteral, visitor); |
8470 } | 8298 } |
8471 } | 8299 } |
8472 | 8300 |
8473 /** | 8301 /** |
8474 * The abstract class `NormalFormalParameter` defines the behavior common to for
mal parameters | 8302 * The abstract class `NormalFormalParameter` defines the behavior common to for
mal parameters |
8475 * that are required (are not optional). | 8303 * that are required (are not optional). |
8476 * | 8304 * |
8477 * <pre> | 8305 * <pre> |
8478 * normalFormalParameter ::= | 8306 * normalFormalParameter ::= |
8479 * [FunctionTypedFormalParameter] | 8307 * [FunctionTypedFormalParameter] |
8480 * | [FieldFormalParameter] | 8308 * | [FieldFormalParameter] |
8481 * | [SimpleFormalParameter] | 8309 * | [SimpleFormalParameter] |
8482 * </pre> | 8310 * </pre> |
8483 * | |
8484 * @coverage dart.engine.ast | |
8485 */ | 8311 */ |
8486 abstract class NormalFormalParameter extends FormalParameter { | 8312 abstract class NormalFormalParameter extends FormalParameter { |
8487 /** | 8313 /** |
8488 * The documentation comment associated with this parameter, or `null` if this
parameter | 8314 * The documentation comment associated with this parameter, or `null` if this
parameter |
8489 * does not have a documentation comment associated with it. | 8315 * does not have a documentation comment associated with it. |
8490 */ | 8316 */ |
8491 Comment _comment; | 8317 Comment _comment; |
8492 | 8318 |
8493 /** | 8319 /** |
8494 * The annotations associated with this parameter. | 8320 * The annotations associated with this parameter. |
(...skipping 23 matching lines...) Expand all Loading... |
8518 * Return the documentation comment associated with this parameter, or `null`
if this | 8344 * Return the documentation comment associated with this parameter, or `null`
if this |
8519 * parameter does not have a documentation comment associated with it. | 8345 * parameter does not have a documentation comment associated with it. |
8520 * | 8346 * |
8521 * @return the documentation comment associated with this parameter | 8347 * @return the documentation comment associated with this parameter |
8522 */ | 8348 */ |
8523 Comment get documentationComment => _comment; | 8349 Comment get documentationComment => _comment; |
8524 | 8350 |
8525 SimpleIdentifier get identifier => _identifier; | 8351 SimpleIdentifier get identifier => _identifier; |
8526 | 8352 |
8527 ParameterKind get kind { | 8353 ParameterKind get kind { |
8528 ASTNode parent = this.parent; | 8354 AstNode parent = this.parent; |
8529 if (parent is DefaultFormalParameter) { | 8355 if (parent is DefaultFormalParameter) { |
8530 return parent.kind; | 8356 return parent.kind; |
8531 } | 8357 } |
8532 return ParameterKind.REQUIRED; | 8358 return ParameterKind.REQUIRED; |
8533 } | 8359 } |
8534 | 8360 |
8535 /** | 8361 /** |
8536 * Return the annotations associated with this parameter. | 8362 * Return the annotations associated with this parameter. |
8537 * | 8363 * |
8538 * @return the annotations associated with this parameter | 8364 * @return the annotations associated with this parameter |
(...skipping 11 matching lines...) Expand all Loading... |
8550 | 8376 |
8551 /** | 8377 /** |
8552 * Set the name of the parameter being declared to the given identifier. | 8378 * Set the name of the parameter being declared to the given identifier. |
8553 * | 8379 * |
8554 * @param identifier the name of the parameter being declared | 8380 * @param identifier the name of the parameter being declared |
8555 */ | 8381 */ |
8556 void set identifier(SimpleIdentifier identifier) { | 8382 void set identifier(SimpleIdentifier identifier) { |
8557 this._identifier = becomeParentOf(identifier); | 8383 this._identifier = becomeParentOf(identifier); |
8558 } | 8384 } |
8559 | 8385 |
8560 void visitChildren(ASTVisitor visitor) { | 8386 void visitChildren(AstVisitor visitor) { |
8561 // | 8387 // |
8562 // Note that subclasses are responsible for visiting the identifier because
they often need to | 8388 // Note that subclasses are responsible for visiting the identifier because
they often need to |
8563 // visit other nodes before visiting the identifier. | 8389 // visit other nodes before visiting the identifier. |
8564 // | 8390 // |
8565 if (commentIsBeforeAnnotations()) { | 8391 if (commentIsBeforeAnnotations()) { |
8566 safelyVisitChild(_comment, visitor); | 8392 safelyVisitChild(_comment, visitor); |
8567 _metadata.accept(visitor); | 8393 _metadata.accept(visitor); |
8568 } else { | 8394 } else { |
8569 for (ASTNode child in sortedCommentAndAnnotations) { | 8395 for (AstNode child in sortedCommentAndAnnotations) { |
8570 child.accept(visitor); | 8396 child.accept(visitor); |
8571 } | 8397 } |
8572 } | 8398 } |
8573 } | 8399 } |
8574 | 8400 |
8575 /** | 8401 /** |
8576 * Return `true` if the comment is lexically before any annotations. | 8402 * Return `true` if the comment is lexically before any annotations. |
8577 * | 8403 * |
8578 * @return `true` if the comment is lexically before any annotations | 8404 * @return `true` if the comment is lexically before any annotations |
8579 */ | 8405 */ |
8580 bool commentIsBeforeAnnotations() { | 8406 bool commentIsBeforeAnnotations() { |
8581 if (_comment == null || _metadata.isEmpty) { | 8407 if (_comment == null || _metadata.isEmpty) { |
8582 return true; | 8408 return true; |
8583 } | 8409 } |
8584 Annotation firstAnnotation = _metadata[0]; | 8410 Annotation firstAnnotation = _metadata[0]; |
8585 return _comment.offset < firstAnnotation.offset; | 8411 return _comment.offset < firstAnnotation.offset; |
8586 } | 8412 } |
8587 | 8413 |
8588 /** | 8414 /** |
8589 * Return an array containing the comment and annotations associated with this
parameter, sorted | 8415 * Return an array containing the comment and annotations associated with this
parameter, sorted |
8590 * in lexical order. | 8416 * in lexical order. |
8591 * | 8417 * |
8592 * @return the comment and annotations associated with this parameter in the o
rder in which they | 8418 * @return the comment and annotations associated with this parameter in the o
rder in which they |
8593 * appeared in the original source | 8419 * appeared in the original source |
8594 */ | 8420 */ |
8595 List<ASTNode> get sortedCommentAndAnnotations { | 8421 List<AstNode> get sortedCommentAndAnnotations { |
8596 List<ASTNode> childList = new List<ASTNode>(); | 8422 List<AstNode> childList = new List<AstNode>(); |
8597 childList.add(_comment); | 8423 childList.add(_comment); |
8598 childList.addAll(_metadata); | 8424 childList.addAll(_metadata); |
8599 List<ASTNode> children = new List.from(childList); | 8425 List<AstNode> children = new List.from(childList); |
8600 children.sort(ASTNode.LEXICAL_ORDER); | 8426 children.sort(AstNode.LEXICAL_ORDER); |
8601 return children; | 8427 return children; |
8602 } | 8428 } |
8603 } | 8429 } |
8604 | 8430 |
8605 /** | 8431 /** |
8606 * Instances of the class `NullLiteral` represent a null literal expression. | 8432 * Instances of the class `NullLiteral` represent a null literal expression. |
8607 * | 8433 * |
8608 * <pre> | 8434 * <pre> |
8609 * nullLiteral ::= | 8435 * nullLiteral ::= |
8610 * 'null' | 8436 * 'null' |
8611 * </pre> | 8437 * </pre> |
8612 * | |
8613 * @coverage dart.engine.ast | |
8614 */ | 8438 */ |
8615 class NullLiteral extends Literal { | 8439 class NullLiteral extends Literal { |
8616 /** | 8440 /** |
8617 * The token representing the literal. | 8441 * The token representing the literal. |
8618 */ | 8442 */ |
8619 Token literal; | 8443 Token literal; |
8620 | 8444 |
8621 /** | 8445 /** |
8622 * Initialize a newly created null literal. | 8446 * Initialize a newly created null literal. |
8623 * | 8447 * |
8624 * @param token the token representing the literal | 8448 * @param token the token representing the literal |
8625 */ | 8449 */ |
8626 NullLiteral(Token token) { | 8450 NullLiteral(Token token) { |
8627 this.literal = token; | 8451 this.literal = token; |
8628 } | 8452 } |
8629 | 8453 |
8630 accept(ASTVisitor visitor) => visitor.visitNullLiteral(this); | 8454 accept(AstVisitor visitor) => visitor.visitNullLiteral(this); |
8631 | 8455 |
8632 Token get beginToken => literal; | 8456 Token get beginToken => literal; |
8633 | 8457 |
8634 Token get endToken => literal; | 8458 Token get endToken => literal; |
8635 | 8459 |
8636 void visitChildren(ASTVisitor visitor) { | 8460 void visitChildren(AstVisitor visitor) { |
8637 } | 8461 } |
8638 } | 8462 } |
8639 | 8463 |
8640 /** | 8464 /** |
8641 * Instances of the class `ParenthesizedExpression` represent a parenthesized ex
pression. | 8465 * Instances of the class `ParenthesizedExpression` represent a parenthesized ex
pression. |
8642 * | 8466 * |
8643 * <pre> | 8467 * <pre> |
8644 * parenthesizedExpression ::= | 8468 * parenthesizedExpression ::= |
8645 * '(' [Expression] ')' | 8469 * '(' [Expression] ')' |
8646 * </pre> | 8470 * </pre> |
8647 * | |
8648 * @coverage dart.engine.ast | |
8649 */ | 8471 */ |
8650 class ParenthesizedExpression extends Expression { | 8472 class ParenthesizedExpression extends Expression { |
8651 /** | 8473 /** |
8652 * The left parenthesis. | 8474 * The left parenthesis. |
8653 */ | 8475 */ |
8654 Token _leftParenthesis; | 8476 Token _leftParenthesis; |
8655 | 8477 |
8656 /** | 8478 /** |
8657 * The expression within the parentheses. | 8479 * The expression within the parentheses. |
8658 */ | 8480 */ |
(...skipping 10 matching lines...) Expand all Loading... |
8669 * @param leftParenthesis the left parenthesis | 8491 * @param leftParenthesis the left parenthesis |
8670 * @param expression the expression within the parentheses | 8492 * @param expression the expression within the parentheses |
8671 * @param rightParenthesis the right parenthesis | 8493 * @param rightParenthesis the right parenthesis |
8672 */ | 8494 */ |
8673 ParenthesizedExpression(Token leftParenthesis, Expression expression, Token ri
ghtParenthesis) { | 8495 ParenthesizedExpression(Token leftParenthesis, Expression expression, Token ri
ghtParenthesis) { |
8674 this._leftParenthesis = leftParenthesis; | 8496 this._leftParenthesis = leftParenthesis; |
8675 this._expression = becomeParentOf(expression); | 8497 this._expression = becomeParentOf(expression); |
8676 this._rightParenthesis = rightParenthesis; | 8498 this._rightParenthesis = rightParenthesis; |
8677 } | 8499 } |
8678 | 8500 |
8679 accept(ASTVisitor visitor) => visitor.visitParenthesizedExpression(this); | 8501 accept(AstVisitor visitor) => visitor.visitParenthesizedExpression(this); |
8680 | 8502 |
8681 Token get beginToken => _leftParenthesis; | 8503 Token get beginToken => _leftParenthesis; |
8682 | 8504 |
8683 Token get endToken => _rightParenthesis; | 8505 Token get endToken => _rightParenthesis; |
8684 | 8506 |
8685 /** | 8507 /** |
8686 * Return the expression within the parentheses. | 8508 * Return the expression within the parentheses. |
8687 * | 8509 * |
8688 * @return the expression within the parentheses | 8510 * @return the expression within the parentheses |
8689 */ | 8511 */ |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8725 | 8547 |
8726 /** | 8548 /** |
8727 * Set the right parenthesis to the given token. | 8549 * Set the right parenthesis to the given token. |
8728 * | 8550 * |
8729 * @param parenthesis the right parenthesis | 8551 * @param parenthesis the right parenthesis |
8730 */ | 8552 */ |
8731 void set rightParenthesis(Token parenthesis) { | 8553 void set rightParenthesis(Token parenthesis) { |
8732 _rightParenthesis = parenthesis; | 8554 _rightParenthesis = parenthesis; |
8733 } | 8555 } |
8734 | 8556 |
8735 void visitChildren(ASTVisitor visitor) { | 8557 void visitChildren(AstVisitor visitor) { |
8736 safelyVisitChild(_expression, visitor); | 8558 safelyVisitChild(_expression, visitor); |
8737 } | 8559 } |
8738 } | 8560 } |
8739 | 8561 |
8740 /** | 8562 /** |
8741 * Instances of the class `PartDirective` represent a part directive. | 8563 * Instances of the class `PartDirective` represent a part directive. |
8742 * | 8564 * |
8743 * <pre> | 8565 * <pre> |
8744 * partDirective ::= | 8566 * partDirective ::= |
8745 * [Annotation] 'part' [StringLiteral] ';' | 8567 * [Annotation] 'part' [StringLiteral] ';' |
8746 * </pre> | 8568 * </pre> |
8747 * | |
8748 * @coverage dart.engine.ast | |
8749 */ | 8569 */ |
8750 class PartDirective extends UriBasedDirective { | 8570 class PartDirective extends UriBasedDirective { |
8751 /** | 8571 /** |
8752 * The token representing the 'part' token. | 8572 * The token representing the 'part' token. |
8753 */ | 8573 */ |
8754 Token partToken; | 8574 Token partToken; |
8755 | 8575 |
8756 /** | 8576 /** |
8757 * The semicolon terminating the directive. | 8577 * The semicolon terminating the directive. |
8758 */ | 8578 */ |
8759 Token semicolon; | 8579 Token semicolon; |
8760 | 8580 |
8761 /** | 8581 /** |
8762 * Initialize a newly created part directive. | 8582 * Initialize a newly created part directive. |
8763 * | 8583 * |
8764 * @param comment the documentation comment associated with this directive | 8584 * @param comment the documentation comment associated with this directive |
8765 * @param metadata the annotations associated with the directive | 8585 * @param metadata the annotations associated with the directive |
8766 * @param partToken the token representing the 'part' token | 8586 * @param partToken the token representing the 'part' token |
8767 * @param partUri the URI of the part being included | 8587 * @param partUri the URI of the part being included |
8768 * @param semicolon the semicolon terminating the directive | 8588 * @param semicolon the semicolon terminating the directive |
8769 */ | 8589 */ |
8770 PartDirective(Comment comment, List<Annotation> metadata, this.partToken, Stri
ngLiteral partUri, this.semicolon) : super(comment, metadata, partUri); | 8590 PartDirective(Comment comment, List<Annotation> metadata, this.partToken, Stri
ngLiteral partUri, this.semicolon) : super(comment, metadata, partUri); |
8771 | 8591 |
8772 accept(ASTVisitor visitor) => visitor.visitPartDirective(this); | 8592 accept(AstVisitor visitor) => visitor.visitPartDirective(this); |
8773 | 8593 |
8774 Token get endToken => semicolon; | 8594 Token get endToken => semicolon; |
8775 | 8595 |
8776 Token get keyword => partToken; | 8596 Token get keyword => partToken; |
8777 | 8597 |
8778 CompilationUnitElement get uriElement => element as CompilationUnitElement; | 8598 CompilationUnitElement get uriElement => element as CompilationUnitElement; |
8779 | 8599 |
8780 Token get firstTokenAfterCommentAndMetadata => partToken; | 8600 Token get firstTokenAfterCommentAndMetadata => partToken; |
8781 } | 8601 } |
8782 | 8602 |
8783 /** | 8603 /** |
8784 * Instances of the class `PartOfDirective` represent a part-of directive. | 8604 * Instances of the class `PartOfDirective` represent a part-of directive. |
8785 * | 8605 * |
8786 * <pre> | 8606 * <pre> |
8787 * partOfDirective ::= | 8607 * partOfDirective ::= |
8788 * [Annotation] 'part' 'of' [Identifier] ';' | 8608 * [Annotation] 'part' 'of' [Identifier] ';' |
8789 * </pre> | 8609 * </pre> |
8790 * | |
8791 * @coverage dart.engine.ast | |
8792 */ | 8610 */ |
8793 class PartOfDirective extends Directive { | 8611 class PartOfDirective extends Directive { |
8794 /** | 8612 /** |
8795 * The token representing the 'part' token. | 8613 * The token representing the 'part' token. |
8796 */ | 8614 */ |
8797 Token partToken; | 8615 Token partToken; |
8798 | 8616 |
8799 /** | 8617 /** |
8800 * The token representing the 'of' token. | 8618 * The token representing the 'of' token. |
8801 */ | 8619 */ |
(...skipping 16 matching lines...) Expand all Loading... |
8818 * @param metadata the annotations associated with the directive | 8636 * @param metadata the annotations associated with the directive |
8819 * @param partToken the token representing the 'part' token | 8637 * @param partToken the token representing the 'part' token |
8820 * @param ofToken the token representing the 'of' token | 8638 * @param ofToken the token representing the 'of' token |
8821 * @param libraryName the name of the library that the containing compilation
unit is part of | 8639 * @param libraryName the name of the library that the containing compilation
unit is part of |
8822 * @param semicolon the semicolon terminating the directive | 8640 * @param semicolon the semicolon terminating the directive |
8823 */ | 8641 */ |
8824 PartOfDirective(Comment comment, List<Annotation> metadata, this.partToken, th
is.ofToken, LibraryIdentifier libraryName, this.semicolon) : super(comment, meta
data) { | 8642 PartOfDirective(Comment comment, List<Annotation> metadata, this.partToken, th
is.ofToken, LibraryIdentifier libraryName, this.semicolon) : super(comment, meta
data) { |
8825 this._libraryName = becomeParentOf(libraryName); | 8643 this._libraryName = becomeParentOf(libraryName); |
8826 } | 8644 } |
8827 | 8645 |
8828 accept(ASTVisitor visitor) => visitor.visitPartOfDirective(this); | 8646 accept(AstVisitor visitor) => visitor.visitPartOfDirective(this); |
8829 | 8647 |
8830 Token get endToken => semicolon; | 8648 Token get endToken => semicolon; |
8831 | 8649 |
8832 Token get keyword => partToken; | 8650 Token get keyword => partToken; |
8833 | 8651 |
8834 /** | 8652 /** |
8835 * Return the name of the library that the containing compilation unit is part
of. | 8653 * Return the name of the library that the containing compilation unit is part
of. |
8836 * | 8654 * |
8837 * @return the name of the library that the containing compilation unit is par
t of | 8655 * @return the name of the library that the containing compilation unit is par
t of |
8838 */ | 8656 */ |
8839 LibraryIdentifier get libraryName => _libraryName; | 8657 LibraryIdentifier get libraryName => _libraryName; |
8840 | 8658 |
8841 /** | 8659 /** |
8842 * Set the name of the library that the containing compilation unit is part of
to the given name. | 8660 * Set the name of the library that the containing compilation unit is part of
to the given name. |
8843 * | 8661 * |
8844 * @param libraryName the name of the library that the containing compilation
unit is part of | 8662 * @param libraryName the name of the library that the containing compilation
unit is part of |
8845 */ | 8663 */ |
8846 void set libraryName(LibraryIdentifier libraryName) { | 8664 void set libraryName(LibraryIdentifier libraryName) { |
8847 this._libraryName = becomeParentOf(libraryName); | 8665 this._libraryName = becomeParentOf(libraryName); |
8848 } | 8666 } |
8849 | 8667 |
8850 void visitChildren(ASTVisitor visitor) { | 8668 void visitChildren(AstVisitor visitor) { |
8851 super.visitChildren(visitor); | 8669 super.visitChildren(visitor); |
8852 safelyVisitChild(_libraryName, visitor); | 8670 safelyVisitChild(_libraryName, visitor); |
8853 } | 8671 } |
8854 | 8672 |
8855 Token get firstTokenAfterCommentAndMetadata => partToken; | 8673 Token get firstTokenAfterCommentAndMetadata => partToken; |
8856 } | 8674 } |
8857 | 8675 |
8858 /** | 8676 /** |
8859 * Instances of the class `PostfixExpression` represent a postfix unary expressi
on. | 8677 * Instances of the class `PostfixExpression` represent a postfix unary expressi
on. |
8860 * | 8678 * |
8861 * <pre> | 8679 * <pre> |
8862 * postfixExpression ::= | 8680 * postfixExpression ::= |
8863 * [Expression] [Token] | 8681 * [Expression] [Token] |
8864 * </pre> | 8682 * </pre> |
8865 * | |
8866 * @coverage dart.engine.ast | |
8867 */ | 8683 */ |
8868 class PostfixExpression extends Expression { | 8684 class PostfixExpression extends Expression { |
8869 /** | 8685 /** |
8870 * The expression computing the operand for the operator. | 8686 * The expression computing the operand for the operator. |
8871 */ | 8687 */ |
8872 Expression _operand; | 8688 Expression _operand; |
8873 | 8689 |
8874 /** | 8690 /** |
8875 * The postfix operator being applied to the operand. | 8691 * The postfix operator being applied to the operand. |
8876 */ | 8692 */ |
(...skipping 16 matching lines...) Expand all Loading... |
8893 /** | 8709 /** |
8894 * Initialize a newly created postfix expression. | 8710 * Initialize a newly created postfix expression. |
8895 * | 8711 * |
8896 * @param operand the expression computing the operand for the operator | 8712 * @param operand the expression computing the operand for the operator |
8897 * @param operator the postfix operator being applied to the operand | 8713 * @param operator the postfix operator being applied to the operand |
8898 */ | 8714 */ |
8899 PostfixExpression(Expression operand, this.operator) { | 8715 PostfixExpression(Expression operand, this.operator) { |
8900 this._operand = becomeParentOf(operand); | 8716 this._operand = becomeParentOf(operand); |
8901 } | 8717 } |
8902 | 8718 |
8903 accept(ASTVisitor visitor) => visitor.visitPostfixExpression(this); | 8719 accept(AstVisitor visitor) => visitor.visitPostfixExpression(this); |
8904 | 8720 |
8905 Token get beginToken => _operand.beginToken; | 8721 Token get beginToken => _operand.beginToken; |
8906 | 8722 |
8907 /** | 8723 /** |
8908 * Return the best element available for this operator. If resolution was able
to find a better | 8724 * Return the best element available for this operator. If resolution was able
to find a better |
8909 * element based on type propagation, that element will be returned. Otherwise
, the element found | 8725 * element based on type propagation, that element will be returned. Otherwise
, the element found |
8910 * using the result of static analysis will be returned. If resolution has not
been performed, | 8726 * using the result of static analysis will be returned. If resolution has not
been performed, |
8911 * then `null` will be returned. | 8727 * then `null` will be returned. |
8912 * | 8728 * |
8913 * @return the best element available for this operator | 8729 * @return the best element available for this operator |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8973 /** | 8789 /** |
8974 * Set the element associated with the operator based on the static type of th
e operand to the | 8790 * Set the element associated with the operator based on the static type of th
e operand to the |
8975 * given element. | 8791 * given element. |
8976 * | 8792 * |
8977 * @param element the element to be associated with the operator | 8793 * @param element the element to be associated with the operator |
8978 */ | 8794 */ |
8979 void set staticElement(MethodElement element) { | 8795 void set staticElement(MethodElement element) { |
8980 _staticElement = element; | 8796 _staticElement = element; |
8981 } | 8797 } |
8982 | 8798 |
8983 void visitChildren(ASTVisitor visitor) { | 8799 void visitChildren(AstVisitor visitor) { |
8984 safelyVisitChild(_operand, visitor); | 8800 safelyVisitChild(_operand, visitor); |
8985 } | 8801 } |
8986 | 8802 |
8987 /** | 8803 /** |
8988 * If the AST structure has been resolved, and the function being invoked is k
nown based on | 8804 * If the AST structure has been resolved, and the function being invoked is k
nown based on |
8989 * propagated type information, then return the parameter element representing
the parameter to | 8805 * propagated type information, then return the parameter element representing
the parameter to |
8990 * which the value of the operand will be bound. Otherwise, return `null`. | 8806 * which the value of the operand will be bound. Otherwise, return `null`. |
8991 * | 8807 * |
8992 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | 8808 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
8993 * | 8809 * |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9027 } | 8843 } |
9028 } | 8844 } |
9029 | 8845 |
9030 /** | 8846 /** |
9031 * Instances of the class `PrefixExpression` represent a prefix unary expression
. | 8847 * Instances of the class `PrefixExpression` represent a prefix unary expression
. |
9032 * | 8848 * |
9033 * <pre> | 8849 * <pre> |
9034 * prefixExpression ::= | 8850 * prefixExpression ::= |
9035 * [Token] [Expression] | 8851 * [Token] [Expression] |
9036 * </pre> | 8852 * </pre> |
9037 * | |
9038 * @coverage dart.engine.ast | |
9039 */ | 8853 */ |
9040 class PrefixExpression extends Expression { | 8854 class PrefixExpression extends Expression { |
9041 /** | 8855 /** |
9042 * The prefix operator being applied to the operand. | 8856 * The prefix operator being applied to the operand. |
9043 */ | 8857 */ |
9044 Token operator; | 8858 Token operator; |
9045 | 8859 |
9046 /** | 8860 /** |
9047 * The expression computing the operand for the operator. | 8861 * The expression computing the operand for the operator. |
9048 */ | 8862 */ |
(...skipping 16 matching lines...) Expand all Loading... |
9065 /** | 8879 /** |
9066 * Initialize a newly created prefix expression. | 8880 * Initialize a newly created prefix expression. |
9067 * | 8881 * |
9068 * @param operator the prefix operator being applied to the operand | 8882 * @param operator the prefix operator being applied to the operand |
9069 * @param operand the expression computing the operand for the operator | 8883 * @param operand the expression computing the operand for the operator |
9070 */ | 8884 */ |
9071 PrefixExpression(this.operator, Expression operand) { | 8885 PrefixExpression(this.operator, Expression operand) { |
9072 this._operand = becomeParentOf(operand); | 8886 this._operand = becomeParentOf(operand); |
9073 } | 8887 } |
9074 | 8888 |
9075 accept(ASTVisitor visitor) => visitor.visitPrefixExpression(this); | 8889 accept(AstVisitor visitor) => visitor.visitPrefixExpression(this); |
9076 | 8890 |
9077 Token get beginToken => operator; | 8891 Token get beginToken => operator; |
9078 | 8892 |
9079 /** | 8893 /** |
9080 * Return the best element available for this operator. If resolution was able
to find a better | 8894 * Return the best element available for this operator. If resolution was able
to find a better |
9081 * element based on type propagation, that element will be returned. Otherwise
, the element found | 8895 * element based on type propagation, that element will be returned. Otherwise
, the element found |
9082 * using the result of static analysis will be returned. If resolution has not
been performed, | 8896 * using the result of static analysis will be returned. If resolution has not
been performed, |
9083 * then `null` will be returned. | 8897 * then `null` will be returned. |
9084 * | 8898 * |
9085 * @return the best element available for this operator | 8899 * @return the best element available for this operator |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9145 /** | 8959 /** |
9146 * Set the element associated with the operator based on the static type of th
e operand to the | 8960 * Set the element associated with the operator based on the static type of th
e operand to the |
9147 * given element. | 8961 * given element. |
9148 * | 8962 * |
9149 * @param element the static element to be associated with the operator | 8963 * @param element the static element to be associated with the operator |
9150 */ | 8964 */ |
9151 void set staticElement(MethodElement element) { | 8965 void set staticElement(MethodElement element) { |
9152 _staticElement = element; | 8966 _staticElement = element; |
9153 } | 8967 } |
9154 | 8968 |
9155 void visitChildren(ASTVisitor visitor) { | 8969 void visitChildren(AstVisitor visitor) { |
9156 safelyVisitChild(_operand, visitor); | 8970 safelyVisitChild(_operand, visitor); |
9157 } | 8971 } |
9158 | 8972 |
9159 /** | 8973 /** |
9160 * If the AST structure has been resolved, and the function being invoked is k
nown based on | 8974 * If the AST structure has been resolved, and the function being invoked is k
nown based on |
9161 * propagated type information, then return the parameter element representing
the parameter to | 8975 * propagated type information, then return the parameter element representing
the parameter to |
9162 * which the value of the operand will be bound. Otherwise, return `null`. | 8976 * which the value of the operand will be bound. Otherwise, return `null`. |
9163 * | 8977 * |
9164 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. | 8978 * This method is only intended to be used by [Expression#getPropagatedParamet
erElement]. |
9165 * | 8979 * |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9201 | 9015 |
9202 /** | 9016 /** |
9203 * Instances of the class `PrefixedIdentifier` represent either an identifier th
at is prefixed | 9017 * Instances of the class `PrefixedIdentifier` represent either an identifier th
at is prefixed |
9204 * or an access to an object property where the target of the property access is
a simple | 9018 * or an access to an object property where the target of the property access is
a simple |
9205 * identifier. | 9019 * identifier. |
9206 * | 9020 * |
9207 * <pre> | 9021 * <pre> |
9208 * prefixedIdentifier ::= | 9022 * prefixedIdentifier ::= |
9209 * [SimpleIdentifier] '.' [SimpleIdentifier] | 9023 * [SimpleIdentifier] '.' [SimpleIdentifier] |
9210 * </pre> | 9024 * </pre> |
9211 * | |
9212 * @coverage dart.engine.ast | |
9213 */ | 9025 */ |
9214 class PrefixedIdentifier extends Identifier { | 9026 class PrefixedIdentifier extends Identifier { |
9215 /** | 9027 /** |
9216 * The prefix associated with the library in which the identifier is defined. | 9028 * The prefix associated with the library in which the identifier is defined. |
9217 */ | 9029 */ |
9218 SimpleIdentifier _prefix; | 9030 SimpleIdentifier _prefix; |
9219 | 9031 |
9220 /** | 9032 /** |
9221 * The period used to separate the prefix from the identifier. | 9033 * The period used to separate the prefix from the identifier. |
9222 */ | 9034 */ |
9223 Token period; | 9035 Token period; |
9224 | 9036 |
9225 /** | 9037 /** |
9226 * The identifier being prefixed. | 9038 * The identifier being prefixed. |
9227 */ | 9039 */ |
9228 SimpleIdentifier _identifier; | 9040 SimpleIdentifier _identifier; |
9229 | 9041 |
9230 /** | 9042 /** |
9231 * Initialize a newly created prefixed identifier. | 9043 * Initialize a newly created prefixed identifier. |
9232 * | 9044 * |
9233 * @param prefix the identifier being prefixed | 9045 * @param prefix the identifier being prefixed |
9234 * @param period the period used to separate the prefix from the identifier | 9046 * @param period the period used to separate the prefix from the identifier |
9235 * @param identifier the prefix associated with the library in which the ident
ifier is defined | 9047 * @param identifier the prefix associated with the library in which the ident
ifier is defined |
9236 */ | 9048 */ |
9237 PrefixedIdentifier(SimpleIdentifier prefix, this.period, SimpleIdentifier iden
tifier) { | 9049 PrefixedIdentifier(SimpleIdentifier prefix, this.period, SimpleIdentifier iden
tifier) { |
9238 this._prefix = becomeParentOf(prefix); | 9050 this._prefix = becomeParentOf(prefix); |
9239 this._identifier = becomeParentOf(identifier); | 9051 this._identifier = becomeParentOf(identifier); |
9240 } | 9052 } |
9241 | 9053 |
9242 accept(ASTVisitor visitor) => visitor.visitPrefixedIdentifier(this); | 9054 accept(AstVisitor visitor) => visitor.visitPrefixedIdentifier(this); |
9243 | 9055 |
9244 Token get beginToken => _prefix.beginToken; | 9056 Token get beginToken => _prefix.beginToken; |
9245 | 9057 |
9246 Element get bestElement { | 9058 Element get bestElement { |
9247 if (_identifier == null) { | 9059 if (_identifier == null) { |
9248 return null; | 9060 return null; |
9249 } | 9061 } |
9250 return _identifier.bestElement; | 9062 return _identifier.bestElement; |
9251 } | 9063 } |
9252 | 9064 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9296 /** | 9108 /** |
9297 * Set the prefix associated with the library in which the identifier is defin
ed to the given | 9109 * Set the prefix associated with the library in which the identifier is defin
ed to the given |
9298 * identifier. | 9110 * identifier. |
9299 * | 9111 * |
9300 * @param identifier the prefix associated with the library in which the ident
ifier is defined | 9112 * @param identifier the prefix associated with the library in which the ident
ifier is defined |
9301 */ | 9113 */ |
9302 void set prefix(SimpleIdentifier identifier) { | 9114 void set prefix(SimpleIdentifier identifier) { |
9303 _prefix = becomeParentOf(identifier); | 9115 _prefix = becomeParentOf(identifier); |
9304 } | 9116 } |
9305 | 9117 |
9306 void visitChildren(ASTVisitor visitor) { | 9118 void visitChildren(AstVisitor visitor) { |
9307 safelyVisitChild(_prefix, visitor); | 9119 safelyVisitChild(_prefix, visitor); |
9308 safelyVisitChild(_identifier, visitor); | 9120 safelyVisitChild(_identifier, visitor); |
9309 } | 9121 } |
9310 } | 9122 } |
9311 | 9123 |
9312 /** | 9124 /** |
9313 * Instances of the class `PropertyAccess` represent the access of a property of
an object. | 9125 * Instances of the class `PropertyAccess` represent the access of a property of
an object. |
9314 * | 9126 * |
9315 * Note, however, that accesses to properties of objects can also be represented
as | 9127 * Note, however, that accesses to properties of objects can also be represented
as |
9316 * [PrefixedIdentifier] nodes in cases where the target is also a simple | 9128 * [PrefixedIdentifier] nodes in cases where the target is also a simple |
9317 * identifier. | 9129 * identifier. |
9318 * | 9130 * |
9319 * <pre> | 9131 * <pre> |
9320 * propertyAccess ::= | 9132 * propertyAccess ::= |
9321 * [Expression] '.' [SimpleIdentifier] | 9133 * [Expression] '.' [SimpleIdentifier] |
9322 * </pre> | 9134 * </pre> |
9323 * | |
9324 * @coverage dart.engine.ast | |
9325 */ | 9135 */ |
9326 class PropertyAccess extends Expression { | 9136 class PropertyAccess extends Expression { |
9327 /** | 9137 /** |
9328 * The expression computing the object defining the property being accessed. | 9138 * The expression computing the object defining the property being accessed. |
9329 */ | 9139 */ |
9330 Expression _target; | 9140 Expression _target; |
9331 | 9141 |
9332 /** | 9142 /** |
9333 * The property access operator. | 9143 * The property access operator. |
9334 */ | 9144 */ |
9335 Token operator; | 9145 Token operator; |
9336 | 9146 |
9337 /** | 9147 /** |
9338 * The name of the property being accessed. | 9148 * The name of the property being accessed. |
9339 */ | 9149 */ |
9340 SimpleIdentifier _propertyName; | 9150 SimpleIdentifier _propertyName; |
9341 | 9151 |
9342 /** | 9152 /** |
9343 * Initialize a newly created property access expression. | 9153 * Initialize a newly created property access expression. |
9344 * | 9154 * |
9345 * @param target the expression computing the object defining the property bei
ng accessed | 9155 * @param target the expression computing the object defining the property bei
ng accessed |
9346 * @param operator the property access operator | 9156 * @param operator the property access operator |
9347 * @param propertyName the name of the property being accessed | 9157 * @param propertyName the name of the property being accessed |
9348 */ | 9158 */ |
9349 PropertyAccess(Expression target, this.operator, SimpleIdentifier propertyName
) { | 9159 PropertyAccess(Expression target, this.operator, SimpleIdentifier propertyName
) { |
9350 this._target = becomeParentOf(target); | 9160 this._target = becomeParentOf(target); |
9351 this._propertyName = becomeParentOf(propertyName); | 9161 this._propertyName = becomeParentOf(propertyName); |
9352 } | 9162 } |
9353 | 9163 |
9354 accept(ASTVisitor visitor) => visitor.visitPropertyAccess(this); | 9164 accept(AstVisitor visitor) => visitor.visitPropertyAccess(this); |
9355 | 9165 |
9356 Token get beginToken { | 9166 Token get beginToken { |
9357 if (_target != null) { | 9167 if (_target != null) { |
9358 return _target.beginToken; | 9168 return _target.beginToken; |
9359 } | 9169 } |
9360 return operator; | 9170 return operator; |
9361 } | 9171 } |
9362 | 9172 |
9363 Token get endToken => _propertyName.endToken; | 9173 Token get endToken => _propertyName.endToken; |
9364 | 9174 |
(...skipping 10 matching lines...) Expand all Loading... |
9375 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not | 9185 * Return the expression used to compute the receiver of the invocation. If th
is invocation is not |
9376 * part of a cascade expression, then this is the same as [getTarget]. If this
invocation | 9186 * part of a cascade expression, then this is the same as [getTarget]. If this
invocation |
9377 * is part of a cascade expression, then the target stored with the cascade ex
pression is | 9187 * is part of a cascade expression, then the target stored with the cascade ex
pression is |
9378 * returned. | 9188 * returned. |
9379 * | 9189 * |
9380 * @return the expression used to compute the receiver of the invocation | 9190 * @return the expression used to compute the receiver of the invocation |
9381 * @see #getTarget() | 9191 * @see #getTarget() |
9382 */ | 9192 */ |
9383 Expression get realTarget { | 9193 Expression get realTarget { |
9384 if (isCascaded) { | 9194 if (isCascaded) { |
9385 ASTNode ancestor = parent; | 9195 AstNode ancestor = parent; |
9386 while (ancestor is! CascadeExpression) { | 9196 while (ancestor is! CascadeExpression) { |
9387 if (ancestor == null) { | 9197 if (ancestor == null) { |
9388 return _target; | 9198 return _target; |
9389 } | 9199 } |
9390 ancestor = ancestor.parent; | 9200 ancestor = ancestor.parent; |
9391 } | 9201 } |
9392 return (ancestor as CascadeExpression).target; | 9202 return (ancestor as CascadeExpression).target; |
9393 } | 9203 } |
9394 return _target; | 9204 return _target; |
9395 } | 9205 } |
(...skipping 30 matching lines...) Expand all Loading... |
9426 /** | 9236 /** |
9427 * Set the expression computing the object defining the property being accesse
d to the given | 9237 * Set the expression computing the object defining the property being accesse
d to the given |
9428 * expression. | 9238 * expression. |
9429 * | 9239 * |
9430 * @param expression the expression computing the object defining the property
being accessed | 9240 * @param expression the expression computing the object defining the property
being accessed |
9431 */ | 9241 */ |
9432 void set target(Expression expression) { | 9242 void set target(Expression expression) { |
9433 _target = becomeParentOf(expression); | 9243 _target = becomeParentOf(expression); |
9434 } | 9244 } |
9435 | 9245 |
9436 void visitChildren(ASTVisitor visitor) { | 9246 void visitChildren(AstVisitor visitor) { |
9437 safelyVisitChild(_target, visitor); | 9247 safelyVisitChild(_target, visitor); |
9438 safelyVisitChild(_propertyName, visitor); | 9248 safelyVisitChild(_propertyName, visitor); |
9439 } | 9249 } |
9440 } | 9250 } |
9441 | 9251 |
9442 /** | 9252 /** |
9443 * Instances of the class `RedirectingConstructorInvocation` represent the invoc
ation of a | 9253 * Instances of the class `RedirectingConstructorInvocation` represent the invoc
ation of a |
9444 * another constructor in the same class from within a constructor's initializat
ion list. | 9254 * another constructor in the same class from within a constructor's initializat
ion list. |
9445 * | 9255 * |
9446 * <pre> | 9256 * <pre> |
9447 * redirectingConstructorInvocation ::= | 9257 * redirectingConstructorInvocation ::= |
9448 * 'this' ('.' identifier)? arguments | 9258 * 'this' ('.' identifier)? arguments |
9449 * </pre> | 9259 * </pre> |
9450 * | |
9451 * @coverage dart.engine.ast | |
9452 */ | 9260 */ |
9453 class RedirectingConstructorInvocation extends ConstructorInitializer { | 9261 class RedirectingConstructorInvocation extends ConstructorInitializer { |
9454 /** | 9262 /** |
9455 * The token for the 'this' keyword. | 9263 * The token for the 'this' keyword. |
9456 */ | 9264 */ |
9457 Token keyword; | 9265 Token keyword; |
9458 | 9266 |
9459 /** | 9267 /** |
9460 * The token for the period before the name of the constructor that is being i
nvoked, or | 9268 * The token for the period before the name of the constructor that is being i
nvoked, or |
9461 * `null` if the unnamed constructor is being invoked. | 9269 * `null` if the unnamed constructor is being invoked. |
(...skipping 24 matching lines...) Expand all Loading... |
9486 * @param keyword the token for the 'this' keyword | 9294 * @param keyword the token for the 'this' keyword |
9487 * @param period the token for the period before the name of the constructor t
hat is being invoked | 9295 * @param period the token for the period before the name of the constructor t
hat is being invoked |
9488 * @param constructorName the name of the constructor that is being invoked | 9296 * @param constructorName the name of the constructor that is being invoked |
9489 * @param argumentList the list of arguments to the constructor | 9297 * @param argumentList the list of arguments to the constructor |
9490 */ | 9298 */ |
9491 RedirectingConstructorInvocation(this.keyword, this.period, SimpleIdentifier c
onstructorName, ArgumentList argumentList) { | 9299 RedirectingConstructorInvocation(this.keyword, this.period, SimpleIdentifier c
onstructorName, ArgumentList argumentList) { |
9492 this._constructorName = becomeParentOf(constructorName); | 9300 this._constructorName = becomeParentOf(constructorName); |
9493 this._argumentList = becomeParentOf(argumentList); | 9301 this._argumentList = becomeParentOf(argumentList); |
9494 } | 9302 } |
9495 | 9303 |
9496 accept(ASTVisitor visitor) => visitor.visitRedirectingConstructorInvocation(th
is); | 9304 accept(AstVisitor visitor) => visitor.visitRedirectingConstructorInvocation(th
is); |
9497 | 9305 |
9498 /** | 9306 /** |
9499 * Return the list of arguments to the constructor. | 9307 * Return the list of arguments to the constructor. |
9500 * | 9308 * |
9501 * @return the list of arguments to the constructor | 9309 * @return the list of arguments to the constructor |
9502 */ | 9310 */ |
9503 ArgumentList get argumentList => _argumentList; | 9311 ArgumentList get argumentList => _argumentList; |
9504 | 9312 |
9505 Token get beginToken => keyword; | 9313 Token get beginToken => keyword; |
9506 | 9314 |
(...skipping 18 matching lines...) Expand all Loading... |
9525 | 9333 |
9526 /** | 9334 /** |
9527 * Set the name of the constructor that is being invoked to the given identifi
er. | 9335 * Set the name of the constructor that is being invoked to the given identifi
er. |
9528 * | 9336 * |
9529 * @param identifier the name of the constructor that is being invoked | 9337 * @param identifier the name of the constructor that is being invoked |
9530 */ | 9338 */ |
9531 void set constructorName(SimpleIdentifier identifier) { | 9339 void set constructorName(SimpleIdentifier identifier) { |
9532 _constructorName = becomeParentOf(identifier); | 9340 _constructorName = becomeParentOf(identifier); |
9533 } | 9341 } |
9534 | 9342 |
9535 void visitChildren(ASTVisitor visitor) { | 9343 void visitChildren(AstVisitor visitor) { |
9536 safelyVisitChild(_constructorName, visitor); | 9344 safelyVisitChild(_constructorName, visitor); |
9537 safelyVisitChild(_argumentList, visitor); | 9345 safelyVisitChild(_argumentList, visitor); |
9538 } | 9346 } |
9539 } | 9347 } |
9540 | 9348 |
9541 /** | 9349 /** |
9542 * Instances of the class `RethrowExpression` represent a rethrow expression. | 9350 * Instances of the class `RethrowExpression` represent a rethrow expression. |
9543 * | 9351 * |
9544 * <pre> | 9352 * <pre> |
9545 * rethrowExpression ::= | 9353 * rethrowExpression ::= |
9546 * 'rethrow' | 9354 * 'rethrow' |
9547 * </pre> | 9355 * </pre> |
9548 * | |
9549 * @coverage dart.engine.ast | |
9550 */ | 9356 */ |
9551 class RethrowExpression extends Expression { | 9357 class RethrowExpression extends Expression { |
9552 /** | 9358 /** |
9553 * The token representing the 'rethrow' keyword. | 9359 * The token representing the 'rethrow' keyword. |
9554 */ | 9360 */ |
9555 Token keyword; | 9361 Token keyword; |
9556 | 9362 |
9557 /** | 9363 /** |
9558 * Initialize a newly created rethrow expression. | 9364 * Initialize a newly created rethrow expression. |
9559 * | 9365 * |
9560 * @param keyword the token representing the 'rethrow' keyword | 9366 * @param keyword the token representing the 'rethrow' keyword |
9561 */ | 9367 */ |
9562 RethrowExpression(this.keyword); | 9368 RethrowExpression(this.keyword); |
9563 | 9369 |
9564 accept(ASTVisitor visitor) => visitor.visitRethrowExpression(this); | 9370 accept(AstVisitor visitor) => visitor.visitRethrowExpression(this); |
9565 | 9371 |
9566 Token get beginToken => keyword; | 9372 Token get beginToken => keyword; |
9567 | 9373 |
9568 Token get endToken => keyword; | 9374 Token get endToken => keyword; |
9569 | 9375 |
9570 int get precedence => 0; | 9376 int get precedence => 0; |
9571 | 9377 |
9572 void visitChildren(ASTVisitor visitor) { | 9378 void visitChildren(AstVisitor visitor) { |
9573 } | 9379 } |
9574 } | 9380 } |
9575 | 9381 |
9576 /** | 9382 /** |
9577 * Instances of the class `ReturnStatement` represent a return statement. | 9383 * Instances of the class `ReturnStatement` represent a return statement. |
9578 * | 9384 * |
9579 * <pre> | 9385 * <pre> |
9580 * returnStatement ::= | 9386 * returnStatement ::= |
9581 * 'return' [Expression]? ';' | 9387 * 'return' [Expression]? ';' |
9582 * </pre> | 9388 * </pre> |
9583 * | |
9584 * @coverage dart.engine.ast | |
9585 */ | 9389 */ |
9586 class ReturnStatement extends Statement { | 9390 class ReturnStatement extends Statement { |
9587 /** | 9391 /** |
9588 * The token representing the 'return' keyword. | 9392 * The token representing the 'return' keyword. |
9589 */ | 9393 */ |
9590 Token keyword; | 9394 Token keyword; |
9591 | 9395 |
9592 /** | 9396 /** |
9593 * The expression computing the value to be returned, or `null` if no explicit
value was | 9397 * The expression computing the value to be returned, or `null` if no explicit
value was |
9594 * provided. | 9398 * provided. |
9595 */ | 9399 */ |
9596 Expression _expression; | 9400 Expression _expression; |
9597 | 9401 |
9598 /** | 9402 /** |
9599 * The semicolon terminating the statement. | 9403 * The semicolon terminating the statement. |
9600 */ | 9404 */ |
9601 Token semicolon; | 9405 Token semicolon; |
9602 | 9406 |
9603 /** | 9407 /** |
9604 * Initialize a newly created return statement. | 9408 * Initialize a newly created return statement. |
9605 * | 9409 * |
9606 * @param keyword the token representing the 'return' keyword | 9410 * @param keyword the token representing the 'return' keyword |
9607 * @param expression the expression computing the value to be returned | 9411 * @param expression the expression computing the value to be returned |
9608 * @param semicolon the semicolon terminating the statement | 9412 * @param semicolon the semicolon terminating the statement |
9609 */ | 9413 */ |
9610 ReturnStatement(this.keyword, Expression expression, this.semicolon) { | 9414 ReturnStatement(this.keyword, Expression expression, this.semicolon) { |
9611 this._expression = becomeParentOf(expression); | 9415 this._expression = becomeParentOf(expression); |
9612 } | 9416 } |
9613 | 9417 |
9614 accept(ASTVisitor visitor) => visitor.visitReturnStatement(this); | 9418 accept(AstVisitor visitor) => visitor.visitReturnStatement(this); |
9615 | 9419 |
9616 Token get beginToken => keyword; | 9420 Token get beginToken => keyword; |
9617 | 9421 |
9618 Token get endToken => semicolon; | 9422 Token get endToken => semicolon; |
9619 | 9423 |
9620 /** | 9424 /** |
9621 * Return the expression computing the value to be returned, or `null` if no e
xplicit value | 9425 * Return the expression computing the value to be returned, or `null` if no e
xplicit value |
9622 * was provided. | 9426 * was provided. |
9623 * | 9427 * |
9624 * @return the expression computing the value to be returned | 9428 * @return the expression computing the value to be returned |
9625 */ | 9429 */ |
9626 Expression get expression => _expression; | 9430 Expression get expression => _expression; |
9627 | 9431 |
9628 /** | 9432 /** |
9629 * Set the expression computing the value to be returned to the given expressi
on. | 9433 * Set the expression computing the value to be returned to the given expressi
on. |
9630 * | 9434 * |
9631 * @param expression the expression computing the value to be returned | 9435 * @param expression the expression computing the value to be returned |
9632 */ | 9436 */ |
9633 void set expression(Expression expression) { | 9437 void set expression(Expression expression) { |
9634 this._expression = becomeParentOf(expression); | 9438 this._expression = becomeParentOf(expression); |
9635 } | 9439 } |
9636 | 9440 |
9637 void visitChildren(ASTVisitor visitor) { | 9441 void visitChildren(AstVisitor visitor) { |
9638 safelyVisitChild(_expression, visitor); | 9442 safelyVisitChild(_expression, visitor); |
9639 } | 9443 } |
9640 } | 9444 } |
9641 | 9445 |
9642 /** | 9446 /** |
9643 * Instances of the class `ScriptTag` represent the script tag that can optional
ly occur at | 9447 * Instances of the class `ScriptTag` represent the script tag that can optional
ly occur at |
9644 * the beginning of a compilation unit. | 9448 * the beginning of a compilation unit. |
9645 * | 9449 * |
9646 * <pre> | 9450 * <pre> |
9647 * scriptTag ::= | 9451 * scriptTag ::= |
9648 * '#!' (~NEWLINE)* NEWLINE | 9452 * '#!' (~NEWLINE)* NEWLINE |
9649 * </pre> | 9453 * </pre> |
9650 * | |
9651 * @coverage dart.engine.ast | |
9652 */ | 9454 */ |
9653 class ScriptTag extends ASTNode { | 9455 class ScriptTag extends AstNode { |
9654 /** | 9456 /** |
9655 * The token representing this script tag. | 9457 * The token representing this script tag. |
9656 */ | 9458 */ |
9657 Token scriptTag; | 9459 Token scriptTag; |
9658 | 9460 |
9659 /** | 9461 /** |
9660 * Initialize a newly created script tag. | 9462 * Initialize a newly created script tag. |
9661 * | 9463 * |
9662 * @param scriptTag the token representing this script tag | 9464 * @param scriptTag the token representing this script tag |
9663 */ | 9465 */ |
9664 ScriptTag(this.scriptTag); | 9466 ScriptTag(this.scriptTag); |
9665 | 9467 |
9666 accept(ASTVisitor visitor) => visitor.visitScriptTag(this); | 9468 accept(AstVisitor visitor) => visitor.visitScriptTag(this); |
9667 | 9469 |
9668 Token get beginToken => scriptTag; | 9470 Token get beginToken => scriptTag; |
9669 | 9471 |
9670 Token get endToken => scriptTag; | 9472 Token get endToken => scriptTag; |
9671 | 9473 |
9672 void visitChildren(ASTVisitor visitor) { | 9474 void visitChildren(AstVisitor visitor) { |
9673 } | 9475 } |
9674 } | 9476 } |
9675 | 9477 |
9676 /** | 9478 /** |
9677 * Instances of the class `ShowCombinator` represent a combinator that restricts
the names | 9479 * Instances of the class `ShowCombinator` represent a combinator that restricts
the names |
9678 * being imported to those in a given list. | 9480 * being imported to those in a given list. |
9679 * | 9481 * |
9680 * <pre> | 9482 * <pre> |
9681 * showCombinator ::= | 9483 * showCombinator ::= |
9682 * 'show' [SimpleIdentifier] (',' [SimpleIdentifier])* | 9484 * 'show' [SimpleIdentifier] (',' [SimpleIdentifier])* |
9683 * </pre> | 9485 * </pre> |
9684 * | |
9685 * @coverage dart.engine.ast | |
9686 */ | 9486 */ |
9687 class ShowCombinator extends Combinator { | 9487 class ShowCombinator extends Combinator { |
9688 /** | 9488 /** |
9689 * The list of names from the library that are made visible by this combinator
. | 9489 * The list of names from the library that are made visible by this combinator
. |
9690 */ | 9490 */ |
9691 NodeList<SimpleIdentifier> _shownNames; | 9491 NodeList<SimpleIdentifier> _shownNames; |
9692 | 9492 |
9693 /** | 9493 /** |
9694 * Initialize a newly created import show combinator. | 9494 * Initialize a newly created import show combinator. |
9695 * | 9495 * |
9696 * @param keyword the comma introducing the combinator | 9496 * @param keyword the comma introducing the combinator |
9697 * @param shownNames the list of names from the library that are made visible
by this combinator | 9497 * @param shownNames the list of names from the library that are made visible
by this combinator |
9698 */ | 9498 */ |
9699 ShowCombinator(Token keyword, List<SimpleIdentifier> shownNames) : super(keywo
rd) { | 9499 ShowCombinator(Token keyword, List<SimpleIdentifier> shownNames) : super(keywo
rd) { |
9700 this._shownNames = new NodeList<SimpleIdentifier>(this); | 9500 this._shownNames = new NodeList<SimpleIdentifier>(this); |
9701 this._shownNames.addAll(shownNames); | 9501 this._shownNames.addAll(shownNames); |
9702 } | 9502 } |
9703 | 9503 |
9704 accept(ASTVisitor visitor) => visitor.visitShowCombinator(this); | 9504 accept(AstVisitor visitor) => visitor.visitShowCombinator(this); |
9705 | 9505 |
9706 Token get endToken => _shownNames.endToken; | 9506 Token get endToken => _shownNames.endToken; |
9707 | 9507 |
9708 /** | 9508 /** |
9709 * Return the list of names from the library that are made visible by this com
binator. | 9509 * Return the list of names from the library that are made visible by this com
binator. |
9710 * | 9510 * |
9711 * @return the list of names from the library that are made visible by this co
mbinator | 9511 * @return the list of names from the library that are made visible by this co
mbinator |
9712 */ | 9512 */ |
9713 NodeList<SimpleIdentifier> get shownNames => _shownNames; | 9513 NodeList<SimpleIdentifier> get shownNames => _shownNames; |
9714 | 9514 |
9715 void visitChildren(ASTVisitor visitor) { | 9515 void visitChildren(AstVisitor visitor) { |
9716 _shownNames.accept(visitor); | 9516 _shownNames.accept(visitor); |
9717 } | 9517 } |
9718 } | 9518 } |
9719 | 9519 |
9720 /** | 9520 /** |
9721 * Instances of the class `SimpleFormalParameter` represent a simple formal para
meter. | 9521 * Instances of the class `SimpleFormalParameter` represent a simple formal para
meter. |
9722 * | 9522 * |
9723 * <pre> | 9523 * <pre> |
9724 * simpleFormalParameter ::= | 9524 * simpleFormalParameter ::= |
9725 * ('final' [TypeName] | 'var' | [TypeName])? [SimpleIdentifier] | 9525 * ('final' [TypeName] | 'var' | [TypeName])? [SimpleIdentifier] |
9726 * </pre> | 9526 * </pre> |
9727 * | |
9728 * @coverage dart.engine.ast | |
9729 */ | 9527 */ |
9730 class SimpleFormalParameter extends NormalFormalParameter { | 9528 class SimpleFormalParameter extends NormalFormalParameter { |
9731 /** | 9529 /** |
9732 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no | 9530 * The token representing either the 'final', 'const' or 'var' keyword, or `nu
ll` if no |
9733 * keyword was used. | 9531 * keyword was used. |
9734 */ | 9532 */ |
9735 Token keyword; | 9533 Token keyword; |
9736 | 9534 |
9737 /** | 9535 /** |
9738 * The name of the declared type of the parameter, or `null` if the parameter
does not have | 9536 * The name of the declared type of the parameter, or `null` if the parameter
does not have |
9739 * a declared type. | 9537 * a declared type. |
9740 */ | 9538 */ |
9741 TypeName _type; | 9539 TypeName _type; |
9742 | 9540 |
9743 /** | 9541 /** |
9744 * Initialize a newly created formal parameter. | 9542 * Initialize a newly created formal parameter. |
9745 * | 9543 * |
9746 * @param comment the documentation comment associated with this parameter | 9544 * @param comment the documentation comment associated with this parameter |
9747 * @param metadata the annotations associated with this parameter | 9545 * @param metadata the annotations associated with this parameter |
9748 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword | 9546 * @param keyword the token representing either the 'final', 'const' or 'var'
keyword |
9749 * @param type the name of the declared type of the parameter | 9547 * @param type the name of the declared type of the parameter |
9750 * @param identifier the name of the parameter being declared | 9548 * @param identifier the name of the parameter being declared |
9751 */ | 9549 */ |
9752 SimpleFormalParameter(Comment comment, List<Annotation> metadata, this.keyword
, TypeName type, SimpleIdentifier identifier) : super(comment, metadata, identif
ier) { | 9550 SimpleFormalParameter(Comment comment, List<Annotation> metadata, this.keyword
, TypeName type, SimpleIdentifier identifier) : super(comment, metadata, identif
ier) { |
9753 this._type = becomeParentOf(type); | 9551 this._type = becomeParentOf(type); |
9754 } | 9552 } |
9755 | 9553 |
9756 accept(ASTVisitor visitor) => visitor.visitSimpleFormalParameter(this); | 9554 accept(AstVisitor visitor) => visitor.visitSimpleFormalParameter(this); |
9757 | 9555 |
9758 Token get beginToken { | 9556 Token get beginToken { |
9759 if (keyword != null) { | 9557 if (keyword != null) { |
9760 return keyword; | 9558 return keyword; |
9761 } else if (_type != null) { | 9559 } else if (_type != null) { |
9762 return _type.beginToken; | 9560 return _type.beginToken; |
9763 } | 9561 } |
9764 return identifier.beginToken; | 9562 return identifier.beginToken; |
9765 } | 9563 } |
9766 | 9564 |
(...skipping 13 matching lines...) Expand all Loading... |
9780 | 9578 |
9781 /** | 9579 /** |
9782 * Set the name of the declared type of the parameter to the given type name. | 9580 * Set the name of the declared type of the parameter to the given type name. |
9783 * | 9581 * |
9784 * @param typeName the name of the declared type of the parameter | 9582 * @param typeName the name of the declared type of the parameter |
9785 */ | 9583 */ |
9786 void set type(TypeName typeName) { | 9584 void set type(TypeName typeName) { |
9787 _type = becomeParentOf(typeName); | 9585 _type = becomeParentOf(typeName); |
9788 } | 9586 } |
9789 | 9587 |
9790 void visitChildren(ASTVisitor visitor) { | 9588 void visitChildren(AstVisitor visitor) { |
9791 super.visitChildren(visitor); | 9589 super.visitChildren(visitor); |
9792 safelyVisitChild(_type, visitor); | 9590 safelyVisitChild(_type, visitor); |
9793 safelyVisitChild(identifier, visitor); | 9591 safelyVisitChild(identifier, visitor); |
9794 } | 9592 } |
9795 } | 9593 } |
9796 | 9594 |
9797 /** | 9595 /** |
9798 * Instances of the class `SimpleIdentifier` represent a simple identifier. | 9596 * Instances of the class `SimpleIdentifier` represent a simple identifier. |
9799 * | 9597 * |
9800 * <pre> | 9598 * <pre> |
9801 * simpleIdentifier ::= | 9599 * simpleIdentifier ::= |
9802 * initialCharacter internalCharacter* | 9600 * initialCharacter internalCharacter* |
9803 * | 9601 * |
9804 * initialCharacter ::= '_' | '$' | letter | 9602 * initialCharacter ::= '_' | '$' | letter |
9805 * | 9603 * |
9806 * internalCharacter ::= '_' | '$' | letter | digit | 9604 * internalCharacter ::= '_' | '$' | letter | digit |
9807 * </pre> | 9605 * </pre> |
9808 * | |
9809 * @coverage dart.engine.ast | |
9810 */ | 9606 */ |
9811 class SimpleIdentifier extends Identifier { | 9607 class SimpleIdentifier extends Identifier { |
9812 /** | 9608 /** |
9813 * The token representing the identifier. | 9609 * The token representing the identifier. |
9814 */ | 9610 */ |
9815 Token token; | 9611 Token token; |
9816 | 9612 |
9817 /** | 9613 /** |
9818 * The element associated with this identifier based on static type informatio
n, or `null` | 9614 * The element associated with this identifier based on static type informatio
n, or `null` |
9819 * if the AST structure has not been resolved or if this identifier could not
be resolved. | 9615 * if the AST structure has not been resolved or if this identifier could not
be resolved. |
(...skipping 14 matching lines...) Expand all Loading... |
9834 */ | 9630 */ |
9835 AuxiliaryElements auxiliaryElements = null; | 9631 AuxiliaryElements auxiliaryElements = null; |
9836 | 9632 |
9837 /** | 9633 /** |
9838 * Initialize a newly created identifier. | 9634 * Initialize a newly created identifier. |
9839 * | 9635 * |
9840 * @param token the token representing the identifier | 9636 * @param token the token representing the identifier |
9841 */ | 9637 */ |
9842 SimpleIdentifier(this.token); | 9638 SimpleIdentifier(this.token); |
9843 | 9639 |
9844 accept(ASTVisitor visitor) => visitor.visitSimpleIdentifier(this); | 9640 accept(AstVisitor visitor) => visitor.visitSimpleIdentifier(this); |
9845 | 9641 |
9846 Token get beginToken => token; | 9642 Token get beginToken => token; |
9847 | 9643 |
9848 Element get bestElement { | 9644 Element get bestElement { |
9849 if (_propagatedElement == null) { | 9645 if (_propagatedElement == null) { |
9850 return _staticElement; | 9646 return _staticElement; |
9851 } | 9647 } |
9852 return _propagatedElement; | 9648 return _propagatedElement; |
9853 } | 9649 } |
9854 | 9650 |
9855 Token get endToken => token; | 9651 Token get endToken => token; |
9856 | 9652 |
9857 String get name => token.lexeme; | 9653 String get name => token.lexeme; |
9858 | 9654 |
9859 int get precedence => 16; | 9655 int get precedence => 16; |
9860 | 9656 |
9861 Element get propagatedElement => _propagatedElement; | 9657 Element get propagatedElement => _propagatedElement; |
9862 | 9658 |
9863 Element get staticElement => _staticElement; | 9659 Element get staticElement => _staticElement; |
9864 | 9660 |
9865 /** | 9661 /** |
9866 * Return `true` if this identifier is the name being declared in a declaratio
n. | 9662 * Return `true` if this identifier is the name being declared in a declaratio
n. |
9867 * | 9663 * |
9868 * @return `true` if this identifier is the name being declared in a declarati
on | 9664 * @return `true` if this identifier is the name being declared in a declarati
on |
9869 */ | 9665 */ |
9870 bool inDeclarationContext() { | 9666 bool inDeclarationContext() { |
9871 ASTNode parent = this.parent; | 9667 AstNode parent = this.parent; |
9872 if (parent is CatchClause) { | 9668 if (parent is CatchClause) { |
9873 CatchClause clause = parent; | 9669 CatchClause clause = parent; |
9874 return identical(this, clause.exceptionParameter) || identical(this, claus
e.stackTraceParameter); | 9670 return identical(this, clause.exceptionParameter) || identical(this, claus
e.stackTraceParameter); |
9875 } else if (parent is ClassDeclaration) { | 9671 } else if (parent is ClassDeclaration) { |
9876 return identical(this, parent.name); | 9672 return identical(this, parent.name); |
9877 } else if (parent is ClassTypeAlias) { | 9673 } else if (parent is ClassTypeAlias) { |
9878 return identical(this, parent.name); | 9674 return identical(this, parent.name); |
9879 } else if (parent is ConstructorDeclaration) { | 9675 } else if (parent is ConstructorDeclaration) { |
9880 return identical(this, parent.name); | 9676 return identical(this, parent.name); |
9881 } else if (parent is DeclaredIdentifier) { | 9677 } else if (parent is DeclaredIdentifier) { |
(...skipping 19 matching lines...) Expand all Loading... |
9901 /** | 9697 /** |
9902 * Return `true` if this expression is computing a right-hand value. | 9698 * Return `true` if this expression is computing a right-hand value. |
9903 * | 9699 * |
9904 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e | 9700 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e |
9905 * they mutually exclusive. In other words, it is possible for both methods to
return `true` | 9701 * they mutually exclusive. In other words, it is possible for both methods to
return `true` |
9906 * when invoked on the same node. | 9702 * when invoked on the same node. |
9907 * | 9703 * |
9908 * @return `true` if this expression is in a context where a getter will be in
voked | 9704 * @return `true` if this expression is in a context where a getter will be in
voked |
9909 */ | 9705 */ |
9910 bool inGetterContext() { | 9706 bool inGetterContext() { |
9911 ASTNode parent = this.parent; | 9707 AstNode parent = this.parent; |
9912 ASTNode target = this; | 9708 AstNode target = this; |
9913 // skip prefix | 9709 // skip prefix |
9914 if (parent is PrefixedIdentifier) { | 9710 if (parent is PrefixedIdentifier) { |
9915 PrefixedIdentifier prefixed = parent as PrefixedIdentifier; | 9711 PrefixedIdentifier prefixed = parent as PrefixedIdentifier; |
9916 if (identical(prefixed.prefix, this)) { | 9712 if (identical(prefixed.prefix, this)) { |
9917 return true; | 9713 return true; |
9918 } | 9714 } |
9919 parent = prefixed.parent; | 9715 parent = prefixed.parent; |
9920 target = prefixed; | 9716 target = prefixed; |
9921 } else if (parent is PropertyAccess) { | 9717 } else if (parent is PropertyAccess) { |
9922 PropertyAccess access = parent as PropertyAccess; | 9718 PropertyAccess access = parent as PropertyAccess; |
(...skipping 20 matching lines...) Expand all Loading... |
9943 /** | 9739 /** |
9944 * Return `true` if this expression is computing a left-hand value. | 9740 * Return `true` if this expression is computing a left-hand value. |
9945 * | 9741 * |
9946 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e | 9742 * Note that [inGetterContext] and [inSetterContext] are not opposites, nor ar
e |
9947 * they mutually exclusive. In other words, it is possible for both methods to
return `true` | 9743 * they mutually exclusive. In other words, it is possible for both methods to
return `true` |
9948 * when invoked on the same node. | 9744 * when invoked on the same node. |
9949 * | 9745 * |
9950 * @return `true` if this expression is in a context where a setter will be in
voked | 9746 * @return `true` if this expression is in a context where a setter will be in
voked |
9951 */ | 9747 */ |
9952 bool inSetterContext() { | 9748 bool inSetterContext() { |
9953 ASTNode parent = this.parent; | 9749 AstNode parent = this.parent; |
9954 ASTNode target = this; | 9750 AstNode target = this; |
9955 // skip prefix | 9751 // skip prefix |
9956 if (parent is PrefixedIdentifier) { | 9752 if (parent is PrefixedIdentifier) { |
9957 PrefixedIdentifier prefixed = parent as PrefixedIdentifier; | 9753 PrefixedIdentifier prefixed = parent as PrefixedIdentifier; |
9958 // if this is the prefix, then return false | 9754 // if this is the prefix, then return false |
9959 if (identical(prefixed.prefix, this)) { | 9755 if (identical(prefixed.prefix, this)) { |
9960 return false; | 9756 return false; |
9961 } | 9757 } |
9962 parent = prefixed.parent; | 9758 parent = prefixed.parent; |
9963 target = prefixed; | 9759 target = prefixed; |
9964 } else if (parent is PropertyAccess) { | 9760 } else if (parent is PropertyAccess) { |
(...skipping 30 matching lines...) Expand all Loading... |
9995 /** | 9791 /** |
9996 * Set the element associated with this identifier based on static type inform
ation to the given | 9792 * Set the element associated with this identifier based on static type inform
ation to the given |
9997 * element. | 9793 * element. |
9998 * | 9794 * |
9999 * @param element the element to be associated with this identifier | 9795 * @param element the element to be associated with this identifier |
10000 */ | 9796 */ |
10001 void set staticElement(Element element) { | 9797 void set staticElement(Element element) { |
10002 _staticElement = validateElement2(element); | 9798 _staticElement = validateElement2(element); |
10003 } | 9799 } |
10004 | 9800 |
10005 void visitChildren(ASTVisitor visitor) { | 9801 void visitChildren(AstVisitor visitor) { |
10006 } | 9802 } |
10007 | 9803 |
10008 /** | 9804 /** |
10009 * Return the given element if it is an appropriate element based on the paren
t of this | 9805 * Return the given element if it is an appropriate element based on the paren
t of this |
10010 * identifier, or `null` if it is not appropriate. | 9806 * identifier, or `null` if it is not appropriate. |
10011 * | 9807 * |
10012 * @param element the element to be associated with this identifier | 9808 * @param element the element to be associated with this identifier |
10013 * @return the element to be associated with this identifier | 9809 * @return the element to be associated with this identifier |
10014 */ | 9810 */ |
10015 Element validateElement(ASTNode parent, Type expectedClass, Element element) { | 9811 Element validateElement(AstNode parent, Type expectedClass, Element element) { |
10016 if (!isInstanceOf(element, expectedClass)) { | 9812 if (!isInstanceOf(element, expectedClass)) { |
10017 AnalysisEngine.instance.logger.logInformation3("Internal error: attempting
to set the name of a ${parent.runtimeType.toString()} to a ${element.runtimeTyp
e.toString()}", new JavaException()); | 9813 AnalysisEngine.instance.logger.logInformation3("Internal error: attempting
to set the name of a ${parent.runtimeType.toString()} to a ${element.runtimeTyp
e.toString()}", new JavaException()); |
10018 return null; | 9814 return null; |
10019 } | 9815 } |
10020 return element; | 9816 return element; |
10021 } | 9817 } |
10022 | 9818 |
10023 /** | 9819 /** |
10024 * Return the given element if it is an appropriate element based on the paren
t of this | 9820 * Return the given element if it is an appropriate element based on the paren
t of this |
10025 * identifier, or `null` if it is not appropriate. | 9821 * identifier, or `null` if it is not appropriate. |
10026 * | 9822 * |
10027 * @param element the element to be associated with this identifier | 9823 * @param element the element to be associated with this identifier |
10028 * @return the element to be associated with this identifier | 9824 * @return the element to be associated with this identifier |
10029 */ | 9825 */ |
10030 Element validateElement2(Element element) { | 9826 Element validateElement2(Element element) { |
10031 if (element == null) { | 9827 if (element == null) { |
10032 return null; | 9828 return null; |
10033 } | 9829 } |
10034 ASTNode parent = this.parent; | 9830 AstNode parent = this.parent; |
10035 if (parent is ClassDeclaration && identical(parent.name, this)) { | 9831 if (parent is ClassDeclaration && identical(parent.name, this)) { |
10036 return validateElement(parent, ClassElement, element); | 9832 return validateElement(parent, ClassElement, element); |
10037 } else if (parent is ClassTypeAlias && identical(parent.name, this)) { | 9833 } else if (parent is ClassTypeAlias && identical(parent.name, this)) { |
10038 return validateElement(parent, ClassElement, element); | 9834 return validateElement(parent, ClassElement, element); |
10039 } else if (parent is DeclaredIdentifier && identical(parent.identifier, this
)) { | 9835 } else if (parent is DeclaredIdentifier && identical(parent.identifier, this
)) { |
10040 return validateElement(parent, LocalVariableElement, element); | 9836 return validateElement(parent, LocalVariableElement, element); |
10041 } else if (parent is FormalParameter && identical(parent.identifier, this))
{ | 9837 } else if (parent is FormalParameter && identical(parent.identifier, this))
{ |
10042 return validateElement(parent, ParameterElement, element); | 9838 return validateElement(parent, ParameterElement, element); |
10043 } else if (parent is FunctionDeclaration && identical(parent.name, this)) { | 9839 } else if (parent is FunctionDeclaration && identical(parent.name, this)) { |
10044 return validateElement(parent, ExecutableElement, element); | 9840 return validateElement(parent, ExecutableElement, element); |
(...skipping 27 matching lines...) Expand all Loading... |
10072 * | singleLineStringLiteral | 9868 * | singleLineStringLiteral |
10073 * | 9869 * |
10074 * multiLineStringLiteral ::= | 9870 * multiLineStringLiteral ::= |
10075 * "'''" characters "'''" | 9871 * "'''" characters "'''" |
10076 * | '"""' characters '"""' | 9872 * | '"""' characters '"""' |
10077 * | 9873 * |
10078 * singleLineStringLiteral ::= | 9874 * singleLineStringLiteral ::= |
10079 * "'" characters "'" | 9875 * "'" characters "'" |
10080 * '"' characters '"' | 9876 * '"' characters '"' |
10081 * </pre> | 9877 * </pre> |
10082 * | |
10083 * @coverage dart.engine.ast | |
10084 */ | 9878 */ |
10085 class SimpleStringLiteral extends StringLiteral { | 9879 class SimpleStringLiteral extends StringLiteral { |
10086 /** | 9880 /** |
10087 * The token representing the literal. | 9881 * The token representing the literal. |
10088 */ | 9882 */ |
10089 Token literal; | 9883 Token literal; |
10090 | 9884 |
10091 /** | 9885 /** |
10092 * The value of the literal. | 9886 * The value of the literal. |
10093 */ | 9887 */ |
10094 String _value; | 9888 String _value; |
10095 | 9889 |
10096 /** | 9890 /** |
10097 * The toolkit specific element associated with this literal, or `null`. | 9891 * The toolkit specific element associated with this literal, or `null`. |
10098 */ | 9892 */ |
10099 Element _toolkitElement; | 9893 Element _toolkitElement; |
10100 | 9894 |
10101 /** | 9895 /** |
10102 * Initialize a newly created simple string literal. | 9896 * Initialize a newly created simple string literal. |
10103 * | 9897 * |
10104 * @param literal the token representing the literal | 9898 * @param literal the token representing the literal |
10105 * @param value the value of the literal | 9899 * @param value the value of the literal |
10106 */ | 9900 */ |
10107 SimpleStringLiteral(this.literal, String value) { | 9901 SimpleStringLiteral(this.literal, String value) { |
10108 this._value = StringUtilities.intern(value); | 9902 this._value = StringUtilities.intern(value); |
10109 } | 9903 } |
10110 | 9904 |
10111 accept(ASTVisitor visitor) => visitor.visitSimpleStringLiteral(this); | 9905 accept(AstVisitor visitor) => visitor.visitSimpleStringLiteral(this); |
10112 | 9906 |
10113 Token get beginToken => literal; | 9907 Token get beginToken => literal; |
10114 | 9908 |
10115 Token get endToken => literal; | 9909 Token get endToken => literal; |
10116 | 9910 |
10117 /** | 9911 /** |
10118 * Return the toolkit specific, non-Dart, element associated with this literal
, or `null`. | 9912 * Return the toolkit specific, non-Dart, element associated with this literal
, or `null`. |
10119 * | 9913 * |
10120 * @return the element associated with this literal | 9914 * @return the element associated with this literal |
10121 */ | 9915 */ |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10179 | 9973 |
10180 /** | 9974 /** |
10181 * Set the value of the literal to the given string. | 9975 * Set the value of the literal to the given string. |
10182 * | 9976 * |
10183 * @param string the value of the literal | 9977 * @param string the value of the literal |
10184 */ | 9978 */ |
10185 void set value(String string) { | 9979 void set value(String string) { |
10186 _value = StringUtilities.intern(_value); | 9980 _value = StringUtilities.intern(_value); |
10187 } | 9981 } |
10188 | 9982 |
10189 void visitChildren(ASTVisitor visitor) { | 9983 void visitChildren(AstVisitor visitor) { |
10190 } | 9984 } |
10191 | 9985 |
10192 void appendStringValue(JavaStringBuilder builder) { | 9986 void appendStringValue(JavaStringBuilder builder) { |
10193 builder.append(value); | 9987 builder.append(value); |
10194 } | 9988 } |
10195 } | 9989 } |
10196 | 9990 |
10197 /** | 9991 /** |
10198 * Instances of the class `Statement` defines the behavior common to nodes that
represent a | 9992 * Instances of the class `Statement` defines the behavior common to nodes that
represent a |
10199 * statement. | 9993 * statement. |
10200 * | 9994 * |
10201 * <pre> | 9995 * <pre> |
10202 * statement ::= | 9996 * statement ::= |
10203 * [Block] | 9997 * [Block] |
10204 * | [VariableDeclarationStatement] | 9998 * | [VariableDeclarationStatement] |
10205 * | [ForStatement] | 9999 * | [ForStatement] |
10206 * | [ForEachStatement] | 10000 * | [ForEachStatement] |
10207 * | [WhileStatement] | 10001 * | [WhileStatement] |
10208 * | [DoStatement] | 10002 * | [DoStatement] |
10209 * | [SwitchStatement] | 10003 * | [SwitchStatement] |
10210 * | [IfStatement] | 10004 * | [IfStatement] |
10211 * | [TryStatement] | 10005 * | [TryStatement] |
10212 * | [BreakStatement] | 10006 * | [BreakStatement] |
10213 * | [ContinueStatement] | 10007 * | [ContinueStatement] |
10214 * | [ReturnStatement] | 10008 * | [ReturnStatement] |
10215 * | [ExpressionStatement] | 10009 * | [ExpressionStatement] |
10216 * | [FunctionDeclarationStatement] | 10010 * | [FunctionDeclarationStatement] |
10217 * </pre> | 10011 * </pre> |
10218 * | |
10219 * @coverage dart.engine.ast | |
10220 */ | 10012 */ |
10221 abstract class Statement extends ASTNode { | 10013 abstract class Statement extends AstNode { |
10222 } | 10014 } |
10223 | 10015 |
10224 /** | 10016 /** |
10225 * Instances of the class `StringInterpolation` represent a string interpolation
literal. | 10017 * Instances of the class `StringInterpolation` represent a string interpolation
literal. |
10226 * | 10018 * |
10227 * <pre> | 10019 * <pre> |
10228 * stringInterpolation ::= | 10020 * stringInterpolation ::= |
10229 * ''' [InterpolationElement]* ''' | 10021 * ''' [InterpolationElement]* ''' |
10230 * | '"' [InterpolationElement]* '"' | 10022 * | '"' [InterpolationElement]* '"' |
10231 * </pre> | 10023 * </pre> |
10232 * | |
10233 * @coverage dart.engine.ast | |
10234 */ | 10024 */ |
10235 class StringInterpolation extends StringLiteral { | 10025 class StringInterpolation extends StringLiteral { |
10236 /** | 10026 /** |
10237 * The elements that will be composed to produce the resulting string. | 10027 * The elements that will be composed to produce the resulting string. |
10238 */ | 10028 */ |
10239 NodeList<InterpolationElement> _elements; | 10029 NodeList<InterpolationElement> _elements; |
10240 | 10030 |
10241 /** | 10031 /** |
10242 * Initialize a newly created string interpolation expression. | 10032 * Initialize a newly created string interpolation expression. |
10243 * | 10033 * |
10244 * @param elements the elements that will be composed to produce the resulting
string | 10034 * @param elements the elements that will be composed to produce the resulting
string |
10245 */ | 10035 */ |
10246 StringInterpolation(List<InterpolationElement> elements) { | 10036 StringInterpolation(List<InterpolationElement> elements) { |
10247 this._elements = new NodeList<InterpolationElement>(this); | 10037 this._elements = new NodeList<InterpolationElement>(this); |
10248 this._elements.addAll(elements); | 10038 this._elements.addAll(elements); |
10249 } | 10039 } |
10250 | 10040 |
10251 accept(ASTVisitor visitor) => visitor.visitStringInterpolation(this); | 10041 accept(AstVisitor visitor) => visitor.visitStringInterpolation(this); |
10252 | 10042 |
10253 Token get beginToken => _elements.beginToken; | 10043 Token get beginToken => _elements.beginToken; |
10254 | 10044 |
10255 /** | 10045 /** |
10256 * Return the elements that will be composed to produce the resulting string. | 10046 * Return the elements that will be composed to produce the resulting string. |
10257 * | 10047 * |
10258 * @return the elements that will be composed to produce the resulting string | 10048 * @return the elements that will be composed to produce the resulting string |
10259 */ | 10049 */ |
10260 NodeList<InterpolationElement> get elements => _elements; | 10050 NodeList<InterpolationElement> get elements => _elements; |
10261 | 10051 |
10262 Token get endToken => _elements.endToken; | 10052 Token get endToken => _elements.endToken; |
10263 | 10053 |
10264 void visitChildren(ASTVisitor visitor) { | 10054 void visitChildren(AstVisitor visitor) { |
10265 _elements.accept(visitor); | 10055 _elements.accept(visitor); |
10266 } | 10056 } |
10267 | 10057 |
10268 void appendStringValue(JavaStringBuilder builder) { | 10058 void appendStringValue(JavaStringBuilder builder) { |
10269 throw new IllegalArgumentException(); | 10059 throw new IllegalArgumentException(); |
10270 } | 10060 } |
10271 } | 10061 } |
10272 | 10062 |
10273 /** | 10063 /** |
10274 * Instances of the class `StringLiteral` represent a string literal expression. | 10064 * Instances of the class `StringLiteral` represent a string literal expression. |
10275 * | 10065 * |
10276 * <pre> | 10066 * <pre> |
10277 * stringLiteral ::= | 10067 * stringLiteral ::= |
10278 * [SimpleStringLiteral] | 10068 * [SimpleStringLiteral] |
10279 * | [AdjacentStrings] | 10069 * | [AdjacentStrings] |
10280 * | [StringInterpolation] | 10070 * | [StringInterpolation] |
10281 * </pre> | 10071 * </pre> |
10282 * | |
10283 * @coverage dart.engine.ast | |
10284 */ | 10072 */ |
10285 abstract class StringLiteral extends Literal { | 10073 abstract class StringLiteral extends Literal { |
10286 /** | 10074 /** |
10287 * Return the value of the string literal, or `null` if the string is not a co
nstant string | 10075 * Return the value of the string literal, or `null` if the string is not a co
nstant string |
10288 * without any string interpolation. | 10076 * without any string interpolation. |
10289 * | 10077 * |
10290 * @return the value of the string literal | 10078 * @return the value of the string literal |
10291 */ | 10079 */ |
10292 String get stringValue { | 10080 String get stringValue { |
10293 JavaStringBuilder builder = new JavaStringBuilder(); | 10081 JavaStringBuilder builder = new JavaStringBuilder(); |
(...skipping 16 matching lines...) Expand all Loading... |
10310 } | 10098 } |
10311 | 10099 |
10312 /** | 10100 /** |
10313 * Instances of the class `SuperConstructorInvocation` represent the invocation
of a | 10101 * Instances of the class `SuperConstructorInvocation` represent the invocation
of a |
10314 * superclass' constructor from within a constructor's initialization list. | 10102 * superclass' constructor from within a constructor's initialization list. |
10315 * | 10103 * |
10316 * <pre> | 10104 * <pre> |
10317 * superInvocation ::= | 10105 * superInvocation ::= |
10318 * 'super' ('.' [SimpleIdentifier])? [ArgumentList] | 10106 * 'super' ('.' [SimpleIdentifier])? [ArgumentList] |
10319 * </pre> | 10107 * </pre> |
10320 * | |
10321 * @coverage dart.engine.ast | |
10322 */ | 10108 */ |
10323 class SuperConstructorInvocation extends ConstructorInitializer { | 10109 class SuperConstructorInvocation extends ConstructorInitializer { |
10324 /** | 10110 /** |
10325 * The token for the 'super' keyword. | 10111 * The token for the 'super' keyword. |
10326 */ | 10112 */ |
10327 Token keyword; | 10113 Token keyword; |
10328 | 10114 |
10329 /** | 10115 /** |
10330 * The token for the period before the name of the constructor that is being i
nvoked, or | 10116 * The token for the period before the name of the constructor that is being i
nvoked, or |
10331 * `null` if the unnamed constructor is being invoked. | 10117 * `null` if the unnamed constructor is being invoked. |
(...skipping 24 matching lines...) Expand all Loading... |
10356 * @param keyword the token for the 'super' keyword | 10142 * @param keyword the token for the 'super' keyword |
10357 * @param period the token for the period before the name of the constructor t
hat is being invoked | 10143 * @param period the token for the period before the name of the constructor t
hat is being invoked |
10358 * @param constructorName the name of the constructor that is being invoked | 10144 * @param constructorName the name of the constructor that is being invoked |
10359 * @param argumentList the list of arguments to the constructor | 10145 * @param argumentList the list of arguments to the constructor |
10360 */ | 10146 */ |
10361 SuperConstructorInvocation(this.keyword, this.period, SimpleIdentifier constru
ctorName, ArgumentList argumentList) { | 10147 SuperConstructorInvocation(this.keyword, this.period, SimpleIdentifier constru
ctorName, ArgumentList argumentList) { |
10362 this._constructorName = becomeParentOf(constructorName); | 10148 this._constructorName = becomeParentOf(constructorName); |
10363 this._argumentList = becomeParentOf(argumentList); | 10149 this._argumentList = becomeParentOf(argumentList); |
10364 } | 10150 } |
10365 | 10151 |
10366 accept(ASTVisitor visitor) => visitor.visitSuperConstructorInvocation(this); | 10152 accept(AstVisitor visitor) => visitor.visitSuperConstructorInvocation(this); |
10367 | 10153 |
10368 /** | 10154 /** |
10369 * Return the list of arguments to the constructor. | 10155 * Return the list of arguments to the constructor. |
10370 * | 10156 * |
10371 * @return the list of arguments to the constructor | 10157 * @return the list of arguments to the constructor |
10372 */ | 10158 */ |
10373 ArgumentList get argumentList => _argumentList; | 10159 ArgumentList get argumentList => _argumentList; |
10374 | 10160 |
10375 Token get beginToken => keyword; | 10161 Token get beginToken => keyword; |
10376 | 10162 |
(...skipping 18 matching lines...) Expand all Loading... |
10395 | 10181 |
10396 /** | 10182 /** |
10397 * Set the name of the constructor that is being invoked to the given identifi
er. | 10183 * Set the name of the constructor that is being invoked to the given identifi
er. |
10398 * | 10184 * |
10399 * @param identifier the name of the constructor that is being invoked | 10185 * @param identifier the name of the constructor that is being invoked |
10400 */ | 10186 */ |
10401 void set constructorName(SimpleIdentifier identifier) { | 10187 void set constructorName(SimpleIdentifier identifier) { |
10402 _constructorName = becomeParentOf(identifier); | 10188 _constructorName = becomeParentOf(identifier); |
10403 } | 10189 } |
10404 | 10190 |
10405 void visitChildren(ASTVisitor visitor) { | 10191 void visitChildren(AstVisitor visitor) { |
10406 safelyVisitChild(_constructorName, visitor); | 10192 safelyVisitChild(_constructorName, visitor); |
10407 safelyVisitChild(_argumentList, visitor); | 10193 safelyVisitChild(_argumentList, visitor); |
10408 } | 10194 } |
10409 } | 10195 } |
10410 | 10196 |
10411 /** | 10197 /** |
10412 * Instances of the class `SuperExpression` represent a super expression. | 10198 * Instances of the class `SuperExpression` represent a super expression. |
10413 * | 10199 * |
10414 * <pre> | 10200 * <pre> |
10415 * superExpression ::= | 10201 * superExpression ::= |
10416 * 'super' | 10202 * 'super' |
10417 * </pre> | 10203 * </pre> |
10418 * | |
10419 * @coverage dart.engine.ast | |
10420 */ | 10204 */ |
10421 class SuperExpression extends Expression { | 10205 class SuperExpression extends Expression { |
10422 /** | 10206 /** |
10423 * The token representing the keyword. | 10207 * The token representing the keyword. |
10424 */ | 10208 */ |
10425 Token keyword; | 10209 Token keyword; |
10426 | 10210 |
10427 /** | 10211 /** |
10428 * Initialize a newly created super expression. | 10212 * Initialize a newly created super expression. |
10429 * | 10213 * |
10430 * @param keyword the token representing the keyword | 10214 * @param keyword the token representing the keyword |
10431 */ | 10215 */ |
10432 SuperExpression(this.keyword); | 10216 SuperExpression(this.keyword); |
10433 | 10217 |
10434 accept(ASTVisitor visitor) => visitor.visitSuperExpression(this); | 10218 accept(AstVisitor visitor) => visitor.visitSuperExpression(this); |
10435 | 10219 |
10436 Token get beginToken => keyword; | 10220 Token get beginToken => keyword; |
10437 | 10221 |
10438 Token get endToken => keyword; | 10222 Token get endToken => keyword; |
10439 | 10223 |
10440 int get precedence => 16; | 10224 int get precedence => 16; |
10441 | 10225 |
10442 void visitChildren(ASTVisitor visitor) { | 10226 void visitChildren(AstVisitor visitor) { |
10443 } | 10227 } |
10444 } | 10228 } |
10445 | 10229 |
10446 /** | 10230 /** |
10447 * Instances of the class `SwitchCase` represent the case in a switch statement. | 10231 * Instances of the class `SwitchCase` represent the case in a switch statement. |
10448 * | 10232 * |
10449 * <pre> | 10233 * <pre> |
10450 * switchCase ::= | 10234 * switchCase ::= |
10451 * [SimpleIdentifier]* 'case' [Expression] ':' [Statement]* | 10235 * [SimpleIdentifier]* 'case' [Expression] ':' [Statement]* |
10452 * </pre> | 10236 * </pre> |
10453 * | |
10454 * @coverage dart.engine.ast | |
10455 */ | 10237 */ |
10456 class SwitchCase extends SwitchMember { | 10238 class SwitchCase extends SwitchMember { |
10457 /** | 10239 /** |
10458 * The expression controlling whether the statements will be executed. | 10240 * The expression controlling whether the statements will be executed. |
10459 */ | 10241 */ |
10460 Expression _expression; | 10242 Expression _expression; |
10461 | 10243 |
10462 /** | 10244 /** |
10463 * Initialize a newly created switch case. | 10245 * Initialize a newly created switch case. |
10464 * | 10246 * |
10465 * @param labels the labels associated with the switch member | 10247 * @param labels the labels associated with the switch member |
10466 * @param keyword the token representing the 'case' or 'default' keyword | 10248 * @param keyword the token representing the 'case' or 'default' keyword |
10467 * @param expression the expression controlling whether the statements will be
executed | 10249 * @param expression the expression controlling whether the statements will be
executed |
10468 * @param colon the colon separating the keyword or the expression from the st
atements | 10250 * @param colon the colon separating the keyword or the expression from the st
atements |
10469 * @param statements the statements that will be executed if this switch membe
r is selected | 10251 * @param statements the statements that will be executed if this switch membe
r is selected |
10470 */ | 10252 */ |
10471 SwitchCase(List<Label> labels, Token keyword, Expression expression, Token col
on, List<Statement> statements) : super(labels, keyword, colon, statements) { | 10253 SwitchCase(List<Label> labels, Token keyword, Expression expression, Token col
on, List<Statement> statements) : super(labels, keyword, colon, statements) { |
10472 this._expression = becomeParentOf(expression); | 10254 this._expression = becomeParentOf(expression); |
10473 } | 10255 } |
10474 | 10256 |
10475 accept(ASTVisitor visitor) => visitor.visitSwitchCase(this); | 10257 accept(AstVisitor visitor) => visitor.visitSwitchCase(this); |
10476 | 10258 |
10477 /** | 10259 /** |
10478 * Return the expression controlling whether the statements will be executed. | 10260 * Return the expression controlling whether the statements will be executed. |
10479 * | 10261 * |
10480 * @return the expression controlling whether the statements will be executed | 10262 * @return the expression controlling whether the statements will be executed |
10481 */ | 10263 */ |
10482 Expression get expression => _expression; | 10264 Expression get expression => _expression; |
10483 | 10265 |
10484 /** | 10266 /** |
10485 * Set the expression controlling whether the statements will be executed to t
he given expression. | 10267 * Set the expression controlling whether the statements will be executed to t
he given expression. |
10486 * | 10268 * |
10487 * @param expression the expression controlling whether the statements will be
executed | 10269 * @param expression the expression controlling whether the statements will be
executed |
10488 */ | 10270 */ |
10489 void set expression(Expression expression) { | 10271 void set expression(Expression expression) { |
10490 this._expression = becomeParentOf(expression); | 10272 this._expression = becomeParentOf(expression); |
10491 } | 10273 } |
10492 | 10274 |
10493 void visitChildren(ASTVisitor visitor) { | 10275 void visitChildren(AstVisitor visitor) { |
10494 labels.accept(visitor); | 10276 labels.accept(visitor); |
10495 safelyVisitChild(_expression, visitor); | 10277 safelyVisitChild(_expression, visitor); |
10496 statements.accept(visitor); | 10278 statements.accept(visitor); |
10497 } | 10279 } |
10498 } | 10280 } |
10499 | 10281 |
10500 /** | 10282 /** |
10501 * Instances of the class `SwitchDefault` represent the default case in a switch
statement. | 10283 * Instances of the class `SwitchDefault` represent the default case in a switch
statement. |
10502 * | 10284 * |
10503 * <pre> | 10285 * <pre> |
10504 * switchDefault ::= | 10286 * switchDefault ::= |
10505 * [SimpleIdentifier]* 'default' ':' [Statement]* | 10287 * [SimpleIdentifier]* 'default' ':' [Statement]* |
10506 * </pre> | 10288 * </pre> |
10507 * | |
10508 * @coverage dart.engine.ast | |
10509 */ | 10289 */ |
10510 class SwitchDefault extends SwitchMember { | 10290 class SwitchDefault extends SwitchMember { |
10511 /** | 10291 /** |
10512 * Initialize a newly created switch default. | 10292 * Initialize a newly created switch default. |
10513 * | 10293 * |
10514 * @param labels the labels associated with the switch member | 10294 * @param labels the labels associated with the switch member |
10515 * @param keyword the token representing the 'case' or 'default' keyword | 10295 * @param keyword the token representing the 'case' or 'default' keyword |
10516 * @param colon the colon separating the keyword or the expression from the st
atements | 10296 * @param colon the colon separating the keyword or the expression from the st
atements |
10517 * @param statements the statements that will be executed if this switch membe
r is selected | 10297 * @param statements the statements that will be executed if this switch membe
r is selected |
10518 */ | 10298 */ |
10519 SwitchDefault(List<Label> labels, Token keyword, Token colon, List<Statement>
statements) : super(labels, keyword, colon, statements); | 10299 SwitchDefault(List<Label> labels, Token keyword, Token colon, List<Statement>
statements) : super(labels, keyword, colon, statements); |
10520 | 10300 |
10521 accept(ASTVisitor visitor) => visitor.visitSwitchDefault(this); | 10301 accept(AstVisitor visitor) => visitor.visitSwitchDefault(this); |
10522 | 10302 |
10523 void visitChildren(ASTVisitor visitor) { | 10303 void visitChildren(AstVisitor visitor) { |
10524 labels.accept(visitor); | 10304 labels.accept(visitor); |
10525 statements.accept(visitor); | 10305 statements.accept(visitor); |
10526 } | 10306 } |
10527 } | 10307 } |
10528 | 10308 |
10529 /** | 10309 /** |
10530 * The abstract class `SwitchMember` defines the behavior common to objects repr
esenting | 10310 * The abstract class `SwitchMember` defines the behavior common to objects repr
esenting |
10531 * elements within a switch statement. | 10311 * elements within a switch statement. |
10532 * | 10312 * |
10533 * <pre> | 10313 * <pre> |
10534 * switchMember ::= | 10314 * switchMember ::= |
10535 * switchCase | 10315 * switchCase |
10536 * | switchDefault | 10316 * | switchDefault |
10537 * </pre> | 10317 * </pre> |
10538 * | |
10539 * @coverage dart.engine.ast | |
10540 */ | 10318 */ |
10541 abstract class SwitchMember extends ASTNode { | 10319 abstract class SwitchMember extends AstNode { |
10542 /** | 10320 /** |
10543 * The labels associated with the switch member. | 10321 * The labels associated with the switch member. |
10544 */ | 10322 */ |
10545 NodeList<Label> _labels; | 10323 NodeList<Label> _labels; |
10546 | 10324 |
10547 /** | 10325 /** |
10548 * The token representing the 'case' or 'default' keyword. | 10326 * The token representing the 'case' or 'default' keyword. |
10549 */ | 10327 */ |
10550 Token keyword; | 10328 Token keyword; |
10551 | 10329 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10603 NodeList<Statement> get statements => _statements; | 10381 NodeList<Statement> get statements => _statements; |
10604 } | 10382 } |
10605 | 10383 |
10606 /** | 10384 /** |
10607 * Instances of the class `SwitchStatement` represent a switch statement. | 10385 * Instances of the class `SwitchStatement` represent a switch statement. |
10608 * | 10386 * |
10609 * <pre> | 10387 * <pre> |
10610 * switchStatement ::= | 10388 * switchStatement ::= |
10611 * 'switch' '(' [Expression] ')' '{' [SwitchCase]* [SwitchDefault]? '}' | 10389 * 'switch' '(' [Expression] ')' '{' [SwitchCase]* [SwitchDefault]? '}' |
10612 * </pre> | 10390 * </pre> |
10613 * | |
10614 * @coverage dart.engine.ast | |
10615 */ | 10391 */ |
10616 class SwitchStatement extends Statement { | 10392 class SwitchStatement extends Statement { |
10617 /** | 10393 /** |
10618 * The token representing the 'switch' keyword. | 10394 * The token representing the 'switch' keyword. |
10619 */ | 10395 */ |
10620 Token keyword; | 10396 Token keyword; |
10621 | 10397 |
10622 /** | 10398 /** |
10623 * The left parenthesis. | 10399 * The left parenthesis. |
10624 */ | 10400 */ |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10659 * @param leftBracket the left curly bracket | 10435 * @param leftBracket the left curly bracket |
10660 * @param members the switch members that can be selected by the expression | 10436 * @param members the switch members that can be selected by the expression |
10661 * @param rightBracket the right curly bracket | 10437 * @param rightBracket the right curly bracket |
10662 */ | 10438 */ |
10663 SwitchStatement(this.keyword, this.leftParenthesis, Expression expression, thi
s.rightParenthesis, this.leftBracket, List<SwitchMember> members, this.rightBrac
ket) { | 10439 SwitchStatement(this.keyword, this.leftParenthesis, Expression expression, thi
s.rightParenthesis, this.leftBracket, List<SwitchMember> members, this.rightBrac
ket) { |
10664 this._members = new NodeList<SwitchMember>(this); | 10440 this._members = new NodeList<SwitchMember>(this); |
10665 this._expression = becomeParentOf(expression); | 10441 this._expression = becomeParentOf(expression); |
10666 this._members.addAll(members); | 10442 this._members.addAll(members); |
10667 } | 10443 } |
10668 | 10444 |
10669 accept(ASTVisitor visitor) => visitor.visitSwitchStatement(this); | 10445 accept(AstVisitor visitor) => visitor.visitSwitchStatement(this); |
10670 | 10446 |
10671 Token get beginToken => keyword; | 10447 Token get beginToken => keyword; |
10672 | 10448 |
10673 Token get endToken => rightBracket; | 10449 Token get endToken => rightBracket; |
10674 | 10450 |
10675 /** | 10451 /** |
10676 * Return the expression used to determine which of the switch members will be
selected. | 10452 * Return the expression used to determine which of the switch members will be
selected. |
10677 * | 10453 * |
10678 * @return the expression used to determine which of the switch members will b
e selected | 10454 * @return the expression used to determine which of the switch members will b
e selected |
10679 */ | 10455 */ |
10680 Expression get expression => _expression; | 10456 Expression get expression => _expression; |
10681 | 10457 |
10682 /** | 10458 /** |
10683 * Return the switch members that can be selected by the expression. | 10459 * Return the switch members that can be selected by the expression. |
10684 * | 10460 * |
10685 * @return the switch members that can be selected by the expression | 10461 * @return the switch members that can be selected by the expression |
10686 */ | 10462 */ |
10687 NodeList<SwitchMember> get members => _members; | 10463 NodeList<SwitchMember> get members => _members; |
10688 | 10464 |
10689 /** | 10465 /** |
10690 * Set the expression used to determine which of the switch members will be se
lected to the given | 10466 * Set the expression used to determine which of the switch members will be se
lected to the given |
10691 * expression. | 10467 * expression. |
10692 * | 10468 * |
10693 * @param expression the expression used to determine which of the switch memb
ers will be selected | 10469 * @param expression the expression used to determine which of the switch memb
ers will be selected |
10694 */ | 10470 */ |
10695 void set expression(Expression expression) { | 10471 void set expression(Expression expression) { |
10696 this._expression = becomeParentOf(expression); | 10472 this._expression = becomeParentOf(expression); |
10697 } | 10473 } |
10698 | 10474 |
10699 void visitChildren(ASTVisitor visitor) { | 10475 void visitChildren(AstVisitor visitor) { |
10700 safelyVisitChild(_expression, visitor); | 10476 safelyVisitChild(_expression, visitor); |
10701 _members.accept(visitor); | 10477 _members.accept(visitor); |
10702 } | 10478 } |
10703 } | 10479 } |
10704 | 10480 |
10705 /** | 10481 /** |
10706 * Instances of the class `SymbolLiteral` represent a symbol literal expression. | 10482 * Instances of the class `SymbolLiteral` represent a symbol literal expression. |
10707 * | 10483 * |
10708 * <pre> | 10484 * <pre> |
10709 * symbolLiteral ::= | 10485 * symbolLiteral ::= |
10710 * '#' (operator | (identifier ('.' identifier)*)) | 10486 * '#' (operator | (identifier ('.' identifier)*)) |
10711 * </pre> | 10487 * </pre> |
10712 * | |
10713 * @coverage dart.engine.ast | |
10714 */ | 10488 */ |
10715 class SymbolLiteral extends Literal { | 10489 class SymbolLiteral extends Literal { |
10716 /** | 10490 /** |
10717 * The token introducing the literal. | 10491 * The token introducing the literal. |
10718 */ | 10492 */ |
10719 Token poundSign; | 10493 Token poundSign; |
10720 | 10494 |
10721 /** | 10495 /** |
10722 * The components of the literal. | 10496 * The components of the literal. |
10723 */ | 10497 */ |
10724 final List<Token> components; | 10498 final List<Token> components; |
10725 | 10499 |
10726 /** | 10500 /** |
10727 * Initialize a newly created symbol literal. | 10501 * Initialize a newly created symbol literal. |
10728 * | 10502 * |
10729 * @param poundSign the token introducing the literal | 10503 * @param poundSign the token introducing the literal |
10730 * @param components the components of the literal | 10504 * @param components the components of the literal |
10731 */ | 10505 */ |
10732 SymbolLiteral(this.poundSign, this.components); | 10506 SymbolLiteral(this.poundSign, this.components); |
10733 | 10507 |
10734 accept(ASTVisitor visitor) => visitor.visitSymbolLiteral(this); | 10508 accept(AstVisitor visitor) => visitor.visitSymbolLiteral(this); |
10735 | 10509 |
10736 Token get beginToken => poundSign; | 10510 Token get beginToken => poundSign; |
10737 | 10511 |
10738 Token get endToken => components[components.length - 1]; | 10512 Token get endToken => components[components.length - 1]; |
10739 | 10513 |
10740 void visitChildren(ASTVisitor visitor) { | 10514 void visitChildren(AstVisitor visitor) { |
10741 } | 10515 } |
10742 } | 10516 } |
10743 | 10517 |
10744 /** | 10518 /** |
10745 * Instances of the class `ThisExpression` represent a this expression. | 10519 * Instances of the class `ThisExpression` represent a this expression. |
10746 * | 10520 * |
10747 * <pre> | 10521 * <pre> |
10748 * thisExpression ::= | 10522 * thisExpression ::= |
10749 * 'this' | 10523 * 'this' |
10750 * </pre> | 10524 * </pre> |
10751 * | |
10752 * @coverage dart.engine.ast | |
10753 */ | 10525 */ |
10754 class ThisExpression extends Expression { | 10526 class ThisExpression extends Expression { |
10755 /** | 10527 /** |
10756 * The token representing the keyword. | 10528 * The token representing the keyword. |
10757 */ | 10529 */ |
10758 Token keyword; | 10530 Token keyword; |
10759 | 10531 |
10760 /** | 10532 /** |
10761 * Initialize a newly created this expression. | 10533 * Initialize a newly created this expression. |
10762 * | 10534 * |
10763 * @param keyword the token representing the keyword | 10535 * @param keyword the token representing the keyword |
10764 */ | 10536 */ |
10765 ThisExpression(this.keyword); | 10537 ThisExpression(this.keyword); |
10766 | 10538 |
10767 accept(ASTVisitor visitor) => visitor.visitThisExpression(this); | 10539 accept(AstVisitor visitor) => visitor.visitThisExpression(this); |
10768 | 10540 |
10769 Token get beginToken => keyword; | 10541 Token get beginToken => keyword; |
10770 | 10542 |
10771 Token get endToken => keyword; | 10543 Token get endToken => keyword; |
10772 | 10544 |
10773 int get precedence => 16; | 10545 int get precedence => 16; |
10774 | 10546 |
10775 void visitChildren(ASTVisitor visitor) { | 10547 void visitChildren(AstVisitor visitor) { |
10776 } | 10548 } |
10777 } | 10549 } |
10778 | 10550 |
10779 /** | 10551 /** |
10780 * Instances of the class `ThrowExpression` represent a throw expression. | 10552 * Instances of the class `ThrowExpression` represent a throw expression. |
10781 * | 10553 * |
10782 * <pre> | 10554 * <pre> |
10783 * throwExpression ::= | 10555 * throwExpression ::= |
10784 * 'throw' [Expression] | 10556 * 'throw' [Expression] |
10785 * </pre> | 10557 * </pre> |
10786 * | |
10787 * @coverage dart.engine.ast | |
10788 */ | 10558 */ |
10789 class ThrowExpression extends Expression { | 10559 class ThrowExpression extends Expression { |
10790 /** | 10560 /** |
10791 * The token representing the 'throw' keyword. | 10561 * The token representing the 'throw' keyword. |
10792 */ | 10562 */ |
10793 Token keyword; | 10563 Token keyword; |
10794 | 10564 |
10795 /** | 10565 /** |
10796 * The expression computing the exception to be thrown. | 10566 * The expression computing the exception to be thrown. |
10797 */ | 10567 */ |
10798 Expression _expression; | 10568 Expression _expression; |
10799 | 10569 |
10800 /** | 10570 /** |
10801 * Initialize a newly created throw expression. | 10571 * Initialize a newly created throw expression. |
10802 * | 10572 * |
10803 * @param keyword the token representing the 'throw' keyword | 10573 * @param keyword the token representing the 'throw' keyword |
10804 * @param expression the expression computing the exception to be thrown | 10574 * @param expression the expression computing the exception to be thrown |
10805 */ | 10575 */ |
10806 ThrowExpression(this.keyword, Expression expression) { | 10576 ThrowExpression(this.keyword, Expression expression) { |
10807 this._expression = becomeParentOf(expression); | 10577 this._expression = becomeParentOf(expression); |
10808 } | 10578 } |
10809 | 10579 |
10810 accept(ASTVisitor visitor) => visitor.visitThrowExpression(this); | 10580 accept(AstVisitor visitor) => visitor.visitThrowExpression(this); |
10811 | 10581 |
10812 Token get beginToken => keyword; | 10582 Token get beginToken => keyword; |
10813 | 10583 |
10814 Token get endToken { | 10584 Token get endToken { |
10815 if (_expression != null) { | 10585 if (_expression != null) { |
10816 return _expression.endToken; | 10586 return _expression.endToken; |
10817 } | 10587 } |
10818 return keyword; | 10588 return keyword; |
10819 } | 10589 } |
10820 | 10590 |
10821 /** | 10591 /** |
10822 * Return the expression computing the exception to be thrown. | 10592 * Return the expression computing the exception to be thrown. |
10823 * | 10593 * |
10824 * @return the expression computing the exception to be thrown | 10594 * @return the expression computing the exception to be thrown |
10825 */ | 10595 */ |
10826 Expression get expression => _expression; | 10596 Expression get expression => _expression; |
10827 | 10597 |
10828 int get precedence => 0; | 10598 int get precedence => 0; |
10829 | 10599 |
10830 /** | 10600 /** |
10831 * Set the expression computing the exception to be thrown to the given expres
sion. | 10601 * Set the expression computing the exception to be thrown to the given expres
sion. |
10832 * | 10602 * |
10833 * @param expression the expression computing the exception to be thrown | 10603 * @param expression the expression computing the exception to be thrown |
10834 */ | 10604 */ |
10835 void set expression(Expression expression) { | 10605 void set expression(Expression expression) { |
10836 this._expression = becomeParentOf(expression); | 10606 this._expression = becomeParentOf(expression); |
10837 } | 10607 } |
10838 | 10608 |
10839 void visitChildren(ASTVisitor visitor) { | 10609 void visitChildren(AstVisitor visitor) { |
10840 safelyVisitChild(_expression, visitor); | 10610 safelyVisitChild(_expression, visitor); |
10841 } | 10611 } |
10842 } | 10612 } |
10843 | 10613 |
10844 /** | 10614 /** |
10845 * Instances of the class `TopLevelVariableDeclaration` represent the declaratio
n of one or | 10615 * Instances of the class `TopLevelVariableDeclaration` represent the declaratio
n of one or |
10846 * more top-level variables of the same type. | 10616 * more top-level variables of the same type. |
10847 * | 10617 * |
10848 * <pre> | 10618 * <pre> |
10849 * topLevelVariableDeclaration ::= | 10619 * topLevelVariableDeclaration ::= |
10850 * ('final' | 'const') type? staticFinalDeclarationList ';' | 10620 * ('final' | 'const') type? staticFinalDeclarationList ';' |
10851 * | variableDeclaration ';' | 10621 * | variableDeclaration ';' |
10852 * </pre> | 10622 * </pre> |
10853 * | |
10854 * @coverage dart.engine.ast | |
10855 */ | 10623 */ |
10856 class TopLevelVariableDeclaration extends CompilationUnitMember { | 10624 class TopLevelVariableDeclaration extends CompilationUnitMember { |
10857 /** | 10625 /** |
10858 * The top-level variables being declared. | 10626 * The top-level variables being declared. |
10859 */ | 10627 */ |
10860 VariableDeclarationList _variableList; | 10628 VariableDeclarationList _variableList; |
10861 | 10629 |
10862 /** | 10630 /** |
10863 * The semicolon terminating the declaration. | 10631 * The semicolon terminating the declaration. |
10864 */ | 10632 */ |
10865 Token semicolon; | 10633 Token semicolon; |
10866 | 10634 |
10867 /** | 10635 /** |
10868 * Initialize a newly created top-level variable declaration. | 10636 * Initialize a newly created top-level variable declaration. |
10869 * | 10637 * |
10870 * @param comment the documentation comment associated with this variable | 10638 * @param comment the documentation comment associated with this variable |
10871 * @param metadata the annotations associated with this variable | 10639 * @param metadata the annotations associated with this variable |
10872 * @param variableList the top-level variables being declared | 10640 * @param variableList the top-level variables being declared |
10873 * @param semicolon the semicolon terminating the declaration | 10641 * @param semicolon the semicolon terminating the declaration |
10874 */ | 10642 */ |
10875 TopLevelVariableDeclaration(Comment comment, List<Annotation> metadata, Variab
leDeclarationList variableList, this.semicolon) : super(comment, metadata) { | 10643 TopLevelVariableDeclaration(Comment comment, List<Annotation> metadata, Variab
leDeclarationList variableList, this.semicolon) : super(comment, metadata) { |
10876 this._variableList = becomeParentOf(variableList); | 10644 this._variableList = becomeParentOf(variableList); |
10877 } | 10645 } |
10878 | 10646 |
10879 accept(ASTVisitor visitor) => visitor.visitTopLevelVariableDeclaration(this); | 10647 accept(AstVisitor visitor) => visitor.visitTopLevelVariableDeclaration(this); |
10880 | 10648 |
10881 Element get element => null; | 10649 Element get element => null; |
10882 | 10650 |
10883 Token get endToken => semicolon; | 10651 Token get endToken => semicolon; |
10884 | 10652 |
10885 /** | 10653 /** |
10886 * Return the top-level variables being declared. | 10654 * Return the top-level variables being declared. |
10887 * | 10655 * |
10888 * @return the top-level variables being declared | 10656 * @return the top-level variables being declared |
10889 */ | 10657 */ |
10890 VariableDeclarationList get variables => _variableList; | 10658 VariableDeclarationList get variables => _variableList; |
10891 | 10659 |
10892 /** | 10660 /** |
10893 * Set the top-level variables being declared to the given list of variables. | 10661 * Set the top-level variables being declared to the given list of variables. |
10894 * | 10662 * |
10895 * @param variableList the top-level variables being declared | 10663 * @param variableList the top-level variables being declared |
10896 */ | 10664 */ |
10897 void set variables(VariableDeclarationList variableList) { | 10665 void set variables(VariableDeclarationList variableList) { |
10898 variableList = becomeParentOf(variableList); | 10666 variableList = becomeParentOf(variableList); |
10899 } | 10667 } |
10900 | 10668 |
10901 void visitChildren(ASTVisitor visitor) { | 10669 void visitChildren(AstVisitor visitor) { |
10902 super.visitChildren(visitor); | 10670 super.visitChildren(visitor); |
10903 safelyVisitChild(_variableList, visitor); | 10671 safelyVisitChild(_variableList, visitor); |
10904 } | 10672 } |
10905 | 10673 |
10906 Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken; | 10674 Token get firstTokenAfterCommentAndMetadata => _variableList.beginToken; |
10907 } | 10675 } |
10908 | 10676 |
10909 /** | 10677 /** |
10910 * Instances of the class `TryStatement` represent a try statement. | 10678 * Instances of the class `TryStatement` represent a try statement. |
10911 * | 10679 * |
10912 * <pre> | 10680 * <pre> |
10913 * tryStatement ::= | 10681 * tryStatement ::= |
10914 * 'try' [Block] ([CatchClause]+ finallyClause? | finallyClause) | 10682 * 'try' [Block] ([CatchClause]+ finallyClause? | finallyClause) |
10915 * | 10683 * |
10916 * finallyClause ::= | 10684 * finallyClause ::= |
10917 * 'finally' [Block] | 10685 * 'finally' [Block] |
10918 * </pre> | 10686 * </pre> |
10919 * | |
10920 * @coverage dart.engine.ast | |
10921 */ | 10687 */ |
10922 class TryStatement extends Statement { | 10688 class TryStatement extends Statement { |
10923 /** | 10689 /** |
10924 * The token representing the 'try' keyword. | 10690 * The token representing the 'try' keyword. |
10925 */ | 10691 */ |
10926 Token tryKeyword; | 10692 Token tryKeyword; |
10927 | 10693 |
10928 /** | 10694 /** |
10929 * The body of the statement. | 10695 * The body of the statement. |
10930 */ | 10696 */ |
(...skipping 25 matching lines...) Expand all Loading... |
10956 * @param finallyKeyword the token representing the 'finally' keyword | 10722 * @param finallyKeyword the token representing the 'finally' keyword |
10957 * @param finallyBlock the finally block contained in the try statement | 10723 * @param finallyBlock the finally block contained in the try statement |
10958 */ | 10724 */ |
10959 TryStatement(this.tryKeyword, Block body, List<CatchClause> catchClauses, this
.finallyKeyword, Block finallyBlock) { | 10725 TryStatement(this.tryKeyword, Block body, List<CatchClause> catchClauses, this
.finallyKeyword, Block finallyBlock) { |
10960 this._catchClauses = new NodeList<CatchClause>(this); | 10726 this._catchClauses = new NodeList<CatchClause>(this); |
10961 this._body = becomeParentOf(body); | 10727 this._body = becomeParentOf(body); |
10962 this._catchClauses.addAll(catchClauses); | 10728 this._catchClauses.addAll(catchClauses); |
10963 this._finallyBlock = becomeParentOf(finallyBlock); | 10729 this._finallyBlock = becomeParentOf(finallyBlock); |
10964 } | 10730 } |
10965 | 10731 |
10966 accept(ASTVisitor visitor) => visitor.visitTryStatement(this); | 10732 accept(AstVisitor visitor) => visitor.visitTryStatement(this); |
10967 | 10733 |
10968 Token get beginToken => tryKeyword; | 10734 Token get beginToken => tryKeyword; |
10969 | 10735 |
10970 /** | 10736 /** |
10971 * Return the body of the statement. | 10737 * Return the body of the statement. |
10972 * | 10738 * |
10973 * @return the body of the statement | 10739 * @return the body of the statement |
10974 */ | 10740 */ |
10975 Block get body => _body; | 10741 Block get body => _body; |
10976 | 10742 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11011 | 10777 |
11012 /** | 10778 /** |
11013 * Set the finally block contained in the try statement to the given block. | 10779 * Set the finally block contained in the try statement to the given block. |
11014 * | 10780 * |
11015 * @param block the finally block contained in the try statement | 10781 * @param block the finally block contained in the try statement |
11016 */ | 10782 */ |
11017 void set finallyBlock(Block block) { | 10783 void set finallyBlock(Block block) { |
11018 _finallyBlock = becomeParentOf(block); | 10784 _finallyBlock = becomeParentOf(block); |
11019 } | 10785 } |
11020 | 10786 |
11021 void visitChildren(ASTVisitor visitor) { | 10787 void visitChildren(AstVisitor visitor) { |
11022 safelyVisitChild(_body, visitor); | 10788 safelyVisitChild(_body, visitor); |
11023 _catchClauses.accept(visitor); | 10789 _catchClauses.accept(visitor); |
11024 safelyVisitChild(_finallyBlock, visitor); | 10790 safelyVisitChild(_finallyBlock, visitor); |
11025 } | 10791 } |
11026 } | 10792 } |
11027 | 10793 |
11028 /** | 10794 /** |
11029 * The abstract class `TypeAlias` defines the behavior common to declarations of
type aliases. | 10795 * The abstract class `TypeAlias` defines the behavior common to declarations of
type aliases. |
11030 * | 10796 * |
11031 * <pre> | 10797 * <pre> |
11032 * typeAlias ::= | 10798 * typeAlias ::= |
11033 * 'typedef' typeAliasBody | 10799 * 'typedef' typeAliasBody |
11034 * | 10800 * |
11035 * typeAliasBody ::= | 10801 * typeAliasBody ::= |
11036 * classTypeAlias | 10802 * classTypeAlias |
11037 * | functionTypeAlias | 10803 * | functionTypeAlias |
11038 * </pre> | 10804 * </pre> |
11039 * | |
11040 * @coverage dart.engine.ast | |
11041 */ | 10805 */ |
11042 abstract class TypeAlias extends CompilationUnitMember { | 10806 abstract class TypeAlias extends CompilationUnitMember { |
11043 /** | 10807 /** |
11044 * The token representing the 'typedef' keyword. | 10808 * The token representing the 'typedef' keyword. |
11045 */ | 10809 */ |
11046 Token keyword; | 10810 Token keyword; |
11047 | 10811 |
11048 /** | 10812 /** |
11049 * The semicolon terminating the declaration. | 10813 * The semicolon terminating the declaration. |
11050 */ | 10814 */ |
(...skipping 14 matching lines...) Expand all Loading... |
11065 Token get firstTokenAfterCommentAndMetadata => keyword; | 10829 Token get firstTokenAfterCommentAndMetadata => keyword; |
11066 } | 10830 } |
11067 | 10831 |
11068 /** | 10832 /** |
11069 * Instances of the class `TypeArgumentList` represent a list of type arguments. | 10833 * Instances of the class `TypeArgumentList` represent a list of type arguments. |
11070 * | 10834 * |
11071 * <pre> | 10835 * <pre> |
11072 * typeArguments ::= | 10836 * typeArguments ::= |
11073 * '<' typeName (',' typeName)* '>' | 10837 * '<' typeName (',' typeName)* '>' |
11074 * </pre> | 10838 * </pre> |
11075 * | |
11076 * @coverage dart.engine.ast | |
11077 */ | 10839 */ |
11078 class TypeArgumentList extends ASTNode { | 10840 class TypeArgumentList extends AstNode { |
11079 /** | 10841 /** |
11080 * The left bracket. | 10842 * The left bracket. |
11081 */ | 10843 */ |
11082 Token leftBracket; | 10844 Token leftBracket; |
11083 | 10845 |
11084 /** | 10846 /** |
11085 * The type arguments associated with the type. | 10847 * The type arguments associated with the type. |
11086 */ | 10848 */ |
11087 NodeList<TypeName> _arguments; | 10849 NodeList<TypeName> _arguments; |
11088 | 10850 |
11089 /** | 10851 /** |
11090 * The right bracket. | 10852 * The right bracket. |
11091 */ | 10853 */ |
11092 Token rightBracket; | 10854 Token rightBracket; |
11093 | 10855 |
11094 /** | 10856 /** |
11095 * Initialize a newly created list of type arguments. | 10857 * Initialize a newly created list of type arguments. |
11096 * | 10858 * |
11097 * @param leftBracket the left bracket | 10859 * @param leftBracket the left bracket |
11098 * @param arguments the type arguments associated with the type | 10860 * @param arguments the type arguments associated with the type |
11099 * @param rightBracket the right bracket | 10861 * @param rightBracket the right bracket |
11100 */ | 10862 */ |
11101 TypeArgumentList(this.leftBracket, List<TypeName> arguments, this.rightBracket
) { | 10863 TypeArgumentList(this.leftBracket, List<TypeName> arguments, this.rightBracket
) { |
11102 this._arguments = new NodeList<TypeName>(this); | 10864 this._arguments = new NodeList<TypeName>(this); |
11103 this._arguments.addAll(arguments); | 10865 this._arguments.addAll(arguments); |
11104 } | 10866 } |
11105 | 10867 |
11106 accept(ASTVisitor visitor) => visitor.visitTypeArgumentList(this); | 10868 accept(AstVisitor visitor) => visitor.visitTypeArgumentList(this); |
11107 | 10869 |
11108 /** | 10870 /** |
11109 * Return the type arguments associated with the type. | 10871 * Return the type arguments associated with the type. |
11110 * | 10872 * |
11111 * @return the type arguments associated with the type | 10873 * @return the type arguments associated with the type |
11112 */ | 10874 */ |
11113 NodeList<TypeName> get arguments => _arguments; | 10875 NodeList<TypeName> get arguments => _arguments; |
11114 | 10876 |
11115 Token get beginToken => leftBracket; | 10877 Token get beginToken => leftBracket; |
11116 | 10878 |
11117 Token get endToken => rightBracket; | 10879 Token get endToken => rightBracket; |
11118 | 10880 |
11119 void visitChildren(ASTVisitor visitor) { | 10881 void visitChildren(AstVisitor visitor) { |
11120 _arguments.accept(visitor); | 10882 _arguments.accept(visitor); |
11121 } | 10883 } |
11122 } | 10884 } |
11123 | 10885 |
11124 /** | 10886 /** |
11125 * Instances of the class `TypeName` represent the name of a type, which can opt
ionally | 10887 * Instances of the class `TypeName` represent the name of a type, which can opt
ionally |
11126 * include type arguments. | 10888 * include type arguments. |
11127 * | 10889 * |
11128 * <pre> | 10890 * <pre> |
11129 * typeName ::= | 10891 * typeName ::= |
11130 * [Identifier] typeArguments? | 10892 * [Identifier] typeArguments? |
11131 * </pre> | 10893 * </pre> |
11132 * | |
11133 * @coverage dart.engine.ast | |
11134 */ | 10894 */ |
11135 class TypeName extends ASTNode { | 10895 class TypeName extends AstNode { |
11136 /** | 10896 /** |
11137 * The name of the type. | 10897 * The name of the type. |
11138 */ | 10898 */ |
11139 Identifier _name; | 10899 Identifier _name; |
11140 | 10900 |
11141 /** | 10901 /** |
11142 * The type arguments associated with the type, or `null` if there are no type
arguments. | 10902 * The type arguments associated with the type, or `null` if there are no type
arguments. |
11143 */ | 10903 */ |
11144 TypeArgumentList _typeArguments; | 10904 TypeArgumentList _typeArguments; |
11145 | 10905 |
11146 /** | 10906 /** |
11147 * The type being named, or `null` if the AST structure has not been resolved. | 10907 * The type being named, or `null` if the AST structure has not been resolved. |
11148 */ | 10908 */ |
11149 Type2 type; | 10909 Type2 type; |
11150 | 10910 |
11151 /** | 10911 /** |
11152 * Initialize a newly created type name. | 10912 * Initialize a newly created type name. |
11153 * | 10913 * |
11154 * @param name the name of the type | 10914 * @param name the name of the type |
11155 * @param typeArguments the type arguments associated with the type, or `null`
if there are | 10915 * @param typeArguments the type arguments associated with the type, or `null`
if there are |
11156 * no type arguments | 10916 * no type arguments |
11157 */ | 10917 */ |
11158 TypeName(Identifier name, TypeArgumentList typeArguments) { | 10918 TypeName(Identifier name, TypeArgumentList typeArguments) { |
11159 this._name = becomeParentOf(name); | 10919 this._name = becomeParentOf(name); |
11160 this._typeArguments = becomeParentOf(typeArguments); | 10920 this._typeArguments = becomeParentOf(typeArguments); |
11161 } | 10921 } |
11162 | 10922 |
11163 accept(ASTVisitor visitor) => visitor.visitTypeName(this); | 10923 accept(AstVisitor visitor) => visitor.visitTypeName(this); |
11164 | 10924 |
11165 Token get beginToken => _name.beginToken; | 10925 Token get beginToken => _name.beginToken; |
11166 | 10926 |
11167 Token get endToken { | 10927 Token get endToken { |
11168 if (_typeArguments != null) { | 10928 if (_typeArguments != null) { |
11169 return _typeArguments.endToken; | 10929 return _typeArguments.endToken; |
11170 } | 10930 } |
11171 return _name.endToken; | 10931 return _name.endToken; |
11172 } | 10932 } |
11173 | 10933 |
(...skipping 25 matching lines...) Expand all Loading... |
11199 | 10959 |
11200 /** | 10960 /** |
11201 * Set the type arguments associated with the type to the given type arguments
. | 10961 * Set the type arguments associated with the type to the given type arguments
. |
11202 * | 10962 * |
11203 * @param typeArguments the type arguments associated with the type | 10963 * @param typeArguments the type arguments associated with the type |
11204 */ | 10964 */ |
11205 void set typeArguments(TypeArgumentList typeArguments) { | 10965 void set typeArguments(TypeArgumentList typeArguments) { |
11206 this._typeArguments = becomeParentOf(typeArguments); | 10966 this._typeArguments = becomeParentOf(typeArguments); |
11207 } | 10967 } |
11208 | 10968 |
11209 void visitChildren(ASTVisitor visitor) { | 10969 void visitChildren(AstVisitor visitor) { |
11210 safelyVisitChild(_name, visitor); | 10970 safelyVisitChild(_name, visitor); |
11211 safelyVisitChild(_typeArguments, visitor); | 10971 safelyVisitChild(_typeArguments, visitor); |
11212 } | 10972 } |
11213 } | 10973 } |
11214 | 10974 |
11215 /** | 10975 /** |
11216 * Instances of the class `TypeParameter` represent a type parameter. | 10976 * Instances of the class `TypeParameter` represent a type parameter. |
11217 * | 10977 * |
11218 * <pre> | 10978 * <pre> |
11219 * typeParameter ::= | 10979 * typeParameter ::= |
11220 * [SimpleIdentifier] ('extends' [TypeName])? | 10980 * [SimpleIdentifier] ('extends' [TypeName])? |
11221 * </pre> | 10981 * </pre> |
11222 * | |
11223 * @coverage dart.engine.ast | |
11224 */ | 10982 */ |
11225 class TypeParameter extends Declaration { | 10983 class TypeParameter extends Declaration { |
11226 /** | 10984 /** |
11227 * The name of the type parameter. | 10985 * The name of the type parameter. |
11228 */ | 10986 */ |
11229 SimpleIdentifier _name; | 10987 SimpleIdentifier _name; |
11230 | 10988 |
11231 /** | 10989 /** |
11232 * The token representing the 'extends' keyword, or `null` if there was no exp
licit upper | 10990 * The token representing the 'extends' keyword, or `null` if there was no exp
licit upper |
11233 * bound. | 10991 * bound. |
(...skipping 13 matching lines...) Expand all Loading... |
11247 * @param metadata the annotations associated with the type parameter | 11005 * @param metadata the annotations associated with the type parameter |
11248 * @param name the name of the type parameter | 11006 * @param name the name of the type parameter |
11249 * @param keyword the token representing the 'extends' keyword | 11007 * @param keyword the token representing the 'extends' keyword |
11250 * @param bound the name of the upper bound for legal arguments | 11008 * @param bound the name of the upper bound for legal arguments |
11251 */ | 11009 */ |
11252 TypeParameter(Comment comment, List<Annotation> metadata, SimpleIdentifier nam
e, this.keyword, TypeName bound) : super(comment, metadata) { | 11010 TypeParameter(Comment comment, List<Annotation> metadata, SimpleIdentifier nam
e, this.keyword, TypeName bound) : super(comment, metadata) { |
11253 this._name = becomeParentOf(name); | 11011 this._name = becomeParentOf(name); |
11254 this._bound = becomeParentOf(bound); | 11012 this._bound = becomeParentOf(bound); |
11255 } | 11013 } |
11256 | 11014 |
11257 accept(ASTVisitor visitor) => visitor.visitTypeParameter(this); | 11015 accept(AstVisitor visitor) => visitor.visitTypeParameter(this); |
11258 | 11016 |
11259 /** | 11017 /** |
11260 * Return the name of the upper bound for legal arguments, or `null` if there
was no | 11018 * Return the name of the upper bound for legal arguments, or `null` if there
was no |
11261 * explicit upper bound. | 11019 * explicit upper bound. |
11262 * | 11020 * |
11263 * @return the name of the upper bound for legal arguments | 11021 * @return the name of the upper bound for legal arguments |
11264 */ | 11022 */ |
11265 TypeName get bound => _bound; | 11023 TypeName get bound => _bound; |
11266 | 11024 |
11267 TypeParameterElement get element => _name != null ? (_name.staticElement as Ty
peParameterElement) : null; | 11025 TypeParameterElement get element => _name != null ? (_name.staticElement as Ty
peParameterElement) : null; |
(...skipping 23 matching lines...) Expand all Loading... |
11291 | 11049 |
11292 /** | 11050 /** |
11293 * Set the name of the type parameter to the given identifier. | 11051 * Set the name of the type parameter to the given identifier. |
11294 * | 11052 * |
11295 * @param identifier the name of the type parameter | 11053 * @param identifier the name of the type parameter |
11296 */ | 11054 */ |
11297 void set name(SimpleIdentifier identifier) { | 11055 void set name(SimpleIdentifier identifier) { |
11298 _name = becomeParentOf(identifier); | 11056 _name = becomeParentOf(identifier); |
11299 } | 11057 } |
11300 | 11058 |
11301 void visitChildren(ASTVisitor visitor) { | 11059 void visitChildren(AstVisitor visitor) { |
11302 super.visitChildren(visitor); | 11060 super.visitChildren(visitor); |
11303 safelyVisitChild(_name, visitor); | 11061 safelyVisitChild(_name, visitor); |
11304 safelyVisitChild(_bound, visitor); | 11062 safelyVisitChild(_bound, visitor); |
11305 } | 11063 } |
11306 | 11064 |
11307 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; | 11065 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; |
11308 } | 11066 } |
11309 | 11067 |
11310 /** | 11068 /** |
11311 * Instances of the class `TypeParameterList` represent type parameters within a
declaration. | 11069 * Instances of the class `TypeParameterList` represent type parameters within a
declaration. |
11312 * | 11070 * |
11313 * <pre> | 11071 * <pre> |
11314 * typeParameterList ::= | 11072 * typeParameterList ::= |
11315 * '<' [TypeParameter] (',' [TypeParameter])* '>' | 11073 * '<' [TypeParameter] (',' [TypeParameter])* '>' |
11316 * </pre> | 11074 * </pre> |
11317 * | |
11318 * @coverage dart.engine.ast | |
11319 */ | 11075 */ |
11320 class TypeParameterList extends ASTNode { | 11076 class TypeParameterList extends AstNode { |
11321 /** | 11077 /** |
11322 * The left angle bracket. | 11078 * The left angle bracket. |
11323 */ | 11079 */ |
11324 final Token leftBracket; | 11080 final Token leftBracket; |
11325 | 11081 |
11326 /** | 11082 /** |
11327 * The type parameters in the list. | 11083 * The type parameters in the list. |
11328 */ | 11084 */ |
11329 NodeList<TypeParameter> _typeParameters; | 11085 NodeList<TypeParameter> _typeParameters; |
11330 | 11086 |
11331 /** | 11087 /** |
11332 * The right angle bracket. | 11088 * The right angle bracket. |
11333 */ | 11089 */ |
11334 final Token rightBracket; | 11090 final Token rightBracket; |
11335 | 11091 |
11336 /** | 11092 /** |
11337 * Initialize a newly created list of type parameters. | 11093 * Initialize a newly created list of type parameters. |
11338 * | 11094 * |
11339 * @param leftBracket the left angle bracket | 11095 * @param leftBracket the left angle bracket |
11340 * @param typeParameters the type parameters in the list | 11096 * @param typeParameters the type parameters in the list |
11341 * @param rightBracket the right angle bracket | 11097 * @param rightBracket the right angle bracket |
11342 */ | 11098 */ |
11343 TypeParameterList(this.leftBracket, List<TypeParameter> typeParameters, this.r
ightBracket) { | 11099 TypeParameterList(this.leftBracket, List<TypeParameter> typeParameters, this.r
ightBracket) { |
11344 this._typeParameters = new NodeList<TypeParameter>(this); | 11100 this._typeParameters = new NodeList<TypeParameter>(this); |
11345 this._typeParameters.addAll(typeParameters); | 11101 this._typeParameters.addAll(typeParameters); |
11346 } | 11102 } |
11347 | 11103 |
11348 accept(ASTVisitor visitor) => visitor.visitTypeParameterList(this); | 11104 accept(AstVisitor visitor) => visitor.visitTypeParameterList(this); |
11349 | 11105 |
11350 Token get beginToken => leftBracket; | 11106 Token get beginToken => leftBracket; |
11351 | 11107 |
11352 Token get endToken => rightBracket; | 11108 Token get endToken => rightBracket; |
11353 | 11109 |
11354 /** | 11110 /** |
11355 * Return the type parameters for the type. | 11111 * Return the type parameters for the type. |
11356 * | 11112 * |
11357 * @return the type parameters for the type | 11113 * @return the type parameters for the type |
11358 */ | 11114 */ |
11359 NodeList<TypeParameter> get typeParameters => _typeParameters; | 11115 NodeList<TypeParameter> get typeParameters => _typeParameters; |
11360 | 11116 |
11361 void visitChildren(ASTVisitor visitor) { | 11117 void visitChildren(AstVisitor visitor) { |
11362 _typeParameters.accept(visitor); | 11118 _typeParameters.accept(visitor); |
11363 } | 11119 } |
11364 } | 11120 } |
11365 | 11121 |
11366 /** | 11122 /** |
11367 * The abstract class `TypedLiteral` defines the behavior common to literals tha
t have a type | 11123 * The abstract class `TypedLiteral` defines the behavior common to literals tha
t have a type |
11368 * associated with them. | 11124 * associated with them. |
11369 * | 11125 * |
11370 * <pre> | 11126 * <pre> |
11371 * listLiteral ::= | 11127 * listLiteral ::= |
11372 * [ListLiteral] | 11128 * [ListLiteral] |
11373 * | [MapLiteral] | 11129 * | [MapLiteral] |
11374 * </pre> | 11130 * </pre> |
11375 * | |
11376 * @coverage dart.engine.ast | |
11377 */ | 11131 */ |
11378 abstract class TypedLiteral extends Literal { | 11132 abstract class TypedLiteral extends Literal { |
11379 /** | 11133 /** |
11380 * The token representing the 'const' keyword, or `null` if the literal is not
a constant. | 11134 * The token representing the 'const' keyword, or `null` if the literal is not
a constant. |
11381 */ | 11135 */ |
11382 Token constKeyword; | 11136 Token constKeyword; |
11383 | 11137 |
11384 /** | 11138 /** |
11385 * The type argument associated with this literal, or `null` if no type argume
nts were | 11139 * The type argument associated with this literal, or `null` if no type argume
nts were |
11386 * declared. | 11140 * declared. |
11387 */ | 11141 */ |
11388 TypeArgumentList typeArguments; | 11142 TypeArgumentList typeArguments; |
11389 | 11143 |
11390 /** | 11144 /** |
11391 * Initialize a newly created typed literal. | 11145 * Initialize a newly created typed literal. |
11392 * | 11146 * |
11393 * @param constKeyword the token representing the 'const' keyword | 11147 * @param constKeyword the token representing the 'const' keyword |
11394 * @param typeArguments the type argument associated with this literal, or `nu
ll` if no type | 11148 * @param typeArguments the type argument associated with this literal, or `nu
ll` if no type |
11395 * arguments were declared | 11149 * arguments were declared |
11396 */ | 11150 */ |
11397 TypedLiteral(this.constKeyword, TypeArgumentList typeArguments) { | 11151 TypedLiteral(this.constKeyword, TypeArgumentList typeArguments) { |
11398 this.typeArguments = becomeParentOf(typeArguments); | 11152 this.typeArguments = becomeParentOf(typeArguments); |
11399 } | 11153 } |
11400 | 11154 |
11401 void visitChildren(ASTVisitor visitor) { | 11155 void visitChildren(AstVisitor visitor) { |
11402 safelyVisitChild(typeArguments, visitor); | 11156 safelyVisitChild(typeArguments, visitor); |
11403 } | 11157 } |
11404 } | 11158 } |
11405 | 11159 |
11406 /** | 11160 /** |
11407 * The abstract class `UriBasedDirective` defines the behavior common to nodes t
hat represent | 11161 * The abstract class `UriBasedDirective` defines the behavior common to nodes t
hat represent |
11408 * a directive that references a URI. | 11162 * a directive that references a URI. |
11409 * | 11163 * |
11410 * <pre> | 11164 * <pre> |
11411 * uriBasedDirective ::= | 11165 * uriBasedDirective ::= |
11412 * [ExportDirective] | 11166 * [ExportDirective] |
11413 * | [ImportDirective] | 11167 * | [ImportDirective] |
11414 * | [PartDirective] | 11168 * | [PartDirective] |
11415 * </pre> | 11169 * </pre> |
11416 * | |
11417 * @coverage dart.engine.ast | |
11418 */ | 11170 */ |
11419 abstract class UriBasedDirective extends Directive { | 11171 abstract class UriBasedDirective extends Directive { |
11420 /** | 11172 /** |
11421 * The URI referenced by this directive. | 11173 * The URI referenced by this directive. |
11422 */ | 11174 */ |
11423 StringLiteral _uri; | 11175 StringLiteral _uri; |
11424 | 11176 |
11425 /** | 11177 /** |
11426 * Initialize a newly create URI-based directive. | 11178 * Initialize a newly create URI-based directive. |
11427 * | 11179 * |
(...skipping 23 matching lines...) Expand all Loading... |
11451 | 11203 |
11452 /** | 11204 /** |
11453 * Set the URI referenced by this directive to the given URI. | 11205 * Set the URI referenced by this directive to the given URI. |
11454 * | 11206 * |
11455 * @param uri the URI referenced by this directive | 11207 * @param uri the URI referenced by this directive |
11456 */ | 11208 */ |
11457 void set uri(StringLiteral uri) { | 11209 void set uri(StringLiteral uri) { |
11458 this._uri = becomeParentOf(uri); | 11210 this._uri = becomeParentOf(uri); |
11459 } | 11211 } |
11460 | 11212 |
11461 void visitChildren(ASTVisitor visitor) { | 11213 void visitChildren(AstVisitor visitor) { |
11462 super.visitChildren(visitor); | 11214 super.visitChildren(visitor); |
11463 safelyVisitChild(_uri, visitor); | 11215 safelyVisitChild(_uri, visitor); |
11464 } | 11216 } |
11465 } | 11217 } |
11466 | 11218 |
11467 /** | 11219 /** |
11468 * Instances of the class `VariableDeclaration` represent an identifier that has
an initial | 11220 * Instances of the class `VariableDeclaration` represent an identifier that has
an initial |
11469 * value associated with it. Instances of this class are always children of the
class | 11221 * value associated with it. Instances of this class are always children of the
class |
11470 * [VariableDeclarationList]. | 11222 * [VariableDeclarationList]. |
11471 * | 11223 * |
11472 * <pre> | 11224 * <pre> |
11473 * variableDeclaration ::= | 11225 * variableDeclaration ::= |
11474 * [SimpleIdentifier] ('=' [Expression])? | 11226 * [SimpleIdentifier] ('=' [Expression])? |
11475 * </pre> | 11227 * </pre> |
11476 * | |
11477 * @coverage dart.engine.ast | |
11478 */ | 11228 */ |
11479 class VariableDeclaration extends Declaration { | 11229 class VariableDeclaration extends Declaration { |
11480 /** | 11230 /** |
11481 * The name of the variable being declared. | 11231 * The name of the variable being declared. |
11482 */ | 11232 */ |
11483 SimpleIdentifier _name; | 11233 SimpleIdentifier _name; |
11484 | 11234 |
11485 /** | 11235 /** |
11486 * The equal sign separating the variable name from the initial value, or `nul
l` if the | 11236 * The equal sign separating the variable name from the initial value, or `nul
l` if the |
11487 * initial value was not specified. | 11237 * initial value was not specified. |
(...skipping 13 matching lines...) Expand all Loading... |
11501 * @param metadata the annotations associated with this member | 11251 * @param metadata the annotations associated with this member |
11502 * @param name the name of the variable being declared | 11252 * @param name the name of the variable being declared |
11503 * @param equals the equal sign separating the variable name from the initial
value | 11253 * @param equals the equal sign separating the variable name from the initial
value |
11504 * @param initializer the expression used to compute the initial value for the
variable | 11254 * @param initializer the expression used to compute the initial value for the
variable |
11505 */ | 11255 */ |
11506 VariableDeclaration(Comment comment, List<Annotation> metadata, SimpleIdentifi
er name, this.equals, Expression initializer) : super(comment, metadata) { | 11256 VariableDeclaration(Comment comment, List<Annotation> metadata, SimpleIdentifi
er name, this.equals, Expression initializer) : super(comment, metadata) { |
11507 this._name = becomeParentOf(name); | 11257 this._name = becomeParentOf(name); |
11508 this._initializer = becomeParentOf(initializer); | 11258 this._initializer = becomeParentOf(initializer); |
11509 } | 11259 } |
11510 | 11260 |
11511 accept(ASTVisitor visitor) => visitor.visitVariableDeclaration(this); | 11261 accept(AstVisitor visitor) => visitor.visitVariableDeclaration(this); |
11512 | 11262 |
11513 /** | 11263 /** |
11514 * This overridden implementation of getDocumentationComment() looks in the gr
andparent node for | 11264 * This overridden implementation of getDocumentationComment() looks in the gr
andparent node for |
11515 * dartdoc comments if no documentation is specifically available on the node. | 11265 * dartdoc comments if no documentation is specifically available on the node. |
11516 */ | 11266 */ |
11517 Comment get documentationComment { | 11267 Comment get documentationComment { |
11518 Comment comment = super.documentationComment; | 11268 Comment comment = super.documentationComment; |
11519 if (comment == null) { | 11269 if (comment == null) { |
11520 if (parent != null && parent.parent != null) { | 11270 if (parent != null && parent.parent != null) { |
11521 ASTNode node = parent.parent; | 11271 AstNode node = parent.parent; |
11522 if (node is AnnotatedNode) { | 11272 if (node is AnnotatedNode) { |
11523 return node.documentationComment; | 11273 return node.documentationComment; |
11524 } | 11274 } |
11525 } | 11275 } |
11526 } | 11276 } |
11527 return comment; | 11277 return comment; |
11528 } | 11278 } |
11529 | 11279 |
11530 VariableElement get element => _name != null ? (_name.staticElement as Variabl
eElement) : null; | 11280 VariableElement get element => _name != null ? (_name.staticElement as Variabl
eElement) : null; |
11531 | 11281 |
(...skipping 18 matching lines...) Expand all Loading... |
11550 * @return the name of the variable being declared | 11300 * @return the name of the variable being declared |
11551 */ | 11301 */ |
11552 SimpleIdentifier get name => _name; | 11302 SimpleIdentifier get name => _name; |
11553 | 11303 |
11554 /** | 11304 /** |
11555 * Return `true` if this variable was declared with the 'const' modifier. | 11305 * Return `true` if this variable was declared with the 'const' modifier. |
11556 * | 11306 * |
11557 * @return `true` if this variable was declared with the 'const' modifier | 11307 * @return `true` if this variable was declared with the 'const' modifier |
11558 */ | 11308 */ |
11559 bool get isConst { | 11309 bool get isConst { |
11560 ASTNode parent = this.parent; | 11310 AstNode parent = this.parent; |
11561 return parent is VariableDeclarationList && parent.isConst; | 11311 return parent is VariableDeclarationList && parent.isConst; |
11562 } | 11312 } |
11563 | 11313 |
11564 /** | 11314 /** |
11565 * Return `true` if this variable was declared with the 'final' modifier. Vari
ables that are | 11315 * Return `true` if this variable was declared with the 'final' modifier. Vari
ables that are |
11566 * declared with the 'const' modifier will return `false` even though they are
implicitly | 11316 * declared with the 'const' modifier will return `false` even though they are
implicitly |
11567 * final. | 11317 * final. |
11568 * | 11318 * |
11569 * @return `true` if this variable was declared with the 'final' modifier | 11319 * @return `true` if this variable was declared with the 'final' modifier |
11570 */ | 11320 */ |
11571 bool get isFinal { | 11321 bool get isFinal { |
11572 ASTNode parent = this.parent; | 11322 AstNode parent = this.parent; |
11573 return parent is VariableDeclarationList && parent.isFinal; | 11323 return parent is VariableDeclarationList && parent.isFinal; |
11574 } | 11324 } |
11575 | 11325 |
11576 /** | 11326 /** |
11577 * Set the expression used to compute the initial value for the variable to th
e given expression. | 11327 * Set the expression used to compute the initial value for the variable to th
e given expression. |
11578 * | 11328 * |
11579 * @param initializer the expression used to compute the initial value for the
variable | 11329 * @param initializer the expression used to compute the initial value for the
variable |
11580 */ | 11330 */ |
11581 void set initializer(Expression initializer) { | 11331 void set initializer(Expression initializer) { |
11582 this._initializer = becomeParentOf(initializer); | 11332 this._initializer = becomeParentOf(initializer); |
11583 } | 11333 } |
11584 | 11334 |
11585 /** | 11335 /** |
11586 * Set the name of the variable being declared to the given identifier. | 11336 * Set the name of the variable being declared to the given identifier. |
11587 * | 11337 * |
11588 * @param name the name of the variable being declared | 11338 * @param name the name of the variable being declared |
11589 */ | 11339 */ |
11590 void set name(SimpleIdentifier name) { | 11340 void set name(SimpleIdentifier name) { |
11591 this._name = becomeParentOf(name); | 11341 this._name = becomeParentOf(name); |
11592 } | 11342 } |
11593 | 11343 |
11594 void visitChildren(ASTVisitor visitor) { | 11344 void visitChildren(AstVisitor visitor) { |
11595 super.visitChildren(visitor); | 11345 super.visitChildren(visitor); |
11596 safelyVisitChild(_name, visitor); | 11346 safelyVisitChild(_name, visitor); |
11597 safelyVisitChild(_initializer, visitor); | 11347 safelyVisitChild(_initializer, visitor); |
11598 } | 11348 } |
11599 | 11349 |
11600 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; | 11350 Token get firstTokenAfterCommentAndMetadata => _name.beginToken; |
11601 } | 11351 } |
11602 | 11352 |
11603 /** | 11353 /** |
11604 * Instances of the class `VariableDeclarationList` represent the declaration of
one or more | 11354 * Instances of the class `VariableDeclarationList` represent the declaration of
one or more |
11605 * variables of the same type. | 11355 * variables of the same type. |
11606 * | 11356 * |
11607 * <pre> | 11357 * <pre> |
11608 * variableDeclarationList ::= | 11358 * variableDeclarationList ::= |
11609 * finalConstVarOrType [VariableDeclaration] (',' [VariableDeclaration])* | 11359 * finalConstVarOrType [VariableDeclaration] (',' [VariableDeclaration])* |
11610 * | 11360 * |
11611 * finalConstVarOrType ::= | 11361 * finalConstVarOrType ::= |
11612 * | 'final' [TypeName]? | 11362 * | 'final' [TypeName]? |
11613 * | 'const' [TypeName]? | 11363 * | 'const' [TypeName]? |
11614 * | 'var' | 11364 * | 'var' |
11615 * | [TypeName] | 11365 * | [TypeName] |
11616 * </pre> | 11366 * </pre> |
11617 * | |
11618 * @coverage dart.engine.ast | |
11619 */ | 11367 */ |
11620 class VariableDeclarationList extends AnnotatedNode { | 11368 class VariableDeclarationList extends AnnotatedNode { |
11621 /** | 11369 /** |
11622 * The token representing the 'final', 'const' or 'var' keyword, or `null` if
no keyword was | 11370 * The token representing the 'final', 'const' or 'var' keyword, or `null` if
no keyword was |
11623 * included. | 11371 * included. |
11624 */ | 11372 */ |
11625 Token keyword; | 11373 Token keyword; |
11626 | 11374 |
11627 /** | 11375 /** |
11628 * The type of the variables being declared, or `null` if no type was provided
. | 11376 * The type of the variables being declared, or `null` if no type was provided
. |
(...skipping 13 matching lines...) Expand all Loading... |
11642 * @param keyword the token representing the 'final', 'const' or 'var' keyword | 11390 * @param keyword the token representing the 'final', 'const' or 'var' keyword |
11643 * @param type the type of the variables being declared | 11391 * @param type the type of the variables being declared |
11644 * @param variables a list containing the individual variables being declared | 11392 * @param variables a list containing the individual variables being declared |
11645 */ | 11393 */ |
11646 VariableDeclarationList(Comment comment, List<Annotation> metadata, this.keywo
rd, TypeName type, List<VariableDeclaration> variables) : super(comment, metadat
a) { | 11394 VariableDeclarationList(Comment comment, List<Annotation> metadata, this.keywo
rd, TypeName type, List<VariableDeclaration> variables) : super(comment, metadat
a) { |
11647 this._variables = new NodeList<VariableDeclaration>(this); | 11395 this._variables = new NodeList<VariableDeclaration>(this); |
11648 this._type = becomeParentOf(type); | 11396 this._type = becomeParentOf(type); |
11649 this._variables.addAll(variables); | 11397 this._variables.addAll(variables); |
11650 } | 11398 } |
11651 | 11399 |
11652 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationList(this); | 11400 accept(AstVisitor visitor) => visitor.visitVariableDeclarationList(this); |
11653 | 11401 |
11654 Token get endToken => _variables.endToken; | 11402 Token get endToken => _variables.endToken; |
11655 | 11403 |
11656 /** | 11404 /** |
11657 * Return the type of the variables being declared, or `null` if no type was p
rovided. | 11405 * Return the type of the variables being declared, or `null` if no type was p
rovided. |
11658 * | 11406 * |
11659 * @return the type of the variables being declared | 11407 * @return the type of the variables being declared |
11660 */ | 11408 */ |
11661 TypeName get type => _type; | 11409 TypeName get type => _type; |
11662 | 11410 |
(...skipping 22 matching lines...) Expand all Loading... |
11685 | 11433 |
11686 /** | 11434 /** |
11687 * Set the type of the variables being declared to the given type name. | 11435 * Set the type of the variables being declared to the given type name. |
11688 * | 11436 * |
11689 * @param typeName the type of the variables being declared | 11437 * @param typeName the type of the variables being declared |
11690 */ | 11438 */ |
11691 void set type(TypeName typeName) { | 11439 void set type(TypeName typeName) { |
11692 _type = becomeParentOf(typeName); | 11440 _type = becomeParentOf(typeName); |
11693 } | 11441 } |
11694 | 11442 |
11695 void visitChildren(ASTVisitor visitor) { | 11443 void visitChildren(AstVisitor visitor) { |
11696 safelyVisitChild(_type, visitor); | 11444 safelyVisitChild(_type, visitor); |
11697 _variables.accept(visitor); | 11445 _variables.accept(visitor); |
11698 } | 11446 } |
11699 | 11447 |
11700 Token get firstTokenAfterCommentAndMetadata { | 11448 Token get firstTokenAfterCommentAndMetadata { |
11701 if (keyword != null) { | 11449 if (keyword != null) { |
11702 return keyword; | 11450 return keyword; |
11703 } else if (_type != null) { | 11451 } else if (_type != null) { |
11704 return _type.beginToken; | 11452 return _type.beginToken; |
11705 } | 11453 } |
11706 return _variables.beginToken; | 11454 return _variables.beginToken; |
11707 } | 11455 } |
11708 } | 11456 } |
11709 | 11457 |
11710 /** | 11458 /** |
11711 * Instances of the class `VariableDeclarationStatement` represent a list of var
iables that | 11459 * Instances of the class `VariableDeclarationStatement` represent a list of var
iables that |
11712 * are being declared in a context where a statement is required. | 11460 * are being declared in a context where a statement is required. |
11713 * | 11461 * |
11714 * <pre> | 11462 * <pre> |
11715 * variableDeclarationStatement ::= | 11463 * variableDeclarationStatement ::= |
11716 * [VariableDeclarationList] ';' | 11464 * [VariableDeclarationList] ';' |
11717 * </pre> | 11465 * </pre> |
11718 * | |
11719 * @coverage dart.engine.ast | |
11720 */ | 11466 */ |
11721 class VariableDeclarationStatement extends Statement { | 11467 class VariableDeclarationStatement extends Statement { |
11722 /** | 11468 /** |
11723 * The variables being declared. | 11469 * The variables being declared. |
11724 */ | 11470 */ |
11725 VariableDeclarationList _variableList; | 11471 VariableDeclarationList _variableList; |
11726 | 11472 |
11727 /** | 11473 /** |
11728 * The semicolon terminating the statement. | 11474 * The semicolon terminating the statement. |
11729 */ | 11475 */ |
11730 Token semicolon; | 11476 Token semicolon; |
11731 | 11477 |
11732 /** | 11478 /** |
11733 * Initialize a newly created variable declaration statement. | 11479 * Initialize a newly created variable declaration statement. |
11734 * | 11480 * |
11735 * @param variableList the fields being declared | 11481 * @param variableList the fields being declared |
11736 * @param semicolon the semicolon terminating the statement | 11482 * @param semicolon the semicolon terminating the statement |
11737 */ | 11483 */ |
11738 VariableDeclarationStatement(VariableDeclarationList variableList, this.semico
lon) { | 11484 VariableDeclarationStatement(VariableDeclarationList variableList, this.semico
lon) { |
11739 this._variableList = becomeParentOf(variableList); | 11485 this._variableList = becomeParentOf(variableList); |
11740 } | 11486 } |
11741 | 11487 |
11742 accept(ASTVisitor visitor) => visitor.visitVariableDeclarationStatement(this); | 11488 accept(AstVisitor visitor) => visitor.visitVariableDeclarationStatement(this); |
11743 | 11489 |
11744 Token get beginToken => _variableList.beginToken; | 11490 Token get beginToken => _variableList.beginToken; |
11745 | 11491 |
11746 Token get endToken => semicolon; | 11492 Token get endToken => semicolon; |
11747 | 11493 |
11748 /** | 11494 /** |
11749 * Return the variables being declared. | 11495 * Return the variables being declared. |
11750 * | 11496 * |
11751 * @return the variables being declared | 11497 * @return the variables being declared |
11752 */ | 11498 */ |
11753 VariableDeclarationList get variables => _variableList; | 11499 VariableDeclarationList get variables => _variableList; |
11754 | 11500 |
11755 /** | 11501 /** |
11756 * Set the variables being declared to the given list of variables. | 11502 * Set the variables being declared to the given list of variables. |
11757 * | 11503 * |
11758 * @param variableList the variables being declared | 11504 * @param variableList the variables being declared |
11759 */ | 11505 */ |
11760 void set variables(VariableDeclarationList variableList) { | 11506 void set variables(VariableDeclarationList variableList) { |
11761 this._variableList = becomeParentOf(variableList); | 11507 this._variableList = becomeParentOf(variableList); |
11762 } | 11508 } |
11763 | 11509 |
11764 void visitChildren(ASTVisitor visitor) { | 11510 void visitChildren(AstVisitor visitor) { |
11765 safelyVisitChild(_variableList, visitor); | 11511 safelyVisitChild(_variableList, visitor); |
11766 } | 11512 } |
11767 } | 11513 } |
11768 | 11514 |
11769 /** | 11515 /** |
11770 * Instances of the class `WhileStatement` represent a while statement. | 11516 * Instances of the class `WhileStatement` represent a while statement. |
11771 * | 11517 * |
11772 * <pre> | 11518 * <pre> |
11773 * whileStatement ::= | 11519 * whileStatement ::= |
11774 * 'while' '(' [Expression] ')' [Statement] | 11520 * 'while' '(' [Expression] ')' [Statement] |
11775 * </pre> | 11521 * </pre> |
11776 * | |
11777 * @coverage dart.engine.ast | |
11778 */ | 11522 */ |
11779 class WhileStatement extends Statement { | 11523 class WhileStatement extends Statement { |
11780 /** | 11524 /** |
11781 * The token representing the 'while' keyword. | 11525 * The token representing the 'while' keyword. |
11782 */ | 11526 */ |
11783 Token keyword; | 11527 Token keyword; |
11784 | 11528 |
11785 /** | 11529 /** |
11786 * The left parenthesis. | 11530 * The left parenthesis. |
11787 */ | 11531 */ |
(...skipping 21 matching lines...) Expand all Loading... |
11809 * @param leftParenthesis the left parenthesis | 11553 * @param leftParenthesis the left parenthesis |
11810 * @param condition the expression used to determine whether to execute the bo
dy of the loop | 11554 * @param condition the expression used to determine whether to execute the bo
dy of the loop |
11811 * @param rightParenthesis the right parenthesis | 11555 * @param rightParenthesis the right parenthesis |
11812 * @param body the body of the loop | 11556 * @param body the body of the loop |
11813 */ | 11557 */ |
11814 WhileStatement(this.keyword, this.leftParenthesis, Expression condition, this.
rightParenthesis, Statement body) { | 11558 WhileStatement(this.keyword, this.leftParenthesis, Expression condition, this.
rightParenthesis, Statement body) { |
11815 this._condition = becomeParentOf(condition); | 11559 this._condition = becomeParentOf(condition); |
11816 this._body = becomeParentOf(body); | 11560 this._body = becomeParentOf(body); |
11817 } | 11561 } |
11818 | 11562 |
11819 accept(ASTVisitor visitor) => visitor.visitWhileStatement(this); | 11563 accept(AstVisitor visitor) => visitor.visitWhileStatement(this); |
11820 | 11564 |
11821 Token get beginToken => keyword; | 11565 Token get beginToken => keyword; |
11822 | 11566 |
11823 /** | 11567 /** |
11824 * Return the body of the loop. | 11568 * Return the body of the loop. |
11825 * | 11569 * |
11826 * @return the body of the loop | 11570 * @return the body of the loop |
11827 */ | 11571 */ |
11828 Statement get body => _body; | 11572 Statement get body => _body; |
11829 | 11573 |
(...skipping 18 matching lines...) Expand all Loading... |
11848 /** | 11592 /** |
11849 * Set the expression used to determine whether to execute the body of the loo
p to the given | 11593 * Set the expression used to determine whether to execute the body of the loo
p to the given |
11850 * expression. | 11594 * expression. |
11851 * | 11595 * |
11852 * @param expression the expression used to determine whether to execute the b
ody of the loop | 11596 * @param expression the expression used to determine whether to execute the b
ody of the loop |
11853 */ | 11597 */ |
11854 void set condition(Expression expression) { | 11598 void set condition(Expression expression) { |
11855 _condition = becomeParentOf(expression); | 11599 _condition = becomeParentOf(expression); |
11856 } | 11600 } |
11857 | 11601 |
11858 void visitChildren(ASTVisitor visitor) { | 11602 void visitChildren(AstVisitor visitor) { |
11859 safelyVisitChild(_condition, visitor); | 11603 safelyVisitChild(_condition, visitor); |
11860 safelyVisitChild(_body, visitor); | 11604 safelyVisitChild(_body, visitor); |
11861 } | 11605 } |
11862 } | 11606 } |
11863 | 11607 |
11864 /** | 11608 /** |
11865 * Instances of the class `WithClause` represent the with clause in a class decl
aration. | 11609 * Instances of the class `WithClause` represent the with clause in a class decl
aration. |
11866 * | 11610 * |
11867 * <pre> | 11611 * <pre> |
11868 * withClause ::= | 11612 * withClause ::= |
11869 * 'with' [TypeName] (',' [TypeName])* | 11613 * 'with' [TypeName] (',' [TypeName])* |
11870 * </pre> | 11614 * </pre> |
11871 * | |
11872 * @coverage dart.engine.ast | |
11873 */ | 11615 */ |
11874 class WithClause extends ASTNode { | 11616 class WithClause extends AstNode { |
11875 /** | 11617 /** |
11876 * The token representing the 'with' keyword. | 11618 * The token representing the 'with' keyword. |
11877 */ | 11619 */ |
11878 Token _withKeyword; | 11620 Token _withKeyword; |
11879 | 11621 |
11880 /** | 11622 /** |
11881 * The names of the mixins that were specified. | 11623 * The names of the mixins that were specified. |
11882 */ | 11624 */ |
11883 NodeList<TypeName> _mixinTypes; | 11625 NodeList<TypeName> _mixinTypes; |
11884 | 11626 |
11885 /** | 11627 /** |
11886 * Initialize a newly created with clause. | 11628 * Initialize a newly created with clause. |
11887 * | 11629 * |
11888 * @param withKeyword the token representing the 'with' keyword | 11630 * @param withKeyword the token representing the 'with' keyword |
11889 * @param mixinTypes the names of the mixins that were specified | 11631 * @param mixinTypes the names of the mixins that were specified |
11890 */ | 11632 */ |
11891 WithClause(Token withKeyword, List<TypeName> mixinTypes) { | 11633 WithClause(Token withKeyword, List<TypeName> mixinTypes) { |
11892 this._mixinTypes = new NodeList<TypeName>(this); | 11634 this._mixinTypes = new NodeList<TypeName>(this); |
11893 this._withKeyword = withKeyword; | 11635 this._withKeyword = withKeyword; |
11894 this._mixinTypes.addAll(mixinTypes); | 11636 this._mixinTypes.addAll(mixinTypes); |
11895 } | 11637 } |
11896 | 11638 |
11897 accept(ASTVisitor visitor) => visitor.visitWithClause(this); | 11639 accept(AstVisitor visitor) => visitor.visitWithClause(this); |
11898 | 11640 |
11899 Token get beginToken => _withKeyword; | 11641 Token get beginToken => _withKeyword; |
11900 | 11642 |
11901 Token get endToken => _mixinTypes.endToken; | 11643 Token get endToken => _mixinTypes.endToken; |
11902 | 11644 |
11903 /** | 11645 /** |
11904 * Return the names of the mixins that were specified. | 11646 * Return the names of the mixins that were specified. |
11905 * | 11647 * |
11906 * @return the names of the mixins that were specified | 11648 * @return the names of the mixins that were specified |
11907 */ | 11649 */ |
11908 NodeList<TypeName> get mixinTypes => _mixinTypes; | 11650 NodeList<TypeName> get mixinTypes => _mixinTypes; |
11909 | 11651 |
11910 /** | 11652 /** |
11911 * Return the token representing the 'with' keyword. | 11653 * Return the token representing the 'with' keyword. |
11912 * | 11654 * |
11913 * @return the token representing the 'with' keyword | 11655 * @return the token representing the 'with' keyword |
11914 */ | 11656 */ |
11915 Token get withKeyword => _withKeyword; | 11657 Token get withKeyword => _withKeyword; |
11916 | 11658 |
11917 /** | 11659 /** |
11918 * Set the token representing the 'with' keyword to the given token. | 11660 * Set the token representing the 'with' keyword to the given token. |
11919 * | 11661 * |
11920 * @param withKeyword the token representing the 'with' keyword | 11662 * @param withKeyword the token representing the 'with' keyword |
11921 */ | 11663 */ |
11922 void set mixinKeyword(Token withKeyword) { | 11664 void set mixinKeyword(Token withKeyword) { |
11923 this._withKeyword = withKeyword; | 11665 this._withKeyword = withKeyword; |
11924 } | 11666 } |
11925 | 11667 |
11926 void visitChildren(ASTVisitor visitor) { | 11668 void visitChildren(AstVisitor visitor) { |
11927 _mixinTypes.accept(visitor); | 11669 _mixinTypes.accept(visitor); |
11928 } | 11670 } |
11929 } | 11671 } |
11930 | 11672 |
11931 /** | 11673 /** |
11932 * Instances of the class `BreadthFirstVisitor` implement an AST visitor that wi
ll recursively | 11674 * Instances of the class `BreadthFirstVisitor` implement an AST visitor that wi
ll recursively |
11933 * visit all of the nodes in an AST structure, similar to [GeneralizingASTVisito
r]. This | 11675 * visit all of the nodes in an AST structure, similar to [GeneralizingAstVisito
r]. This |
11934 * visitor uses a breadth-first ordering rather than the depth-first ordering of | 11676 * visitor uses a breadth-first ordering rather than the depth-first ordering of |
11935 * [GeneralizingASTVisitor]. | 11677 * [GeneralizingAstVisitor]. |
11936 * | 11678 * |
11937 * Subclasses that override a visit method must either invoke the overridden vis
it method or | 11679 * Subclasses that override a visit method must either invoke the overridden vis
it method or |
11938 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods | 11680 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods |
11939 * for superclasses of the node to not be invoked and will cause the children of
the visited node to | 11681 * for superclasses of the node to not be invoked and will cause the children of
the visited node to |
11940 * not be visited. | 11682 * not be visited. |
11941 * | 11683 * |
11942 * In addition, subclasses should <b>not</b> explicitly visit the children of a
node, but should | 11684 * In addition, subclasses should <b>not</b> explicitly visit the children of a
node, but should |
11943 * ensure that the method [visitNode] is used to visit the children (either dire
ctly | 11685 * ensure that the method [visitNode] is used to visit the children (either dire
ctly |
11944 * or indirectly). Failure to do will break the order in which nodes are visited
. | 11686 * or indirectly). Failure to do will break the order in which nodes are visited
. |
11945 * | |
11946 * @coverage dart.engine.ast | |
11947 */ | 11687 */ |
11948 class BreadthFirstVisitor<R> extends GeneralizingASTVisitor<R> { | 11688 class BreadthFirstVisitor<R> extends GeneralizingAstVisitor<R> { |
11949 /** | 11689 /** |
11950 * A queue holding the nodes that have not yet been visited in the order in wh
ich they ought to be | 11690 * A queue holding the nodes that have not yet been visited in the order in wh
ich they ought to be |
11951 * visited. | 11691 * visited. |
11952 */ | 11692 */ |
11953 Queue<ASTNode> _queue = new Queue<ASTNode>(); | 11693 Queue<AstNode> _queue = new Queue<AstNode>(); |
11954 | 11694 |
11955 /** | 11695 /** |
11956 * A visitor, used to visit the children of the current node, that will add th
e nodes it visits to | 11696 * A visitor, used to visit the children of the current node, that will add th
e nodes it visits to |
11957 * the [queue]. | 11697 * the [queue]. |
11958 */ | 11698 */ |
11959 GeneralizingASTVisitor<Object> _childVisitor; | 11699 GeneralizingAstVisitor<Object> _childVisitor; |
11960 | 11700 |
11961 /** | 11701 /** |
11962 * Visit all nodes in the tree starting at the given `root` node, in breadth-f
irst order. | 11702 * Visit all nodes in the tree starting at the given `root` node, in breadth-f
irst order. |
11963 * | 11703 * |
11964 * @param root the root of the AST structure to be visited | 11704 * @param root the root of the AST structure to be visited |
11965 */ | 11705 */ |
11966 void visitAllNodes(ASTNode root) { | 11706 void visitAllNodes(AstNode root) { |
11967 _queue.add(root); | 11707 _queue.add(root); |
11968 while (!_queue.isEmpty) { | 11708 while (!_queue.isEmpty) { |
11969 ASTNode next = _queue.removeFirst(); | 11709 AstNode next = _queue.removeFirst(); |
11970 next.accept(this); | 11710 next.accept(this); |
11971 } | 11711 } |
11972 } | 11712 } |
11973 | 11713 |
11974 R visitNode(ASTNode node) { | 11714 R visitNode(AstNode node) { |
11975 node.visitChildren(_childVisitor); | 11715 node.visitChildren(_childVisitor); |
11976 return null; | 11716 return null; |
11977 } | 11717 } |
11978 | 11718 |
11979 BreadthFirstVisitor() { | 11719 BreadthFirstVisitor() { |
11980 this._childVisitor = new GeneralizingASTVisitor_BreadthFirstVisitor(this); | 11720 this._childVisitor = new GeneralizingAstVisitor_BreadthFirstVisitor(this); |
11981 } | 11721 } |
11982 } | 11722 } |
11983 | 11723 |
11984 class GeneralizingASTVisitor_BreadthFirstVisitor extends GeneralizingASTVisitor<
Object> { | 11724 class GeneralizingAstVisitor_BreadthFirstVisitor extends GeneralizingAstVisitor<
Object> { |
11985 final BreadthFirstVisitor BreadthFirstVisitor_this; | 11725 final BreadthFirstVisitor BreadthFirstVisitor_this; |
11986 | 11726 |
11987 GeneralizingASTVisitor_BreadthFirstVisitor(this.BreadthFirstVisitor_this) : su
per(); | 11727 GeneralizingAstVisitor_BreadthFirstVisitor(this.BreadthFirstVisitor_this) : su
per(); |
11988 | 11728 |
11989 Object visitNode(ASTNode node) { | 11729 Object visitNode(AstNode node) { |
11990 BreadthFirstVisitor_this._queue.add(node); | 11730 BreadthFirstVisitor_this._queue.add(node); |
11991 return null; | 11731 return null; |
11992 } | 11732 } |
11993 } | 11733 } |
11994 | 11734 |
11995 /** | 11735 /** |
11996 * Instances of the class `ConstantEvaluator` evaluate constant expressions to p
roduce their | 11736 * Instances of the class `ConstantEvaluator` evaluate constant expressions to p
roduce their |
11997 * compile-time value. According to the Dart Language Specification: <blockquote
> A constant | 11737 * compile-time value. According to the Dart Language Specification: <blockquote
> A constant |
11998 * expression is one of the following: | 11738 * expression is one of the following: |
11999 * | |
12000 * * A literal number. | 11739 * * A literal number. |
12001 * * A literal boolean. | 11740 * * A literal boolean. |
12002 * * A literal string where any interpolated expression is a compile-time consta
nt that evaluates | 11741 * * A literal string where any interpolated expression is a compile-time consta
nt that evaluates |
12003 * to a numeric, string or boolean value or to `null`. | 11742 * to a numeric, string or boolean value or to `null`. |
12004 * * `null`. | 11743 * * `null`. |
12005 * * A reference to a static constant variable. | 11744 * * A reference to a static constant variable. |
12006 * * An identifier expression that denotes a constant variable, a class or a typ
e parameter. | 11745 * * An identifier expression that denotes a constant variable, a class or a typ
e parameter. |
12007 * * A constant constructor invocation. | 11746 * * A constant constructor invocation. |
12008 * * A constant list literal. | 11747 * * A constant list literal. |
12009 * * A constant map literal. | 11748 * * A constant map literal. |
12010 * * A simple or qualified identifier denoting a top-level function or a static
method. | 11749 * * A simple or qualified identifier denoting a top-level function or a static
method. |
12011 * * A parenthesized expression `(e)` where `e` is a constant expression. | 11750 * * A parenthesized expression `(e)` where `e` is a constant expression. |
12012 * * An expression of one of the forms `identical(e1, e2)`, `e1 == e2`, | 11751 * * An expression of one of the forms `identical(e1, e2)`, `e1 == e2`, |
12013 * `e1 != e2` where `e1` and `e2` are constant expressions that evaluate to a | 11752 * `e1 != e2` where `e1` and `e2` are constant expressions that evaluate to a |
12014 * numeric, string or boolean value or to `null`. | 11753 * numeric, string or boolean value or to `null`. |
12015 * * An expression of one of the forms `!e`, `e1 && e2` or `e1 || e2`, where | 11754 * * An expression of one of the forms `!e`, `e1 && e2` or `e1 || e2`, where |
12016 * `e`, `e1` and `e2` are constant expressions that evaluate to a boolean value
or | 11755 * `e`, `e1` and `e2` are constant expressions that evaluate to a boolean value
or |
12017 * to `null`. | 11756 * to `null`. |
12018 * * An expression of one of the forms `~e`, `e1 ^ e2`, `e1 & e2`, | 11757 * * An expression of one of the forms `~e`, `e1 ^ e2`, `e1 & e2`, |
12019 * `e1 | e2`, `e1 >> e2` or `e1 << e2`, where `e`, `e1` and `e2` | 11758 * `e1 | e2`, `e1 >> e2` or `e1 << e2`, where `e`, `e1` and `e2` |
12020 * are constant expressions that evaluate to an integer value or to `null`. | 11759 * are constant expressions that evaluate to an integer value or to `null`. |
12021 * * An expression of one of the forms `-e`, `e1 + e2`, `e1 - e2`, | 11760 * * An expression of one of the forms `-e`, `e1 + e2`, `e1 - e2`, |
12022 * `e1 * e2`, `e1 / e2`, `e1 ~/ e2`, `e1 > e2`, `e1 < e2`, | 11761 * `e1 * e2`, `e1 / e2`, `e1 ~/ e2`, `e1 > e2`, `e1 < e2`, |
12023 * `e1 >= e2`, `e1 <= e2` or `e1 % e2`, where `e`, `e1` and `e2` | 11762 * `e1 >= e2`, `e1 <= e2` or `e1 % e2`, where `e`, `e1` and `e2` |
12024 * are constant expressions that evaluate to a numeric value or to `null`. | 11763 * are constant expressions that evaluate to a numeric value or to `null`. |
12025 * | |
12026 * </blockquote> The values returned by instances of this class are therefore `n
ull` and | 11764 * </blockquote> The values returned by instances of this class are therefore `n
ull` and |
12027 * instances of the classes `Boolean`, `BigInteger`, `Double`, `String`, and | 11765 * instances of the classes `Boolean`, `BigInteger`, `Double`, `String`, and |
12028 * `DartObject`. | 11766 * `DartObject`. |
12029 * | 11767 * |
12030 * In addition, this class defines several values that can be returned to indica
te various | 11768 * In addition, this class defines several values that can be returned to indica
te various |
12031 * conditions encountered during evaluation. These are documented with the stati
c field that define | 11769 * conditions encountered during evaluation. These are documented with the stati
c field that define |
12032 * those values. | 11770 * those values. |
12033 * | |
12034 * @coverage dart.engine.ast | |
12035 */ | 11771 */ |
12036 class ConstantEvaluator extends GeneralizingASTVisitor<Object> { | 11772 class ConstantEvaluator extends GeneralizingAstVisitor<Object> { |
12037 /** | 11773 /** |
12038 * The value returned for expressions (or non-expression nodes) that are not c
ompile-time constant | 11774 * The value returned for expressions (or non-expression nodes) that are not c
ompile-time constant |
12039 * expressions. | 11775 * expressions. |
12040 */ | 11776 */ |
12041 static Object NOT_A_CONSTANT = new Object(); | 11777 static Object NOT_A_CONSTANT = new Object(); |
12042 | 11778 |
12043 Object visitAdjacentStrings(AdjacentStrings node) { | 11779 Object visitAdjacentStrings(AdjacentStrings node) { |
12044 JavaStringBuilder builder = new JavaStringBuilder(); | 11780 JavaStringBuilder builder = new JavaStringBuilder(); |
12045 for (StringLiteral string in node.strings) { | 11781 for (StringLiteral string in node.strings) { |
12046 Object value = string.accept(this); | 11782 Object value = string.accept(this); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12241 if (key is! String || identical(value, NOT_A_CONSTANT)) { | 11977 if (key is! String || identical(value, NOT_A_CONSTANT)) { |
12242 return NOT_A_CONSTANT; | 11978 return NOT_A_CONSTANT; |
12243 } | 11979 } |
12244 map[(key as String)] = value; | 11980 map[(key as String)] = value; |
12245 } | 11981 } |
12246 return map; | 11982 return map; |
12247 } | 11983 } |
12248 | 11984 |
12249 Object visitMethodInvocation(MethodInvocation node) => visitNode(node); | 11985 Object visitMethodInvocation(MethodInvocation node) => visitNode(node); |
12250 | 11986 |
12251 Object visitNode(ASTNode node) => NOT_A_CONSTANT; | 11987 Object visitNode(AstNode node) => NOT_A_CONSTANT; |
12252 | 11988 |
12253 Object visitNullLiteral(NullLiteral node) => null; | 11989 Object visitNullLiteral(NullLiteral node) => null; |
12254 | 11990 |
12255 Object visitParenthesizedExpression(ParenthesizedExpression node) => node.expr
ession.accept(this); | 11991 Object visitParenthesizedExpression(ParenthesizedExpression node) => node.expr
ession.accept(this); |
12256 | 11992 |
12257 Object visitPrefixedIdentifier(PrefixedIdentifier node) => getConstantValue(nu
ll); | 11993 Object visitPrefixedIdentifier(PrefixedIdentifier node) => getConstantValue(nu
ll); |
12258 | 11994 |
12259 Object visitPrefixExpression(PrefixExpression node) { | 11995 Object visitPrefixExpression(PrefixExpression node) { |
12260 Object operand = node.operand.accept(this); | 11996 Object operand = node.operand.accept(this); |
12261 if (identical(operand, NOT_A_CONSTANT)) { | 11997 if (identical(operand, NOT_A_CONSTANT)) { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12329 FieldElement field = element; | 12065 FieldElement field = element; |
12330 if (field.isStatic && field.isConst) { | 12066 if (field.isStatic && field.isConst) { |
12331 } | 12067 } |
12332 } | 12068 } |
12333 return NOT_A_CONSTANT; | 12069 return NOT_A_CONSTANT; |
12334 } | 12070 } |
12335 } | 12071 } |
12336 | 12072 |
12337 /** | 12073 /** |
12338 * Instances of the class `ElementLocator` locate the [Element] | 12074 * Instances of the class `ElementLocator` locate the [Element] |
12339 * associated with a given [ASTNode]. | 12075 * associated with a given [AstNode]. |
12340 * | |
12341 * @coverage dart.engine.ast | |
12342 */ | 12076 */ |
12343 class ElementLocator { | 12077 class ElementLocator { |
12344 /** | 12078 /** |
12345 * Locate the [Element] associated with the given [ASTNode]. | 12079 * Locate the [Element] associated with the given [AstNode]. |
12346 * | 12080 * |
12347 * @param node the node (not `null`) | 12081 * @param node the node (not `null`) |
12348 * @return the associated element, or `null` if none is found | 12082 * @return the associated element, or `null` if none is found |
12349 */ | 12083 */ |
12350 static Element locate(ASTNode node) { | 12084 static Element locate(AstNode node) { |
12351 ElementLocator_ElementMapper mapper = new ElementLocator_ElementMapper(); | 12085 ElementLocator_ElementMapper mapper = new ElementLocator_ElementMapper(); |
12352 return node.accept(mapper); | 12086 return node.accept(mapper); |
12353 } | 12087 } |
12354 | 12088 |
12355 /** | 12089 /** |
12356 * Locate the [Element] associated with the given [ASTNode] and offset. | 12090 * Locate the [Element] associated with the given [AstNode] and offset. |
12357 * | 12091 * |
12358 * @param node the node (not `null`) | 12092 * @param node the node (not `null`) |
12359 * @param offset the offset relative to source | 12093 * @param offset the offset relative to source |
12360 * @return the associated element, or `null` if none is found | 12094 * @return the associated element, or `null` if none is found |
12361 */ | 12095 */ |
12362 static Element locate2(ASTNode node, int offset) { | 12096 static Element locate2(AstNode node, int offset) { |
12363 // try to get Element from node | 12097 // try to get Element from node |
12364 { | 12098 { |
12365 Element nodeElement = locate(node); | 12099 Element nodeElement = locate(node); |
12366 if (nodeElement != null) { | 12100 if (nodeElement != null) { |
12367 return nodeElement; | 12101 return nodeElement; |
12368 } | 12102 } |
12369 } | 12103 } |
12370 // try to get Angular specific Element | 12104 // try to get Angular specific Element |
12371 { | 12105 { |
12372 Element element = null; | 12106 Element element = null; |
12373 if (element != null) { | 12107 if (element != null) { |
12374 return element; | 12108 return element; |
12375 } | 12109 } |
12376 } | 12110 } |
12377 // no Element | 12111 // no Element |
12378 return null; | 12112 return null; |
12379 } | 12113 } |
12380 } | 12114 } |
12381 | 12115 |
12382 /** | 12116 /** |
12383 * Visitor that maps nodes to elements. | 12117 * Visitor that maps nodes to elements. |
12384 */ | 12118 */ |
12385 class ElementLocator_ElementMapper extends GeneralizingASTVisitor<Element> { | 12119 class ElementLocator_ElementMapper extends GeneralizingAstVisitor<Element> { |
12386 Element visitAssignmentExpression(AssignmentExpression node) => node.bestEleme
nt; | 12120 Element visitAssignmentExpression(AssignmentExpression node) => node.bestEleme
nt; |
12387 | 12121 |
12388 Element visitBinaryExpression(BinaryExpression node) => node.bestElement; | 12122 Element visitBinaryExpression(BinaryExpression node) => node.bestElement; |
12389 | 12123 |
12390 Element visitClassDeclaration(ClassDeclaration node) => node.element; | 12124 Element visitClassDeclaration(ClassDeclaration node) => node.element; |
12391 | 12125 |
12392 Element visitCompilationUnit(CompilationUnit node) => node.element; | 12126 Element visitCompilationUnit(CompilationUnit node) => node.element; |
12393 | 12127 |
12394 Element visitConstructorDeclaration(ConstructorDeclaration node) => node.eleme
nt; | 12128 Element visitConstructorDeclaration(ConstructorDeclaration node) => node.eleme
nt; |
12395 | 12129 |
12396 Element visitFunctionDeclaration(FunctionDeclaration node) => node.element; | 12130 Element visitFunctionDeclaration(FunctionDeclaration node) => node.element; |
12397 | 12131 |
12398 Element visitIdentifier(Identifier node) { | 12132 Element visitIdentifier(Identifier node) { |
12399 ASTNode parent = node.parent; | 12133 AstNode parent = node.parent; |
12400 // Type name in InstanceCreationExpression | 12134 // Type name in InstanceCreationExpression |
12401 { | 12135 { |
12402 ASTNode typeNameCandidate = parent; | 12136 AstNode typeNameCandidate = parent; |
12403 // new prefix.node[.constructorName]() | 12137 // new prefix.node[.constructorName]() |
12404 if (typeNameCandidate is PrefixedIdentifier) { | 12138 if (typeNameCandidate is PrefixedIdentifier) { |
12405 PrefixedIdentifier prefixedIdentifier = typeNameCandidate as PrefixedIde
ntifier; | 12139 PrefixedIdentifier prefixedIdentifier = typeNameCandidate as PrefixedIde
ntifier; |
12406 if (identical(prefixedIdentifier.identifier, node)) { | 12140 if (identical(prefixedIdentifier.identifier, node)) { |
12407 typeNameCandidate = prefixedIdentifier.parent; | 12141 typeNameCandidate = prefixedIdentifier.parent; |
12408 } | 12142 } |
12409 } | 12143 } |
12410 // new typeName[.constructorName]() | 12144 // new typeName[.constructorName]() |
12411 if (typeNameCandidate is TypeName) { | 12145 if (typeNameCandidate is TypeName) { |
12412 TypeName typeName = typeNameCandidate as TypeName; | 12146 TypeName typeName = typeNameCandidate as TypeName; |
(...skipping 12 matching lines...) Expand all Loading... |
12425 if (name != null) { | 12159 if (name != null) { |
12426 return name.bestElement; | 12160 return name.bestElement; |
12427 } | 12161 } |
12428 Element element = node.bestElement; | 12162 Element element = node.bestElement; |
12429 if (element is ClassElement) { | 12163 if (element is ClassElement) { |
12430 return element.unnamedConstructor; | 12164 return element.unnamedConstructor; |
12431 } | 12165 } |
12432 } | 12166 } |
12433 } | 12167 } |
12434 if (parent is LibraryIdentifier) { | 12168 if (parent is LibraryIdentifier) { |
12435 ASTNode grandParent = parent.parent; | 12169 AstNode grandParent = parent.parent; |
12436 if (grandParent is PartOfDirective) { | 12170 if (grandParent is PartOfDirective) { |
12437 Element element = grandParent.element; | 12171 Element element = grandParent.element; |
12438 if (element is LibraryElement) { | 12172 if (element is LibraryElement) { |
12439 return element.definingCompilationUnit; | 12173 return element.definingCompilationUnit; |
12440 } | 12174 } |
12441 } | 12175 } |
12442 } | 12176 } |
12443 Element element = node.bestElement; | 12177 Element element = node.bestElement; |
12444 if (element == null) { | 12178 if (element == null) { |
12445 element = node.staticElement; | 12179 element = node.staticElement; |
(...skipping 13 matching lines...) Expand all Loading... |
12459 | 12193 |
12460 Element visitMethodInvocation(MethodInvocation node) => node.methodName.bestEl
ement; | 12194 Element visitMethodInvocation(MethodInvocation node) => node.methodName.bestEl
ement; |
12461 | 12195 |
12462 Element visitPostfixExpression(PostfixExpression node) => node.bestElement; | 12196 Element visitPostfixExpression(PostfixExpression node) => node.bestElement; |
12463 | 12197 |
12464 Element visitPrefixedIdentifier(PrefixedIdentifier node) => node.bestElement; | 12198 Element visitPrefixedIdentifier(PrefixedIdentifier node) => node.bestElement; |
12465 | 12199 |
12466 Element visitPrefixExpression(PrefixExpression node) => node.bestElement; | 12200 Element visitPrefixExpression(PrefixExpression node) => node.bestElement; |
12467 | 12201 |
12468 Element visitStringLiteral(StringLiteral node) { | 12202 Element visitStringLiteral(StringLiteral node) { |
12469 ASTNode parent = node.parent; | 12203 AstNode parent = node.parent; |
12470 if (parent is UriBasedDirective) { | 12204 if (parent is UriBasedDirective) { |
12471 return parent.uriElement; | 12205 return parent.uriElement; |
12472 } | 12206 } |
12473 return null; | 12207 return null; |
12474 } | 12208 } |
12475 | 12209 |
12476 Element visitVariableDeclaration(VariableDeclaration node) => node.element; | 12210 Element visitVariableDeclaration(VariableDeclaration node) => node.element; |
12477 } | 12211 } |
12478 | 12212 |
12479 /** | 12213 /** |
12480 * Instances of the class `GeneralizingASTVisitor` implement an AST visitor that
will | 12214 * Instances of the class `GeneralizingAstVisitor` implement an AST visitor that
will |
12481 * recursively visit all of the nodes in an AST structure (like instances of the
class | 12215 * recursively visit all of the nodes in an AST structure (like instances of the
class |
12482 * [RecursiveASTVisitor]). In addition, when a node of a specific type is visite
d not only | 12216 * [RecursiveAstVisitor]). In addition, when a node of a specific type is visite
d not only |
12483 * will the visit method for that specific type of node be invoked, but addition
al methods for the | 12217 * will the visit method for that specific type of node be invoked, but addition
al methods for the |
12484 * superclasses of that node will also be invoked. For example, using an instanc
e of this class to | 12218 * superclasses of that node will also be invoked. For example, using an instanc
e of this class to |
12485 * visit a [Block] will cause the method [visitBlock] to be invoked but will | 12219 * visit a [Block] will cause the method [visitBlock] to be invoked but will |
12486 * also cause the methods [visitStatement] and [visitNode] to be | 12220 * also cause the methods [visitStatement] and [visitNode] to be |
12487 * subsequently invoked. This allows visitors to be written that visit all state
ments without | 12221 * subsequently invoked. This allows visitors to be written that visit all state
ments without |
12488 * needing to override the visit method for each of the specific subclasses of [
Statement]. | 12222 * needing to override the visit method for each of the specific subclasses of [
Statement]. |
12489 * | 12223 * |
12490 * Subclasses that override a visit method must either invoke the overridden vis
it method or | 12224 * Subclasses that override a visit method must either invoke the overridden vis
it method or |
12491 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods | 12225 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods |
12492 * for superclasses of the node to not be invoked and will cause the children of
the visited node to | 12226 * for superclasses of the node to not be invoked and will cause the children of
the visited node to |
12493 * not be visited. | 12227 * not be visited. |
12494 * | |
12495 * @coverage dart.engine.ast | |
12496 */ | 12228 */ |
12497 class GeneralizingASTVisitor<R> implements ASTVisitor<R> { | 12229 class GeneralizingAstVisitor<R> implements AstVisitor<R> { |
12498 R visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node); | 12230 R visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node); |
12499 | 12231 |
12500 R visitAnnotatedNode(AnnotatedNode node) => visitNode(node); | 12232 R visitAnnotatedNode(AnnotatedNode node) => visitNode(node); |
12501 | 12233 |
12502 R visitAnnotation(Annotation node) => visitNode(node); | 12234 R visitAnnotation(Annotation node) => visitNode(node); |
12503 | 12235 |
12504 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => visitExpression(
node); | 12236 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => visitExpression(
node); |
12505 | 12237 |
12506 R visitArgumentList(ArgumentList node) => visitNode(node); | 12238 R visitArgumentList(ArgumentList node) => visitNode(node); |
12507 | 12239 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12650 R visitMethodInvocation(MethodInvocation node) => visitExpression(node); | 12382 R visitMethodInvocation(MethodInvocation node) => visitExpression(node); |
12651 | 12383 |
12652 R visitNamedExpression(NamedExpression node) => visitExpression(node); | 12384 R visitNamedExpression(NamedExpression node) => visitExpression(node); |
12653 | 12385 |
12654 R visitNamespaceDirective(NamespaceDirective node) => visitUriBasedDirective(n
ode); | 12386 R visitNamespaceDirective(NamespaceDirective node) => visitUriBasedDirective(n
ode); |
12655 | 12387 |
12656 R visitNativeClause(NativeClause node) => visitNode(node); | 12388 R visitNativeClause(NativeClause node) => visitNode(node); |
12657 | 12389 |
12658 R visitNativeFunctionBody(NativeFunctionBody node) => visitFunctionBody(node); | 12390 R visitNativeFunctionBody(NativeFunctionBody node) => visitFunctionBody(node); |
12659 | 12391 |
12660 R visitNode(ASTNode node) { | 12392 R visitNode(AstNode node) { |
12661 node.visitChildren(this); | 12393 node.visitChildren(this); |
12662 return null; | 12394 return null; |
12663 } | 12395 } |
12664 | 12396 |
12665 R visitNormalFormalParameter(NormalFormalParameter node) => visitFormalParamet
er(node); | 12397 R visitNormalFormalParameter(NormalFormalParameter node) => visitFormalParamet
er(node); |
12666 | 12398 |
12667 R visitNullLiteral(NullLiteral node) => visitLiteral(node); | 12399 R visitNullLiteral(NullLiteral node) => visitLiteral(node); |
12668 | 12400 |
12669 R visitParenthesizedExpression(ParenthesizedExpression node) => visitExpressio
n(node); | 12401 R visitParenthesizedExpression(ParenthesizedExpression node) => visitExpressio
n(node); |
12670 | 12402 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12743 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); | 12475 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); |
12744 | 12476 |
12745 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tStatement(node); | 12477 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tStatement(node); |
12746 | 12478 |
12747 R visitWhileStatement(WhileStatement node) => visitStatement(node); | 12479 R visitWhileStatement(WhileStatement node) => visitStatement(node); |
12748 | 12480 |
12749 R visitWithClause(WithClause node) => visitNode(node); | 12481 R visitWithClause(WithClause node) => visitNode(node); |
12750 } | 12482 } |
12751 | 12483 |
12752 /** | 12484 /** |
12753 * Instances of the class `NodeLocator` locate the [ASTNode] associated with a | 12485 * Instances of the class `NodeLocator` locate the [AstNode] associated with a |
12754 * source range, given the AST structure built from the source. More specificall
y, they will return | 12486 * source range, given the AST structure built from the source. More specificall
y, they will return |
12755 * the [ASTNode] with the shortest length whose source range completely encompas
ses | 12487 * the [AstNode] with the shortest length whose source range completely encompas
ses |
12756 * the specified range. | 12488 * the specified range. |
12757 * | |
12758 * @coverage dart.engine.ast | |
12759 */ | 12489 */ |
12760 class NodeLocator extends UnifyingASTVisitor<Object> { | 12490 class NodeLocator extends UnifyingAstVisitor<Object> { |
12761 /** | 12491 /** |
12762 * The start offset of the range used to identify the node. | 12492 * The start offset of the range used to identify the node. |
12763 */ | 12493 */ |
12764 int _startOffset = 0; | 12494 int _startOffset = 0; |
12765 | 12495 |
12766 /** | 12496 /** |
12767 * The end offset of the range used to identify the node. | 12497 * The end offset of the range used to identify the node. |
12768 */ | 12498 */ |
12769 int _endOffset = 0; | 12499 int _endOffset = 0; |
12770 | 12500 |
12771 /** | 12501 /** |
12772 * The element that was found that corresponds to the given source range, or `
null` if there | 12502 * The element that was found that corresponds to the given source range, or `
null` if there |
12773 * is no such element. | 12503 * is no such element. |
12774 */ | 12504 */ |
12775 ASTNode _foundNode; | 12505 AstNode _foundNode; |
12776 | 12506 |
12777 /** | 12507 /** |
12778 * Initialize a newly created locator to locate one or more [ASTNode] by locat
ing | 12508 * Initialize a newly created locator to locate one or more [AstNode] by locat
ing |
12779 * the node within an AST structure that corresponds to the given offset in th
e source. | 12509 * the node within an AST structure that corresponds to the given offset in th
e source. |
12780 * | 12510 * |
12781 * @param offset the offset used to identify the node | 12511 * @param offset the offset used to identify the node |
12782 */ | 12512 */ |
12783 NodeLocator.con1(int offset) : this.con2(offset, offset); | 12513 NodeLocator.con1(int offset) : this.con2(offset, offset); |
12784 | 12514 |
12785 /** | 12515 /** |
12786 * Initialize a newly created locator to locate one or more [ASTNode] by locat
ing | 12516 * Initialize a newly created locator to locate one or more [AstNode] by locat
ing |
12787 * the node within an AST structure that corresponds to the given range of cha
racters in the | 12517 * the node within an AST structure that corresponds to the given range of cha
racters in the |
12788 * source. | 12518 * source. |
12789 * | 12519 * |
12790 * @param start the start offset of the range used to identify the node | 12520 * @param start the start offset of the range used to identify the node |
12791 * @param end the end offset of the range used to identify the node | 12521 * @param end the end offset of the range used to identify the node |
12792 */ | 12522 */ |
12793 NodeLocator.con2(int start, int end) { | 12523 NodeLocator.con2(int start, int end) { |
12794 this._startOffset = start; | 12524 this._startOffset = start; |
12795 this._endOffset = end; | 12525 this._endOffset = end; |
12796 } | 12526 } |
12797 | 12527 |
12798 /** | 12528 /** |
12799 * Return the node that was found that corresponds to the given source range,
or `null` if | 12529 * Return the node that was found that corresponds to the given source range,
or `null` if |
12800 * there is no such node. | 12530 * there is no such node. |
12801 * | 12531 * |
12802 * @return the node that was found | 12532 * @return the node that was found |
12803 */ | 12533 */ |
12804 ASTNode get foundNode => _foundNode; | 12534 AstNode get foundNode => _foundNode; |
12805 | 12535 |
12806 /** | 12536 /** |
12807 * Search within the given AST node for an identifier representing a [DartElem
ent] in the specified source range. Return the element that was found, or `null`
if | 12537 * Search within the given AST node for an identifier representing a [DartElem
ent] in the specified source range. Return the element that was found, or `null`
if |
12808 * no element was found. | 12538 * no element was found. |
12809 * | 12539 * |
12810 * @param node the AST node within which to search | 12540 * @param node the AST node within which to search |
12811 * @return the element that was found | 12541 * @return the element that was found |
12812 */ | 12542 */ |
12813 ASTNode searchWithin(ASTNode node) { | 12543 AstNode searchWithin(AstNode node) { |
12814 if (node == null) { | 12544 if (node == null) { |
12815 return null; | 12545 return null; |
12816 } | 12546 } |
12817 try { | 12547 try { |
12818 node.accept(this); | 12548 node.accept(this); |
12819 } on NodeLocator_NodeFoundException catch (exception) { | 12549 } on NodeLocator_NodeFoundException catch (exception) { |
12820 } on JavaException catch (exception) { | 12550 } on JavaException catch (exception) { |
12821 AnalysisEngine.instance.logger.logInformation3("Unable to locate element a
t offset (${_startOffset} - ${_endOffset})", exception); | 12551 AnalysisEngine.instance.logger.logInformation3("Unable to locate element a
t offset (${_startOffset} - ${_endOffset})", exception); |
12822 return null; | 12552 return null; |
12823 } | 12553 } |
12824 return _foundNode; | 12554 return _foundNode; |
12825 } | 12555 } |
12826 | 12556 |
12827 Object visitNode(ASTNode node) { | 12557 Object visitNode(AstNode node) { |
12828 int start = node.offset; | 12558 int start = node.offset; |
12829 int end = start + node.length; | 12559 int end = start + node.length; |
12830 if (end < _startOffset) { | 12560 if (end < _startOffset) { |
12831 return null; | 12561 return null; |
12832 } | 12562 } |
12833 if (start > _endOffset) { | 12563 if (start > _endOffset) { |
12834 return null; | 12564 return null; |
12835 } | 12565 } |
12836 try { | 12566 try { |
12837 node.visitChildren(this); | 12567 node.visitChildren(this); |
(...skipping 13 matching lines...) Expand all Loading... |
12851 | 12581 |
12852 /** | 12582 /** |
12853 * Instances of the class `NodeFoundException` are used to cancel visiting after
a node has | 12583 * Instances of the class `NodeFoundException` are used to cancel visiting after
a node has |
12854 * been found. | 12584 * been found. |
12855 */ | 12585 */ |
12856 class NodeLocator_NodeFoundException extends RuntimeException { | 12586 class NodeLocator_NodeFoundException extends RuntimeException { |
12857 static int _serialVersionUID = 1; | 12587 static int _serialVersionUID = 1; |
12858 } | 12588 } |
12859 | 12589 |
12860 /** | 12590 /** |
12861 * Instances of the class `RecursiveASTVisitor` implement an AST visitor that wi
ll recursively | 12591 * Instances of the class `RecursiveAstVisitor` implement an AST visitor that wi
ll recursively |
12862 * visit all of the nodes in an AST structure. For example, using an instance of
this class to visit | 12592 * visit all of the nodes in an AST structure. For example, using an instance of
this class to visit |
12863 * a [Block] will also cause all of the statements in the block to be visited. | 12593 * a [Block] will also cause all of the statements in the block to be visited. |
12864 * | 12594 * |
12865 * Subclasses that override a visit method must either invoke the overridden vis
it method or must | 12595 * Subclasses that override a visit method must either invoke the overridden vis
it method or must |
12866 * explicitly ask the visited node to visit its children. Failure to do so will
cause the children | 12596 * explicitly ask the visited node to visit its children. Failure to do so will
cause the children |
12867 * of the visited node to not be visited. | 12597 * of the visited node to not be visited. |
12868 * | |
12869 * @coverage dart.engine.ast | |
12870 */ | 12598 */ |
12871 class RecursiveASTVisitor<R> implements ASTVisitor<R> { | 12599 class RecursiveAstVisitor<R> implements AstVisitor<R> { |
12872 R visitAdjacentStrings(AdjacentStrings node) { | 12600 R visitAdjacentStrings(AdjacentStrings node) { |
12873 node.visitChildren(this); | 12601 node.visitChildren(this); |
12874 return null; | 12602 return null; |
12875 } | 12603 } |
12876 | 12604 |
12877 R visitAnnotation(Annotation node) { | 12605 R visitAnnotation(Annotation node) { |
12878 node.visitChildren(this); | 12606 node.visitChildren(this); |
12879 return null; | 12607 return null; |
12880 } | 12608 } |
12881 | 12609 |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13379 return null; | 13107 return null; |
13380 } | 13108 } |
13381 | 13109 |
13382 R visitWithClause(WithClause node) { | 13110 R visitWithClause(WithClause node) { |
13383 node.visitChildren(this); | 13111 node.visitChildren(this); |
13384 return null; | 13112 return null; |
13385 } | 13113 } |
13386 } | 13114 } |
13387 | 13115 |
13388 /** | 13116 /** |
13389 * Instances of the class `SimpleASTVisitor` implement an AST visitor that will
do nothing | 13117 * Instances of the class `SimpleAstVisitor` implement an AST visitor that will
do nothing |
13390 * when visiting an AST node. It is intended to be a superclass for classes that
use the visitor | 13118 * when visiting an AST node. It is intended to be a superclass for classes that
use the visitor |
13391 * pattern primarily as a dispatch mechanism (and hence don't need to recursivel
y visit a whole | 13119 * pattern primarily as a dispatch mechanism (and hence don't need to recursivel
y visit a whole |
13392 * structure) and that only need to visit a small number of node types. | 13120 * structure) and that only need to visit a small number of node types. |
13393 * | |
13394 * @coverage dart.engine.ast | |
13395 */ | 13121 */ |
13396 class SimpleASTVisitor<R> implements ASTVisitor<R> { | 13122 class SimpleAstVisitor<R> implements AstVisitor<R> { |
13397 R visitAdjacentStrings(AdjacentStrings node) => null; | 13123 R visitAdjacentStrings(AdjacentStrings node) => null; |
13398 | 13124 |
13399 R visitAnnotation(Annotation node) => null; | 13125 R visitAnnotation(Annotation node) => null; |
13400 | 13126 |
13401 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => null; | 13127 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => null; |
13402 | 13128 |
13403 R visitArgumentList(ArgumentList node) => null; | 13129 R visitArgumentList(ArgumentList node) => null; |
13404 | 13130 |
13405 R visitAsExpression(AsExpression node) => null; | 13131 R visitAsExpression(AsExpression node) => null; |
13406 | 13132 |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13597 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => null
; | 13323 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => null
; |
13598 | 13324 |
13599 R visitWhileStatement(WhileStatement node) => null; | 13325 R visitWhileStatement(WhileStatement node) => null; |
13600 | 13326 |
13601 R visitWithClause(WithClause node) => null; | 13327 R visitWithClause(WithClause node) => null; |
13602 } | 13328 } |
13603 | 13329 |
13604 /** | 13330 /** |
13605 * Instances of the class `ToSourceVisitor` write a source representation of a v
isited AST | 13331 * Instances of the class `ToSourceVisitor` write a source representation of a v
isited AST |
13606 * node (and all of it's children) to a writer. | 13332 * node (and all of it's children) to a writer. |
13607 * | |
13608 * @coverage dart.engine.ast | |
13609 */ | 13333 */ |
13610 class ToSourceVisitor implements ASTVisitor<Object> { | 13334 class ToSourceVisitor implements AstVisitor<Object> { |
13611 /** | 13335 /** |
13612 * The writer to which the source is to be written. | 13336 * The writer to which the source is to be written. |
13613 */ | 13337 */ |
13614 PrintWriter _writer; | 13338 PrintWriter _writer; |
13615 | 13339 |
13616 /** | 13340 /** |
13617 * Initialize a newly created visitor to write source code representing the vi
sited nodes to the | 13341 * Initialize a newly created visitor to write source code representing the vi
sited nodes to the |
13618 * given writer. | 13342 * given writer. |
13619 * | 13343 * |
13620 * @param writer the writer to which the source is to be written | 13344 * @param writer the writer to which the source is to be written |
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14429 _writer.print("with "); | 14153 _writer.print("with "); |
14430 visitList2(node.mixinTypes, ", "); | 14154 visitList2(node.mixinTypes, ", "); |
14431 return null; | 14155 return null; |
14432 } | 14156 } |
14433 | 14157 |
14434 /** | 14158 /** |
14435 * Safely visit the given node. | 14159 * Safely visit the given node. |
14436 * | 14160 * |
14437 * @param node the node to be visited | 14161 * @param node the node to be visited |
14438 */ | 14162 */ |
14439 void visit(ASTNode node) { | 14163 void visit(AstNode node) { |
14440 if (node != null) { | 14164 if (node != null) { |
14441 node.accept(this); | 14165 node.accept(this); |
14442 } | 14166 } |
14443 } | 14167 } |
14444 | 14168 |
14445 /** | 14169 /** |
14446 * Safely visit the given node, printing the suffix after the node if it is no
n-`null`. | 14170 * Safely visit the given node, printing the suffix after the node if it is no
n-`null`. |
14447 * | 14171 * |
14448 * @param suffix the suffix to be printed if there is a node to visit | 14172 * @param suffix the suffix to be printed if there is a node to visit |
14449 * @param node the node to be visited | 14173 * @param node the node to be visited |
14450 */ | 14174 */ |
14451 void visit2(ASTNode node, String suffix) { | 14175 void visit2(AstNode node, String suffix) { |
14452 if (node != null) { | 14176 if (node != null) { |
14453 node.accept(this); | 14177 node.accept(this); |
14454 _writer.print(suffix); | 14178 _writer.print(suffix); |
14455 } | 14179 } |
14456 } | 14180 } |
14457 | 14181 |
14458 /** | 14182 /** |
14459 * Safely visit the given node, printing the prefix before the node if it is n
on-`null`. | 14183 * Safely visit the given node, printing the prefix before the node if it is n
on-`null`. |
14460 * | 14184 * |
14461 * @param prefix the prefix to be printed if there is a node to visit | 14185 * @param prefix the prefix to be printed if there is a node to visit |
14462 * @param node the node to be visited | 14186 * @param node the node to be visited |
14463 */ | 14187 */ |
14464 void visit3(String prefix, ASTNode node) { | 14188 void visit3(String prefix, AstNode node) { |
14465 if (node != null) { | 14189 if (node != null) { |
14466 _writer.print(prefix); | 14190 _writer.print(prefix); |
14467 node.accept(this); | 14191 node.accept(this); |
14468 } | 14192 } |
14469 } | 14193 } |
14470 | 14194 |
14471 /** | 14195 /** |
14472 * Visit the given function body, printing the prefix before if given body is
not empty. | 14196 * Visit the given function body, printing the prefix before if given body is
not empty. |
14473 * | 14197 * |
14474 * @param prefix the prefix to be printed if there is a node to visit | 14198 * @param prefix the prefix to be printed if there is a node to visit |
(...skipping 18 matching lines...) Expand all Loading... |
14493 _writer.print(suffix); | 14217 _writer.print(suffix); |
14494 } | 14218 } |
14495 } | 14219 } |
14496 | 14220 |
14497 /** | 14221 /** |
14498 * Print a list of nodes without any separation. | 14222 * Print a list of nodes without any separation. |
14499 * | 14223 * |
14500 * @param nodes the nodes to be printed | 14224 * @param nodes the nodes to be printed |
14501 * @param separator the separator to be printed between adjacent nodes | 14225 * @param separator the separator to be printed between adjacent nodes |
14502 */ | 14226 */ |
14503 void visitList(NodeList<ASTNode> nodes) { | 14227 void visitList(NodeList<AstNode> nodes) { |
14504 visitList2(nodes, ""); | 14228 visitList2(nodes, ""); |
14505 } | 14229 } |
14506 | 14230 |
14507 /** | 14231 /** |
14508 * Print a list of nodes, separated by the given separator. | 14232 * Print a list of nodes, separated by the given separator. |
14509 * | 14233 * |
14510 * @param nodes the nodes to be printed | 14234 * @param nodes the nodes to be printed |
14511 * @param separator the separator to be printed between adjacent nodes | 14235 * @param separator the separator to be printed between adjacent nodes |
14512 */ | 14236 */ |
14513 void visitList2(NodeList<ASTNode> nodes, String separator) { | 14237 void visitList2(NodeList<AstNode> nodes, String separator) { |
14514 if (nodes != null) { | 14238 if (nodes != null) { |
14515 int size = nodes.length; | 14239 int size = nodes.length; |
14516 for (int i = 0; i < size; i++) { | 14240 for (int i = 0; i < size; i++) { |
14517 if (i > 0) { | 14241 if (i > 0) { |
14518 _writer.print(separator); | 14242 _writer.print(separator); |
14519 } | 14243 } |
14520 nodes[i].accept(this); | 14244 nodes[i].accept(this); |
14521 } | 14245 } |
14522 } | 14246 } |
14523 } | 14247 } |
14524 | 14248 |
14525 /** | 14249 /** |
14526 * Print a list of nodes, separated by the given separator. | 14250 * Print a list of nodes, separated by the given separator. |
14527 * | 14251 * |
14528 * @param nodes the nodes to be printed | 14252 * @param nodes the nodes to be printed |
14529 * @param separator the separator to be printed between adjacent nodes | 14253 * @param separator the separator to be printed between adjacent nodes |
14530 * @param suffix the suffix to be printed if the list is not empty | 14254 * @param suffix the suffix to be printed if the list is not empty |
14531 */ | 14255 */ |
14532 void visitList3(NodeList<ASTNode> nodes, String separator, String suffix) { | 14256 void visitList3(NodeList<AstNode> nodes, String separator, String suffix) { |
14533 if (nodes != null) { | 14257 if (nodes != null) { |
14534 int size = nodes.length; | 14258 int size = nodes.length; |
14535 if (size > 0) { | 14259 if (size > 0) { |
14536 for (int i = 0; i < size; i++) { | 14260 for (int i = 0; i < size; i++) { |
14537 if (i > 0) { | 14261 if (i > 0) { |
14538 _writer.print(separator); | 14262 _writer.print(separator); |
14539 } | 14263 } |
14540 nodes[i].accept(this); | 14264 nodes[i].accept(this); |
14541 } | 14265 } |
14542 _writer.print(suffix); | 14266 _writer.print(suffix); |
14543 } | 14267 } |
14544 } | 14268 } |
14545 } | 14269 } |
14546 | 14270 |
14547 /** | 14271 /** |
14548 * Print a list of nodes, separated by the given separator. | 14272 * Print a list of nodes, separated by the given separator. |
14549 * | 14273 * |
14550 * @param prefix the prefix to be printed if the list is not empty | 14274 * @param prefix the prefix to be printed if the list is not empty |
14551 * @param nodes the nodes to be printed | 14275 * @param nodes the nodes to be printed |
14552 * @param separator the separator to be printed between adjacent nodes | 14276 * @param separator the separator to be printed between adjacent nodes |
14553 */ | 14277 */ |
14554 void visitList4(String prefix, NodeList<ASTNode> nodes, String separator) { | 14278 void visitList4(String prefix, NodeList<AstNode> nodes, String separator) { |
14555 if (nodes != null) { | 14279 if (nodes != null) { |
14556 int size = nodes.length; | 14280 int size = nodes.length; |
14557 if (size > 0) { | 14281 if (size > 0) { |
14558 _writer.print(prefix); | 14282 _writer.print(prefix); |
14559 for (int i = 0; i < size; i++) { | 14283 for (int i = 0; i < size; i++) { |
14560 if (i > 0) { | 14284 if (i > 0) { |
14561 _writer.print(separator); | 14285 _writer.print(separator); |
14562 } | 14286 } |
14563 nodes[i].accept(this); | 14287 nodes[i].accept(this); |
14564 } | 14288 } |
14565 } | 14289 } |
14566 } | 14290 } |
14567 } | 14291 } |
14568 } | 14292 } |
14569 | 14293 |
14570 /** | 14294 /** |
14571 * Instances of the class `UnifyingASTVisitor` implement an AST visitor that wil
l recursively | 14295 * Instances of the class `UnifyingAstVisitor` implement an AST visitor that wil
l recursively |
14572 * visit all of the nodes in an AST structure (like instances of the class | 14296 * visit all of the nodes in an AST structure (like instances of the class |
14573 * [RecursiveASTVisitor]). In addition, every node will also be visited by using
a single | 14297 * [RecursiveAstVisitor]). In addition, every node will also be visited by using
a single |
14574 * unified [visitNode] method. | 14298 * unified [visitNode] method. |
14575 * | 14299 * |
14576 * Subclasses that override a visit method must either invoke the overridden vis
it method or | 14300 * Subclasses that override a visit method must either invoke the overridden vis
it method or |
14577 * explicitly invoke the more general [visitNode] method. Failure to do so will | 14301 * explicitly invoke the more general [visitNode] method. Failure to do so will |
14578 * cause the children of the visited node to not be visited. | 14302 * cause the children of the visited node to not be visited. |
14579 * | |
14580 * @coverage dart.engine.ast | |
14581 */ | 14303 */ |
14582 class UnifyingASTVisitor<R> implements ASTVisitor<R> { | 14304 class UnifyingAstVisitor<R> implements AstVisitor<R> { |
14583 R visitAdjacentStrings(AdjacentStrings node) => visitNode(node); | 14305 R visitAdjacentStrings(AdjacentStrings node) => visitNode(node); |
14584 | 14306 |
14585 R visitAnnotation(Annotation node) => visitNode(node); | 14307 R visitAnnotation(Annotation node) => visitNode(node); |
14586 | 14308 |
14587 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => visitNode(node); | 14309 R visitArgumentDefinitionTest(ArgumentDefinitionTest node) => visitNode(node); |
14588 | 14310 |
14589 R visitArgumentList(ArgumentList node) => visitNode(node); | 14311 R visitArgumentList(ArgumentList node) => visitNode(node); |
14590 | 14312 |
14591 R visitAsExpression(AsExpression node) => visitNode(node); | 14313 R visitAsExpression(AsExpression node) => visitNode(node); |
14592 | 14314 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14707 R visitMethodDeclaration(MethodDeclaration node) => visitNode(node); | 14429 R visitMethodDeclaration(MethodDeclaration node) => visitNode(node); |
14708 | 14430 |
14709 R visitMethodInvocation(MethodInvocation node) => visitNode(node); | 14431 R visitMethodInvocation(MethodInvocation node) => visitNode(node); |
14710 | 14432 |
14711 R visitNamedExpression(NamedExpression node) => visitNode(node); | 14433 R visitNamedExpression(NamedExpression node) => visitNode(node); |
14712 | 14434 |
14713 R visitNativeClause(NativeClause node) => visitNode(node); | 14435 R visitNativeClause(NativeClause node) => visitNode(node); |
14714 | 14436 |
14715 R visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node); | 14437 R visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node); |
14716 | 14438 |
14717 R visitNode(ASTNode node) { | 14439 R visitNode(AstNode node) { |
14718 node.visitChildren(this); | 14440 node.visitChildren(this); |
14719 return null; | 14441 return null; |
14720 } | 14442 } |
14721 | 14443 |
14722 R visitNullLiteral(NullLiteral node) => visitNode(node); | 14444 R visitNullLiteral(NullLiteral node) => visitNode(node); |
14723 | 14445 |
14724 R visitParenthesizedExpression(ParenthesizedExpression node) => visitNode(node
); | 14446 R visitParenthesizedExpression(ParenthesizedExpression node) => visitNode(node
); |
14725 | 14447 |
14726 R visitPartDirective(PartDirective node) => visitNode(node); | 14448 R visitPartDirective(PartDirective node) => visitNode(node); |
14727 | 14449 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14786 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); | 14508 R visitVariableDeclarationList(VariableDeclarationList node) => visitNode(node
); |
14787 | 14509 |
14788 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tNode(node); | 14510 R visitVariableDeclarationStatement(VariableDeclarationStatement node) => visi
tNode(node); |
14789 | 14511 |
14790 R visitWhileStatement(WhileStatement node) => visitNode(node); | 14512 R visitWhileStatement(WhileStatement node) => visitNode(node); |
14791 | 14513 |
14792 R visitWithClause(WithClause node) => visitNode(node); | 14514 R visitWithClause(WithClause node) => visitNode(node); |
14793 } | 14515 } |
14794 | 14516 |
14795 /** | 14517 /** |
14796 * Instances of the class `ASTCloner` implement an object that will clone any AS
T structure | 14518 * Instances of the class `AstCloner` implement an object that will clone any AS
T structure |
14797 * that it visits. The cloner will only clone the structure, it will not preserv
e any resolution | 14519 * that it visits. The cloner will only clone the structure, it will not preserv
e any resolution |
14798 * results or properties associated with the nodes. | 14520 * results or properties associated with the nodes. |
14799 */ | 14521 */ |
14800 class ASTCloner implements ASTVisitor<ASTNode> { | 14522 class AstCloner implements AstVisitor<AstNode> { |
14801 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs(clone3(node.strings)); | 14523 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs(clone3(node.strings)); |
14802 | 14524 |
14803 Annotation visitAnnotation(Annotation node) => new Annotation(node.atSign, clo
ne2(node.name), node.period, clone2(node.constructorName), clone2(node.arguments
)); | 14525 Annotation visitAnnotation(Annotation node) => new Annotation(node.atSign, clo
ne2(node.name), node.period, clone2(node.constructorName), clone2(node.arguments
)); |
14804 | 14526 |
14805 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) => new ArgumentDefinitionTest(node.question, clone2(node.identifier)); | 14527 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) => new ArgumentDefinitionTest(node.question, clone2(node.identifier)); |
14806 | 14528 |
14807 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(node.lef
tParenthesis, clone3(node.arguments), node.rightParenthesis); | 14529 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(node.lef
tParenthesis, clone3(node.arguments), node.rightParenthesis); |
14808 | 14530 |
14809 AsExpression visitAsExpression(AsExpression node) => new AsExpression(clone2(n
ode.expression), node.asOperator, clone2(node.type)); | 14531 AsExpression visitAsExpression(AsExpression node) => new AsExpression(clone2(n
ode.expression), node.asOperator, clone2(node.type)); |
14810 | 14532 |
14811 ASTNode visitAssertStatement(AssertStatement node) => new AssertStatement(node
.keyword, node.leftParenthesis, clone2(node.condition), node.rightParenthesis, n
ode.semicolon); | 14533 AstNode visitAssertStatement(AssertStatement node) => new AssertStatement(node
.keyword, node.leftParenthesis, clone2(node.condition), node.rightParenthesis, n
ode.semicolon); |
14812 | 14534 |
14813 AssignmentExpression visitAssignmentExpression(AssignmentExpression node) => n
ew AssignmentExpression(clone2(node.leftHandSide), node.operator, clone2(node.ri
ghtHandSide)); | 14535 AssignmentExpression visitAssignmentExpression(AssignmentExpression node) => n
ew AssignmentExpression(clone2(node.leftHandSide), node.operator, clone2(node.ri
ghtHandSide)); |
14814 | 14536 |
14815 BinaryExpression visitBinaryExpression(BinaryExpression node) => new BinaryExp
ression(clone2(node.leftOperand), node.operator, clone2(node.rightOperand)); | 14537 BinaryExpression visitBinaryExpression(BinaryExpression node) => new BinaryExp
ression(clone2(node.leftOperand), node.operator, clone2(node.rightOperand)); |
14816 | 14538 |
14817 Block visitBlock(Block node) => new Block(node.leftBracket, clone3(node.statem
ents), node.rightBracket); | 14539 Block visitBlock(Block node) => new Block(node.leftBracket, clone3(node.statem
ents), node.rightBracket); |
14818 | 14540 |
14819 BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node) => new BlockF
unctionBody(clone2(node.block)); | 14541 BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node) => new BlockF
unctionBody(clone2(node.block)); |
14820 | 14542 |
14821 BooleanLiteral visitBooleanLiteral(BooleanLiteral node) => new BooleanLiteral(
node.literal, node.value); | 14543 BooleanLiteral visitBooleanLiteral(BooleanLiteral node) => new BooleanLiteral(
node.literal, node.value); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14949 MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral(node.constKeywor
d, clone2(node.typeArguments), node.leftBracket, clone3(node.entries), node.righ
tBracket); | 14671 MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral(node.constKeywor
d, clone2(node.typeArguments), node.leftBracket, clone3(node.entries), node.righ
tBracket); |
14950 | 14672 |
14951 MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node) => new MapLiteralEn
try(clone2(node.key), node.separator, clone2(node.value)); | 14673 MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node) => new MapLiteralEn
try(clone2(node.key), node.separator, clone2(node.value)); |
14952 | 14674 |
14953 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => new Method
Declaration(clone2(node.documentationComment), clone3(node.metadata), node.exter
nalKeyword, node.modifierKeyword, clone2(node.returnType), node.propertyKeyword,
node.operatorKeyword, clone2(node.name), clone2(node.parameters), clone2(node.b
ody)); | 14675 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => new Method
Declaration(clone2(node.documentationComment), clone3(node.metadata), node.exter
nalKeyword, node.modifierKeyword, clone2(node.returnType), node.propertyKeyword,
node.operatorKeyword, clone2(node.name), clone2(node.parameters), clone2(node.b
ody)); |
14954 | 14676 |
14955 MethodInvocation visitMethodInvocation(MethodInvocation node) => new MethodInv
ocation(clone2(node.target), node.period, clone2(node.methodName), clone2(node.a
rgumentList)); | 14677 MethodInvocation visitMethodInvocation(MethodInvocation node) => new MethodInv
ocation(clone2(node.target), node.period, clone2(node.methodName), clone2(node.a
rgumentList)); |
14956 | 14678 |
14957 NamedExpression visitNamedExpression(NamedExpression node) => new NamedExpress
ion(clone2(node.name), clone2(node.expression)); | 14679 NamedExpression visitNamedExpression(NamedExpression node) => new NamedExpress
ion(clone2(node.name), clone2(node.expression)); |
14958 | 14680 |
14959 ASTNode visitNativeClause(NativeClause node) => new NativeClause(node.keyword,
clone2(node.name)); | 14681 AstNode visitNativeClause(NativeClause node) => new NativeClause(node.keyword,
clone2(node.name)); |
14960 | 14682 |
14961 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new Nat
iveFunctionBody(node.nativeToken, clone2(node.stringLiteral), node.semicolon); | 14683 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new Nat
iveFunctionBody(node.nativeToken, clone2(node.stringLiteral), node.semicolon); |
14962 | 14684 |
14963 NullLiteral visitNullLiteral(NullLiteral node) => new NullLiteral(node.literal
); | 14685 NullLiteral visitNullLiteral(NullLiteral node) => new NullLiteral(node.literal
); |
14964 | 14686 |
14965 ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression n
ode) => new ParenthesizedExpression(node.leftParenthesis, clone2(node.expression
), node.rightParenthesis); | 14687 ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression n
ode) => new ParenthesizedExpression(node.leftParenthesis, clone2(node.expression
), node.rightParenthesis); |
14966 | 14688 |
14967 PartDirective visitPartDirective(PartDirective node) => new PartDirective(clon
e2(node.documentationComment), clone3(node.metadata), node.partToken, clone2(nod
e.uri), node.semicolon); | 14689 PartDirective visitPartDirective(PartDirective node) => new PartDirective(clon
e2(node.documentationComment), clone3(node.metadata), node.partToken, clone2(nod
e.uri), node.semicolon); |
14968 | 14690 |
14969 PartOfDirective visitPartOfDirective(PartOfDirective node) => new PartOfDirect
ive(clone2(node.documentationComment), clone3(node.metadata), node.partToken, no
de.ofToken, clone2(node.libraryName), node.semicolon); | 14691 PartOfDirective visitPartOfDirective(PartOfDirective node) => new PartOfDirect
ive(clone2(node.documentationComment), clone3(node.metadata), node.partToken, no
de.ofToken, clone2(node.libraryName), node.semicolon); |
(...skipping 27 matching lines...) Expand all Loading... |
14997 SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInv
ocation node) => new SuperConstructorInvocation(node.keyword, node.period, clone
2(node.constructorName), clone2(node.argumentList)); | 14719 SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInv
ocation node) => new SuperConstructorInvocation(node.keyword, node.period, clone
2(node.constructorName), clone2(node.argumentList)); |
14998 | 14720 |
14999 SuperExpression visitSuperExpression(SuperExpression node) => new SuperExpress
ion(node.keyword); | 14721 SuperExpression visitSuperExpression(SuperExpression node) => new SuperExpress
ion(node.keyword); |
15000 | 14722 |
15001 SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(clone3(node.labe
ls), node.keyword, clone2(node.expression), node.colon, clone3(node.statements))
; | 14723 SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(clone3(node.labe
ls), node.keyword, clone2(node.expression), node.colon, clone3(node.statements))
; |
15002 | 14724 |
15003 SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(clon
e3(node.labels), node.keyword, node.colon, clone3(node.statements)); | 14725 SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(clon
e3(node.labels), node.keyword, node.colon, clone3(node.statements)); |
15004 | 14726 |
15005 SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatem
ent(node.keyword, node.leftParenthesis, clone2(node.expression), node.rightParen
thesis, node.leftBracket, clone3(node.members), node.rightBracket); | 14727 SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatem
ent(node.keyword, node.leftParenthesis, clone2(node.expression), node.rightParen
thesis, node.leftBracket, clone3(node.members), node.rightBracket); |
15006 | 14728 |
15007 ASTNode visitSymbolLiteral(SymbolLiteral node) => new SymbolLiteral(node.pound
Sign, node.components); | 14729 AstNode visitSymbolLiteral(SymbolLiteral node) => new SymbolLiteral(node.pound
Sign, node.components); |
15008 | 14730 |
15009 ThisExpression visitThisExpression(ThisExpression node) => new ThisExpression(
node.keyword); | 14731 ThisExpression visitThisExpression(ThisExpression node) => new ThisExpression(
node.keyword); |
15010 | 14732 |
15011 ThrowExpression visitThrowExpression(ThrowExpression node) => new ThrowExpress
ion(node.keyword, clone2(node.expression)); | 14733 ThrowExpression visitThrowExpression(ThrowExpression node) => new ThrowExpress
ion(node.keyword, clone2(node.expression)); |
15012 | 14734 |
15013 TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableD
eclaration node) => new TopLevelVariableDeclaration(clone2(node.documentationCom
ment), clone3(node.metadata), clone2(node.variables), node.semicolon); | 14735 TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableD
eclaration node) => new TopLevelVariableDeclaration(clone2(node.documentationCom
ment), clone3(node.metadata), clone2(node.variables), node.semicolon); |
15014 | 14736 |
15015 TryStatement visitTryStatement(TryStatement node) => new TryStatement(node.try
Keyword, clone2(node.body), clone3(node.catchClauses), node.finallyKeyword, clon
e2(node.finallyBlock)); | 14737 TryStatement visitTryStatement(TryStatement node) => new TryStatement(node.try
Keyword, clone2(node.body), clone3(node.catchClauses), node.finallyKeyword, clon
e2(node.finallyBlock)); |
15016 | 14738 |
15017 TypeArgumentList visitTypeArgumentList(TypeArgumentList node) => new TypeArgum
entList(node.leftBracket, clone3(node.arguments), node.rightBracket); | 14739 TypeArgumentList visitTypeArgumentList(TypeArgumentList node) => new TypeArgum
entList(node.leftBracket, clone3(node.arguments), node.rightBracket); |
15018 | 14740 |
15019 TypeName visitTypeName(TypeName node) => new TypeName(clone2(node.name), clone
2(node.typeArguments)); | 14741 TypeName visitTypeName(TypeName node) => new TypeName(clone2(node.name), clone
2(node.typeArguments)); |
15020 | 14742 |
15021 TypeParameter visitTypeParameter(TypeParameter node) => new TypeParameter(clon
e2(node.documentationComment), clone3(node.metadata), clone2(node.name), node.ke
yword, clone2(node.bound)); | 14743 TypeParameter visitTypeParameter(TypeParameter node) => new TypeParameter(clon
e2(node.documentationComment), clone3(node.metadata), clone2(node.name), node.ke
yword, clone2(node.bound)); |
15022 | 14744 |
15023 TypeParameterList visitTypeParameterList(TypeParameterList node) => new TypePa
rameterList(node.leftBracket, clone3(node.typeParameters), node.rightBracket); | 14745 TypeParameterList visitTypeParameterList(TypeParameterList node) => new TypePa
rameterList(node.leftBracket, clone3(node.typeParameters), node.rightBracket); |
15024 | 14746 |
15025 VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new
VariableDeclaration(null, clone3(node.metadata), clone2(node.name), node.equals,
clone2(node.initializer)); | 14747 VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new
VariableDeclaration(null, clone3(node.metadata), clone2(node.name), node.equals,
clone2(node.initializer)); |
15026 | 14748 |
15027 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n
ode) => new VariableDeclarationList(null, clone3(node.metadata), node.keyword, c
lone2(node.type), clone3(node.variables)); | 14749 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n
ode) => new VariableDeclarationList(null, clone3(node.metadata), node.keyword, c
lone2(node.type), clone3(node.variables)); |
15028 | 14750 |
15029 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara
tionStatement node) => new VariableDeclarationStatement(clone2(node.variables),
node.semicolon); | 14751 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara
tionStatement node) => new VariableDeclarationStatement(clone2(node.variables),
node.semicolon); |
15030 | 14752 |
15031 WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement(
node.keyword, node.leftParenthesis, clone2(node.condition), node.rightParenthesi
s, clone2(node.body)); | 14753 WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement(
node.keyword, node.leftParenthesis, clone2(node.condition), node.rightParenthesi
s, clone2(node.body)); |
15032 | 14754 |
15033 WithClause visitWithClause(WithClause node) => new WithClause(node.withKeyword
, clone3(node.mixinTypes)); | 14755 WithClause visitWithClause(WithClause node) => new WithClause(node.withKeyword
, clone3(node.mixinTypes)); |
15034 | 14756 |
15035 ASTNode clone2(ASTNode node) { | 14757 AstNode clone2(AstNode node) { |
15036 if (node == null) { | 14758 if (node == null) { |
15037 return null; | 14759 return null; |
15038 } | 14760 } |
15039 return node.accept(this) as ASTNode; | 14761 return node.accept(this) as AstNode; |
15040 } | 14762 } |
15041 | 14763 |
15042 List clone3(NodeList nodes) { | 14764 List clone3(NodeList nodes) { |
15043 int count = nodes.length; | 14765 int count = nodes.length; |
15044 List clonedNodes = new List(); | 14766 List clonedNodes = new List(); |
15045 for (int i = 0; i < count; i++) { | 14767 for (int i = 0; i < count; i++) { |
15046 clonedNodes.add((nodes[i]).accept(this) as ASTNode); | 14768 clonedNodes.add((nodes[i]).accept(this) as AstNode); |
15047 } | 14769 } |
15048 return clonedNodes; | 14770 return clonedNodes; |
15049 } | 14771 } |
15050 } | 14772 } |
15051 | 14773 |
15052 /** | 14774 /** |
15053 * Instances of the class `ASTComparator` compare the structure of two ASTNodes
to see whether | 14775 * Instances of the class `AstComparator` compare the structure of two ASTNodes
to see whether |
15054 * they are equal. | 14776 * they are equal. |
15055 */ | 14777 */ |
15056 class ASTComparator implements ASTVisitor<bool> { | 14778 class AstComparator implements AstVisitor<bool> { |
15057 /** | 14779 /** |
15058 * Return `true` if the two AST nodes are equal. | 14780 * Return `true` if the two AST nodes are equal. |
15059 * | 14781 * |
15060 * @param first the first node being compared | 14782 * @param first the first node being compared |
15061 * @param second the second node being compared | 14783 * @param second the second node being compared |
15062 * @return `true` if the two AST nodes are equal | 14784 * @return `true` if the two AST nodes are equal |
15063 */ | 14785 */ |
15064 static bool equals4(CompilationUnit first, CompilationUnit second) { | 14786 static bool equals4(CompilationUnit first, CompilationUnit second) { |
15065 ASTComparator comparator = new ASTComparator(); | 14787 AstComparator comparator = new AstComparator(); |
15066 return comparator.isEqual(first, second); | 14788 return comparator.isEqual(first, second); |
15067 } | 14789 } |
15068 | 14790 |
15069 /** | 14791 /** |
15070 * The AST node with which the node being visited is to be compared. This is o
nly valid at the | 14792 * The AST node with which the node being visited is to be compared. This is o
nly valid at the |
15071 * beginning of each visit method (until [isEqual] is invoked). | 14793 * beginning of each visit method (until [isEqual] is invoked). |
15072 */ | 14794 */ |
15073 ASTNode _other; | 14795 AstNode _other; |
15074 | 14796 |
15075 bool visitAdjacentStrings(AdjacentStrings node) { | 14797 bool visitAdjacentStrings(AdjacentStrings node) { |
15076 AdjacentStrings other = this._other as AdjacentStrings; | 14798 AdjacentStrings other = this._other as AdjacentStrings; |
15077 return isEqual5(node.strings, other.strings); | 14799 return isEqual5(node.strings, other.strings); |
15078 } | 14800 } |
15079 | 14801 |
15080 bool visitAnnotation(Annotation node) { | 14802 bool visitAnnotation(Annotation node) { |
15081 Annotation other = this._other as Annotation; | 14803 Annotation other = this._other as Annotation; |
15082 return isEqual6(node.atSign, other.atSign) && isEqual(node.name, other.name)
&& isEqual6(node.period, other.period) && isEqual(node.constructorName, other.c
onstructorName) && isEqual(node.arguments, other.arguments); | 14804 return isEqual6(node.atSign, other.atSign) && isEqual(node.name, other.name)
&& isEqual6(node.period, other.period) && isEqual(node.constructorName, other.c
onstructorName) && isEqual(node.arguments, other.arguments); |
15083 } | 14805 } |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15587 return isEqual6(node.withKeyword, other.withKeyword) && isEqual5(node.mixinT
ypes, other.mixinTypes); | 15309 return isEqual6(node.withKeyword, other.withKeyword) && isEqual5(node.mixinT
ypes, other.mixinTypes); |
15588 } | 15310 } |
15589 | 15311 |
15590 /** | 15312 /** |
15591 * Return `true` if the given AST nodes have the same structure. | 15313 * Return `true` if the given AST nodes have the same structure. |
15592 * | 15314 * |
15593 * @param first the first node being compared | 15315 * @param first the first node being compared |
15594 * @param second the second node being compared | 15316 * @param second the second node being compared |
15595 * @return `true` if the given AST nodes have the same structure | 15317 * @return `true` if the given AST nodes have the same structure |
15596 */ | 15318 */ |
15597 bool isEqual(ASTNode first, ASTNode second) { | 15319 bool isEqual(AstNode first, AstNode second) { |
15598 if (first == null) { | 15320 if (first == null) { |
15599 return second == null; | 15321 return second == null; |
15600 } else if (second == null) { | 15322 } else if (second == null) { |
15601 return false; | 15323 return false; |
15602 } else if (first.runtimeType != second.runtimeType) { | 15324 } else if (first.runtimeType != second.runtimeType) { |
15603 return false; | 15325 return false; |
15604 } | 15326 } |
15605 _other = second; | 15327 _other = second; |
15606 return first.accept(this); | 15328 return first.accept(this); |
15607 } | 15329 } |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15666 for (int i = 0; i < length; i++) { | 15388 for (int i = 0; i < length; i++) { |
15667 if (isEqual6(first[i], second[i])) { | 15389 if (isEqual6(first[i], second[i])) { |
15668 return false; | 15390 return false; |
15669 } | 15391 } |
15670 } | 15392 } |
15671 return true; | 15393 return true; |
15672 } | 15394 } |
15673 } | 15395 } |
15674 | 15396 |
15675 /** | 15397 /** |
15676 * Instances of the class `IncrementalASTCloner` implement an object that will c
lone any AST | 15398 * Instances of the class `IncrementalAstCloner` implement an object that will c
lone any AST |
15677 * structure that it visits. The cloner will clone the structure, replacing the
specified ASTNode | 15399 * structure that it visits. The cloner will clone the structure, replacing the
specified ASTNode |
15678 * with a new ASTNode, mapping the old token stream to a new token stream, and p
reserving resolution | 15400 * with a new ASTNode, mapping the old token stream to a new token stream, and p
reserving resolution |
15679 * results. | 15401 * results. |
15680 */ | 15402 */ |
15681 class IncrementalASTCloner implements ASTVisitor<ASTNode> { | 15403 class IncrementalAstCloner implements AstVisitor<AstNode> { |
15682 /** | 15404 /** |
15683 * The node to be replaced during the cloning process. | 15405 * The node to be replaced during the cloning process. |
15684 */ | 15406 */ |
15685 ASTNode _oldNode; | 15407 AstNode _oldNode; |
15686 | 15408 |
15687 /** | 15409 /** |
15688 * The replacement node used during the cloning process. | 15410 * The replacement node used during the cloning process. |
15689 */ | 15411 */ |
15690 ASTNode _newNode; | 15412 AstNode _newNode; |
15691 | 15413 |
15692 /** | 15414 /** |
15693 * A mapping of old tokens to new tokens used during the cloning process. | 15415 * A mapping of old tokens to new tokens used during the cloning process. |
15694 */ | 15416 */ |
15695 TokenMap _tokenMap; | 15417 TokenMap _tokenMap; |
15696 | 15418 |
15697 /** | 15419 /** |
15698 * Construct a new instance that will replace `oldNode` with `newNode` in the
process | 15420 * Construct a new instance that will replace `oldNode` with `newNode` in the
process |
15699 * of cloning an existing AST structure. | 15421 * of cloning an existing AST structure. |
15700 * | 15422 * |
15701 * @param oldNode the node to be replaced | 15423 * @param oldNode the node to be replaced |
15702 * @param newNode the replacement node | 15424 * @param newNode the replacement node |
15703 * @param tokenMap a mapping of old tokens to new tokens (not `null`) | 15425 * @param tokenMap a mapping of old tokens to new tokens (not `null`) |
15704 */ | 15426 */ |
15705 IncrementalASTCloner(ASTNode oldNode, ASTNode newNode, TokenMap tokenMap) { | 15427 IncrementalAstCloner(AstNode oldNode, AstNode newNode, TokenMap tokenMap) { |
15706 this._oldNode = oldNode; | 15428 this._oldNode = oldNode; |
15707 this._newNode = newNode; | 15429 this._newNode = newNode; |
15708 this._tokenMap = tokenMap; | 15430 this._tokenMap = tokenMap; |
15709 } | 15431 } |
15710 | 15432 |
15711 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs(clone5(node.strings)); | 15433 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri
ngs(clone5(node.strings)); |
15712 | 15434 |
15713 Annotation visitAnnotation(Annotation node) { | 15435 Annotation visitAnnotation(Annotation node) { |
15714 Annotation copy = new Annotation(map(node.atSign), clone4(node.name), map(no
de.period), clone4(node.constructorName), clone4(node.arguments)); | 15436 Annotation copy = new Annotation(map(node.atSign), clone4(node.name), map(no
de.period), clone4(node.constructorName), clone4(node.arguments)); |
15715 copy.element = node.element; | 15437 copy.element = node.element; |
15716 return copy; | 15438 return copy; |
15717 } | 15439 } |
15718 | 15440 |
15719 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) { | 15441 ArgumentDefinitionTest visitArgumentDefinitionTest(ArgumentDefinitionTest node
) { |
15720 ArgumentDefinitionTest copy = new ArgumentDefinitionTest(map(node.question),
clone4(node.identifier)); | 15442 ArgumentDefinitionTest copy = new ArgumentDefinitionTest(map(node.question),
clone4(node.identifier)); |
15721 copy.propagatedType = node.propagatedType; | 15443 copy.propagatedType = node.propagatedType; |
15722 copy.staticType = node.staticType; | 15444 copy.staticType = node.staticType; |
15723 return copy; | 15445 return copy; |
15724 } | 15446 } |
15725 | 15447 |
15726 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(map(node
.leftParenthesis), clone5(node.arguments), map(node.rightParenthesis)); | 15448 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(map(node
.leftParenthesis), clone5(node.arguments), map(node.rightParenthesis)); |
15727 | 15449 |
15728 AsExpression visitAsExpression(AsExpression node) { | 15450 AsExpression visitAsExpression(AsExpression node) { |
15729 AsExpression copy = new AsExpression(clone4(node.expression), map(node.asOpe
rator), clone4(node.type)); | 15451 AsExpression copy = new AsExpression(clone4(node.expression), map(node.asOpe
rator), clone4(node.type)); |
15730 copy.propagatedType = node.propagatedType; | 15452 copy.propagatedType = node.propagatedType; |
15731 copy.staticType = node.staticType; | 15453 copy.staticType = node.staticType; |
15732 return copy; | 15454 return copy; |
15733 } | 15455 } |
15734 | 15456 |
15735 ASTNode visitAssertStatement(AssertStatement node) => new AssertStatement(map(
node.keyword), map(node.leftParenthesis), clone4(node.condition), map(node.right
Parenthesis), map(node.semicolon)); | 15457 AstNode visitAssertStatement(AssertStatement node) => new AssertStatement(map(
node.keyword), map(node.leftParenthesis), clone4(node.condition), map(node.right
Parenthesis), map(node.semicolon)); |
15736 | 15458 |
15737 AssignmentExpression visitAssignmentExpression(AssignmentExpression node) { | 15459 AssignmentExpression visitAssignmentExpression(AssignmentExpression node) { |
15738 AssignmentExpression copy = new AssignmentExpression(clone4(node.leftHandSid
e), map(node.operator), clone4(node.rightHandSide)); | 15460 AssignmentExpression copy = new AssignmentExpression(clone4(node.leftHandSid
e), map(node.operator), clone4(node.rightHandSide)); |
15739 copy.propagatedElement = node.propagatedElement; | 15461 copy.propagatedElement = node.propagatedElement; |
15740 copy.propagatedType = node.propagatedType; | 15462 copy.propagatedType = node.propagatedType; |
15741 copy.staticElement = node.staticElement; | 15463 copy.staticElement = node.staticElement; |
15742 copy.staticType = node.staticType; | 15464 copy.staticType = node.staticType; |
15743 return copy; | 15465 return copy; |
15744 } | 15466 } |
15745 | 15467 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15981 return copy; | 15703 return copy; |
15982 } | 15704 } |
15983 | 15705 |
15984 NamedExpression visitNamedExpression(NamedExpression node) { | 15706 NamedExpression visitNamedExpression(NamedExpression node) { |
15985 NamedExpression copy = new NamedExpression(clone4(node.name), clone4(node.ex
pression)); | 15707 NamedExpression copy = new NamedExpression(clone4(node.name), clone4(node.ex
pression)); |
15986 copy.propagatedType = node.propagatedType; | 15708 copy.propagatedType = node.propagatedType; |
15987 copy.staticType = node.staticType; | 15709 copy.staticType = node.staticType; |
15988 return copy; | 15710 return copy; |
15989 } | 15711 } |
15990 | 15712 |
15991 ASTNode visitNativeClause(NativeClause node) => new NativeClause(map(node.keyw
ord), clone4(node.name)); | 15713 AstNode visitNativeClause(NativeClause node) => new NativeClause(map(node.keyw
ord), clone4(node.name)); |
15992 | 15714 |
15993 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new Nat
iveFunctionBody(map(node.nativeToken), clone4(node.stringLiteral), map(node.semi
colon)); | 15715 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new Nat
iveFunctionBody(map(node.nativeToken), clone4(node.stringLiteral), map(node.semi
colon)); |
15994 | 15716 |
15995 NullLiteral visitNullLiteral(NullLiteral node) { | 15717 NullLiteral visitNullLiteral(NullLiteral node) { |
15996 NullLiteral copy = new NullLiteral(map(node.literal)); | 15718 NullLiteral copy = new NullLiteral(map(node.literal)); |
15997 copy.propagatedType = node.propagatedType; | 15719 copy.propagatedType = node.propagatedType; |
15998 copy.staticType = node.staticType; | 15720 copy.staticType = node.staticType; |
15999 return copy; | 15721 return copy; |
16000 } | 15722 } |
16001 | 15723 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16115 copy.staticType = node.staticType; | 15837 copy.staticType = node.staticType; |
16116 return copy; | 15838 return copy; |
16117 } | 15839 } |
16118 | 15840 |
16119 SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(clone5(node.labe
ls), map(node.keyword), clone4(node.expression), map(node.colon), clone5(node.st
atements)); | 15841 SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(clone5(node.labe
ls), map(node.keyword), clone4(node.expression), map(node.colon), clone5(node.st
atements)); |
16120 | 15842 |
16121 SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(clon
e5(node.labels), map(node.keyword), map(node.colon), clone5(node.statements)); | 15843 SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(clon
e5(node.labels), map(node.keyword), map(node.colon), clone5(node.statements)); |
16122 | 15844 |
16123 SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatem
ent(map(node.keyword), map(node.leftParenthesis), clone4(node.expression), map(n
ode.rightParenthesis), map(node.leftBracket), clone5(node.members), map(node.rig
htBracket)); | 15845 SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatem
ent(map(node.keyword), map(node.leftParenthesis), clone4(node.expression), map(n
ode.rightParenthesis), map(node.leftBracket), clone5(node.members), map(node.rig
htBracket)); |
16124 | 15846 |
16125 ASTNode visitSymbolLiteral(SymbolLiteral node) { | 15847 AstNode visitSymbolLiteral(SymbolLiteral node) { |
16126 SymbolLiteral copy = new SymbolLiteral(map(node.poundSign), map2(node.compon
ents)); | 15848 SymbolLiteral copy = new SymbolLiteral(map(node.poundSign), map2(node.compon
ents)); |
16127 copy.propagatedType = node.propagatedType; | 15849 copy.propagatedType = node.propagatedType; |
16128 copy.staticType = node.staticType; | 15850 copy.staticType = node.staticType; |
16129 return copy; | 15851 return copy; |
16130 } | 15852 } |
16131 | 15853 |
16132 ThisExpression visitThisExpression(ThisExpression node) { | 15854 ThisExpression visitThisExpression(ThisExpression node) { |
16133 ThisExpression copy = new ThisExpression(map(node.keyword)); | 15855 ThisExpression copy = new ThisExpression(map(node.keyword)); |
16134 copy.propagatedType = node.propagatedType; | 15856 copy.propagatedType = node.propagatedType; |
16135 copy.staticType = node.staticType; | 15857 copy.staticType = node.staticType; |
(...skipping 26 matching lines...) Expand all Loading... |
16162 VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new
VariableDeclaration(null, clone5(node.metadata), clone4(node.name), map(node.equ
als), clone4(node.initializer)); | 15884 VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new
VariableDeclaration(null, clone5(node.metadata), clone4(node.name), map(node.equ
als), clone4(node.initializer)); |
16163 | 15885 |
16164 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n
ode) => new VariableDeclarationList(null, clone5(node.metadata), map(node.keywor
d), clone4(node.type), clone5(node.variables)); | 15886 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n
ode) => new VariableDeclarationList(null, clone5(node.metadata), map(node.keywor
d), clone4(node.type), clone5(node.variables)); |
16165 | 15887 |
16166 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara
tionStatement node) => new VariableDeclarationStatement(clone4(node.variables),
map(node.semicolon)); | 15888 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara
tionStatement node) => new VariableDeclarationStatement(clone4(node.variables),
map(node.semicolon)); |
16167 | 15889 |
16168 WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement(
map(node.keyword), map(node.leftParenthesis), clone4(node.condition), map(node.r
ightParenthesis), clone4(node.body)); | 15890 WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement(
map(node.keyword), map(node.leftParenthesis), clone4(node.condition), map(node.r
ightParenthesis), clone4(node.body)); |
16169 | 15891 |
16170 WithClause visitWithClause(WithClause node) => new WithClause(map(node.withKey
word), clone5(node.mixinTypes)); | 15892 WithClause visitWithClause(WithClause node) => new WithClause(map(node.withKey
word), clone5(node.mixinTypes)); |
16171 | 15893 |
16172 ASTNode clone4(ASTNode node) { | 15894 AstNode clone4(AstNode node) { |
16173 if (node == null) { | 15895 if (node == null) { |
16174 return null; | 15896 return null; |
16175 } | 15897 } |
16176 if (identical(node, _oldNode)) { | 15898 if (identical(node, _oldNode)) { |
16177 return _newNode; | 15899 return _newNode; |
16178 } | 15900 } |
16179 return node.accept(this) as ASTNode; | 15901 return node.accept(this) as AstNode; |
16180 } | 15902 } |
16181 | 15903 |
16182 List clone5(NodeList nodes) { | 15904 List clone5(NodeList nodes) { |
16183 List clonedNodes = new List(); | 15905 List clonedNodes = new List(); |
16184 for (ASTNode node in nodes) { | 15906 for (AstNode node in nodes) { |
16185 clonedNodes.add(clone4(node)); | 15907 clonedNodes.add(clone4(node)); |
16186 } | 15908 } |
16187 return clonedNodes; | 15909 return clonedNodes; |
16188 } | 15910 } |
16189 | 15911 |
16190 Token map(Token oldToken) { | 15912 Token map(Token oldToken) { |
16191 if (oldToken == null) { | 15913 if (oldToken == null) { |
16192 return null; | 15914 return null; |
16193 } | 15915 } |
16194 return _tokenMap.get(oldToken); | 15916 return _tokenMap.get(oldToken); |
16195 } | 15917 } |
16196 | 15918 |
16197 List<Token> map2(List<Token> oldTokens) { | 15919 List<Token> map2(List<Token> oldTokens) { |
16198 List<Token> newTokens = new List<Token>(oldTokens.length); | 15920 List<Token> newTokens = new List<Token>(oldTokens.length); |
16199 for (int index = 0; index < newTokens.length; index++) { | 15921 for (int index = 0; index < newTokens.length; index++) { |
16200 newTokens[index] = map(oldTokens[index]); | 15922 newTokens[index] = map(oldTokens[index]); |
16201 } | 15923 } |
16202 return newTokens; | 15924 return newTokens; |
16203 } | 15925 } |
16204 } | 15926 } |
16205 | 15927 |
16206 /** | 15928 /** |
16207 * Traverse the AST from initial child node to successive parents, building a co
llection of local | 15929 * Traverse the AST from initial child node to successive parents, building a co
llection of local |
16208 * variable and parameter names visible to the initial child node. In case of na
me shadowing, the | 15930 * variable and parameter names visible to the initial child node. In case of na
me shadowing, the |
16209 * first name seen is the most specific one so names are not redefined. | 15931 * first name seen is the most specific one so names are not redefined. |
16210 * | 15932 * |
16211 * Completion test code coverage is 95%. The two basic blocks that are not execu
ted cannot be | 15933 * Completion test code coverage is 95%. The two basic blocks that are not execu
ted cannot be |
16212 * executed. They are included for future reference. | 15934 * executed. They are included for future reference. |
16213 * | |
16214 * @coverage com.google.dart.engine.services.completion | |
16215 */ | 15935 */ |
16216 class ScopedNameFinder extends GeneralizingASTVisitor<Object> { | 15936 class ScopedNameFinder extends GeneralizingAstVisitor<Object> { |
16217 Declaration _declarationNode; | 15937 Declaration _declarationNode; |
16218 | 15938 |
16219 ASTNode _immediateChild; | 15939 AstNode _immediateChild; |
16220 | 15940 |
16221 Map<String, SimpleIdentifier> _locals = new Map<String, SimpleIdentifier>(); | 15941 Map<String, SimpleIdentifier> _locals = new Map<String, SimpleIdentifier>(); |
16222 | 15942 |
16223 int _position = 0; | 15943 int _position = 0; |
16224 | 15944 |
16225 bool _referenceIsWithinLocalFunction = false; | 15945 bool _referenceIsWithinLocalFunction = false; |
16226 | 15946 |
16227 ScopedNameFinder(int position) { | 15947 ScopedNameFinder(int position) { |
16228 this._position = position; | 15948 this._position = position; |
16229 } | 15949 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16295 _declarationNode = node; | 16015 _declarationNode = node; |
16296 if (node.parameters == null) { | 16016 if (node.parameters == null) { |
16297 return null; | 16017 return null; |
16298 } | 16018 } |
16299 if (_immediateChild != node.parameters) { | 16019 if (_immediateChild != node.parameters) { |
16300 addParameters(node.parameters.parameters); | 16020 addParameters(node.parameters.parameters); |
16301 } | 16021 } |
16302 return null; | 16022 return null; |
16303 } | 16023 } |
16304 | 16024 |
16305 Object visitNode(ASTNode node) { | 16025 Object visitNode(AstNode node) { |
16306 _immediateChild = node; | 16026 _immediateChild = node; |
16307 ASTNode parent = node.parent; | 16027 AstNode parent = node.parent; |
16308 if (parent != null) { | 16028 if (parent != null) { |
16309 parent.accept(this); | 16029 parent.accept(this); |
16310 } | 16030 } |
16311 return null; | 16031 return null; |
16312 } | 16032 } |
16313 | 16033 |
16314 Object visitSwitchMember(SwitchMember node) { | 16034 Object visitSwitchMember(SwitchMember node) { |
16315 checkStatements(node.statements); | 16035 checkStatements(node.statements); |
16316 return super.visitSwitchMember(node); | 16036 return super.visitSwitchMember(node); |
16317 } | 16037 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16358 return; | 16078 return; |
16359 } | 16079 } |
16360 if (stmt is VariableDeclarationStatement) { | 16080 if (stmt is VariableDeclarationStatement) { |
16361 addVariables(stmt.variables.variables); | 16081 addVariables(stmt.variables.variables); |
16362 } else if (stmt is FunctionDeclarationStatement && !_referenceIsWithinLoca
lFunction) { | 16082 } else if (stmt is FunctionDeclarationStatement && !_referenceIsWithinLoca
lFunction) { |
16363 addToScope(stmt.functionDeclaration.name); | 16083 addToScope(stmt.functionDeclaration.name); |
16364 } | 16084 } |
16365 } | 16085 } |
16366 } | 16086 } |
16367 | 16087 |
16368 bool isInRange(ASTNode node) { | 16088 bool isInRange(AstNode node) { |
16369 if (_position < 0) { | 16089 if (_position < 0) { |
16370 // if source position is not set then all nodes are in range | 16090 // if source position is not set then all nodes are in range |
16371 return true; | 16091 return true; |
16372 } | 16092 } |
16373 return node.end < _position; | 16093 return node.end < _position; |
16374 } | 16094 } |
16375 } | 16095 } |
16376 /** | 16096 /** |
16377 * Instances of the class {@code NodeList} represent a list of AST nodes that ha
ve a common parent. | 16097 * Instances of the class {@code NodeList} represent a list of AST nodes that ha
ve a common parent. |
16378 */ | 16098 */ |
16379 class NodeList<E extends ASTNode> extends Object with ListMixin<E> { | 16099 class NodeList<E extends AstNode> extends Object with ListMixin<E> { |
16380 /** | 16100 /** |
16381 * Create an empty list with the given owner. This is a convenience method tha
t allows the | 16101 * Create an empty list with the given owner. This is a convenience method tha
t allows the |
16382 * compiler to determine the correct value of the type argument [E] without ne
eding to | 16102 * compiler to determine the correct value of the type argument [E] without ne
eding to |
16383 * explicitly specify it. | 16103 * explicitly specify it. |
16384 * | 16104 * |
16385 * @param owner the node that is the parent of each of the elements in the lis
t | 16105 * @param owner the node that is the parent of each of the elements in the lis
t |
16386 * @return the list that was created | 16106 * @return the list that was created |
16387 */ | 16107 */ |
16388 static NodeList create(ASTNode owner) => new NodeList(owner); | 16108 static NodeList create(AstNode owner) => new NodeList(owner); |
16389 | 16109 |
16390 /** | 16110 /** |
16391 * The node that is the parent of each of the elements in the list. | 16111 * The node that is the parent of each of the elements in the list. |
16392 */ | 16112 */ |
16393 ASTNode owner; | 16113 AstNode owner; |
16394 | 16114 |
16395 /** | 16115 /** |
16396 * The elements contained in the list. | 16116 * The elements contained in the list. |
16397 */ | 16117 */ |
16398 List<E> _elements = <E> []; | 16118 List<E> _elements = <E> []; |
16399 | 16119 |
16400 /** | 16120 /** |
16401 * Initialize a newly created list of nodes to be empty. | 16121 * Initialize a newly created list of nodes to be empty. |
16402 * | 16122 * |
16403 * @param owner the node that is the parent of each of the elements in the lis
t | 16123 * @param owner the node that is the parent of each of the elements in the lis
t |
16404 */ | 16124 */ |
16405 NodeList(this.owner); | 16125 NodeList(this.owner); |
16406 | 16126 |
16407 /** | 16127 /** |
16408 * Use the given visitor to visit each of the nodes in this list. | 16128 * Use the given visitor to visit each of the nodes in this list. |
16409 * | 16129 * |
16410 * @param visitor the visitor to be used to visit the elements of this list | 16130 * @param visitor the visitor to be used to visit the elements of this list |
16411 */ | 16131 */ |
16412 accept(ASTVisitor visitor) { | 16132 accept(AstVisitor visitor) { |
16413 var length = _elements.length; | 16133 var length = _elements.length; |
16414 for (var i = 0; i < length; i++) { | 16134 for (var i = 0; i < length; i++) { |
16415 _elements[i].accept(visitor); | 16135 _elements[i].accept(visitor); |
16416 } | 16136 } |
16417 } | 16137 } |
16418 void add(E node) { | 16138 void add(E node) { |
16419 insert(length, node); | 16139 insert(length, node); |
16420 } | 16140 } |
16421 void insert(int index, E node) { | 16141 void insert(int index, E node) { |
16422 int length = _elements.length; | 16142 int length = _elements.length; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16470 } | 16190 } |
16471 return _elements[_elements.length - 1].endToken; | 16191 return _elements[_elements.length - 1].endToken; |
16472 } | 16192 } |
16473 E removeAt(int index) { | 16193 E removeAt(int index) { |
16474 if (index < 0 || index >= _elements.length) { | 16194 if (index < 0 || index >= _elements.length) { |
16475 throw new RangeError("Index: ${index}, Size: ${_elements.length}"); | 16195 throw new RangeError("Index: ${index}, Size: ${_elements.length}"); |
16476 } | 16196 } |
16477 E removedNode = _elements[index] as E; | 16197 E removedNode = _elements[index] as E; |
16478 int length = _elements.length; | 16198 int length = _elements.length; |
16479 if (length == 1) { | 16199 if (length == 1) { |
16480 _elements = ASTNode.EMPTY_ARRAY; | 16200 _elements = AstNode.EMPTY_ARRAY; |
16481 return removedNode; | 16201 return removedNode; |
16482 } | 16202 } |
16483 _elements.removeAt(index); | 16203 _elements.removeAt(index); |
16484 return removedNode; | 16204 return removedNode; |
16485 } | 16205 } |
16486 void operator[]=(int index, E node) { | 16206 void operator[]=(int index, E node) { |
16487 if (index < 0 || index >= _elements.length) { | 16207 if (index < 0 || index >= _elements.length) { |
16488 throw new RangeError("Index: ${index}, Size: ${_elements.length}"); | 16208 throw new RangeError("Index: ${index}, Size: ${_elements.length}"); |
16489 } | 16209 } |
16490 owner.becomeParentOf(node); | 16210 owner.becomeParentOf(node); |
16491 _elements[index] = node; | 16211 _elements[index] = node; |
16492 } | 16212 } |
16493 int get length => _elements.length; | 16213 int get length => _elements.length; |
16494 void set length(int value) { | 16214 void set length(int value) { |
16495 throw new UnsupportedError("Cannot resize NodeList."); | 16215 throw new UnsupportedError("Cannot resize NodeList."); |
16496 } | 16216 } |
16497 } | 16217 } |
OLD | NEW |