| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 /// ----------------------------------------------------------------------- | 5 /// ----------------------------------------------------------------------- |
| 6 /// ERROR HANDLING | 6 /// ERROR HANDLING |
| 7 /// ----------------------------------------------------------------------- | 7 /// ----------------------------------------------------------------------- |
| 8 /// | 8 /// |
| 9 /// As a rule of thumb, errors that can be detected statically are handled by | 9 /// As a rule of thumb, errors that can be detected statically are handled by |
| 10 /// the frontend, typically by translating the erroneous code into a 'throw' or | 10 /// the frontend, typically by translating the erroneous code into a 'throw' or |
| (...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 transformChildren(Transformer v) {} | 486 transformChildren(Transformer v) {} |
| 487 } | 487 } |
| 488 | 488 |
| 489 /// Declaration of a type alias. | 489 /// Declaration of a type alias. |
| 490 class Typedef extends NamedNode { | 490 class Typedef extends NamedNode { |
| 491 /// The uri of the source file that contains the declaration of this typedef. | 491 /// The uri of the source file that contains the declaration of this typedef. |
| 492 String fileUri; | 492 String fileUri; |
| 493 List<Expression> annotations = const <Expression>[]; | 493 List<Expression> annotations = const <Expression>[]; |
| 494 String name; | 494 String name; |
| 495 final List<TypeParameter> typeParameters; | 495 final List<TypeParameter> typeParameters; |
| 496 | |
| 497 @informative | |
| 498 int requiredParameterCount = 0; | |
| 499 | |
| 500 @informative | |
| 501 List<VariableDeclaration> positionalParameters = <VariableDeclaration>[]; | |
| 502 | |
| 503 @informative | |
| 504 List<VariableDeclaration> namedParameters = <VariableDeclaration>[]; | |
| 505 | |
| 506 DartType type; | 496 DartType type; |
| 507 | 497 |
| 508 Typedef(this.name, this.type, | 498 Typedef(this.name, this.type, |
| 509 {Reference reference, this.fileUri, List<TypeParameter> typeParameters}) | 499 {Reference reference, this.fileUri, List<TypeParameter> typeParameters}) |
| 510 : this.typeParameters = typeParameters ?? <TypeParameter>[], | 500 : this.typeParameters = typeParameters ?? <TypeParameter>[], |
| 511 super(reference) { | 501 super(reference) { |
| 512 setParents(this.typeParameters, this); | 502 setParents(this.typeParameters, this); |
| 513 } | 503 } |
| 514 | 504 |
| 515 Library get enclosingLibrary => parent; | 505 Library get enclosingLibrary => parent; |
| 516 | 506 |
| 517 accept(TreeVisitor v) { | 507 accept(TreeVisitor v) { |
| 518 return v.visitTypedef(this); | 508 return v.visitTypedef(this); |
| 519 } | 509 } |
| 520 | 510 |
| 521 void setParameters( | |
| 522 int requiredParameterCount, | |
| 523 List<VariableDeclaration> positionalParameters, | |
| 524 List<VariableDeclaration> namedParameters) { | |
| 525 this.requiredParameterCount = requiredParameterCount; | |
| 526 this.positionalParameters = positionalParameters; | |
| 527 this.namedParameters = namedParameters; | |
| 528 setParents(this.positionalParameters, this); | |
| 529 setParents(this.namedParameters, this); | |
| 530 } | |
| 531 | |
| 532 transformChildren(Transformer v) { | 511 transformChildren(Transformer v) { |
| 533 transformList(annotations, v, this); | 512 transformList(annotations, v, this); |
| 534 transformList(typeParameters, v, this); | 513 transformList(typeParameters, v, this); |
| 535 transformList(positionalParameters, v, this); | |
| 536 transformList(namedParameters, v, this); | |
| 537 if (type != null) { | 514 if (type != null) { |
| 538 type = v.visitDartType(type); | 515 type = v.visitDartType(type); |
| 539 } | 516 } |
| 540 } | 517 } |
| 541 | 518 |
| 542 visitChildren(Visitor v) { | 519 visitChildren(Visitor v) { |
| 543 visitList(annotations, v); | 520 visitList(annotations, v); |
| 544 visitList(typeParameters, v); | 521 visitList(typeParameters, v); |
| 545 visitList(typeParameters, v); | |
| 546 visitList(positionalParameters, v); | |
| 547 visitList(namedParameters, v); | |
| 548 type?.accept(v); | 522 type?.accept(v); |
| 549 } | 523 } |
| 550 | 524 |
| 551 void addAnnotation(Expression node) { | 525 void addAnnotation(Expression node) { |
| 552 if (annotations.isEmpty) { | 526 if (annotations.isEmpty) { |
| 553 annotations = <Expression>[]; | 527 annotations = <Expression>[]; |
| 554 } | 528 } |
| 555 annotations.add(node); | 529 annotations.add(node); |
| 556 node.parent = this; | 530 node.parent = this; |
| 557 } | 531 } |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 // ------------------------------------------------------------------------ | 827 // ------------------------------------------------------------------------ |
| 854 // MEMBERS | 828 // MEMBERS |
| 855 // ------------------------------------------------------------------------ | 829 // ------------------------------------------------------------------------ |
| 856 | 830 |
| 857 abstract class Member extends NamedNode { | 831 abstract class Member extends NamedNode { |
| 858 /// End offset in the source file it comes from. Valid values are from 0 and | 832 /// End offset in the source file it comes from. Valid values are from 0 and |
| 859 /// up, or -1 ([TreeNode.noOffset]) if the file end offset is not available | 833 /// up, or -1 ([TreeNode.noOffset]) if the file end offset is not available |
| 860 /// (this is the default if none is specifically set). | 834 /// (this is the default if none is specifically set). |
| 861 int fileEndOffset = TreeNode.noOffset; | 835 int fileEndOffset = TreeNode.noOffset; |
| 862 | 836 |
| 863 /// Documentation comment of the member, or `null`. | |
| 864 @informative | |
| 865 String documentationComment; | |
| 866 | |
| 867 /// List of metadata annotations on the member. | 837 /// List of metadata annotations on the member. |
| 868 /// | 838 /// |
| 869 /// This defaults to an immutable empty list. Use [addAnnotation] to add | 839 /// This defaults to an immutable empty list. Use [addAnnotation] to add |
| 870 /// annotations if needed. | 840 /// annotations if needed. |
| 871 List<Expression> annotations = const <Expression>[]; | 841 List<Expression> annotations = const <Expression>[]; |
| 872 Name name; | 842 Name name; |
| 873 | 843 |
| 874 /// Flags summarizing the kinds of AST nodes contained in this member, for | 844 /// Flags summarizing the kinds of AST nodes contained in this member, for |
| 875 /// speeding up transformations that only affect certain types of nodes. | 845 /// speeding up transformations that only affect certain types of nodes. |
| 876 /// | 846 /// |
| (...skipping 3829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4706 if (typedef_.canonicalName == null) { | 4676 if (typedef_.canonicalName == null) { |
| 4707 throw '$typedef_ has no canonical name'; | 4677 throw '$typedef_ has no canonical name'; |
| 4708 } | 4678 } |
| 4709 return typedef_.canonicalName; | 4679 return typedef_.canonicalName; |
| 4710 } | 4680 } |
| 4711 | 4681 |
| 4712 /// Annotation describing information which is not part of Dart semantics; in | 4682 /// Annotation describing information which is not part of Dart semantics; in |
| 4713 /// other words, if this information (or any information it refers to) changes, | 4683 /// other words, if this information (or any information it refers to) changes, |
| 4714 /// static analysis and runtime behavior of the library are unaffected. | 4684 /// static analysis and runtime behavior of the library are unaffected. |
| 4715 const informative = null; | 4685 const informative = null; |
| OLD | NEW |