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

Side by Side Diff: pkg/analyzer/lib/src/generated/element.dart

Issue 987263002: Implement 'node' for ClassElement and FieldElement for enums. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/element_handle.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.element; 8 library engine.element;
9 9
10 import 'dart:collection'; 10 import 'dart:collection';
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 * 210 *
211 * <b>Note:</b> Because the element model represents the state of the code, it 211 * <b>Note:</b> Because the element model represents the state of the code, it
212 * is possible for it to be semantically invalid. In particular, it is not 212 * is possible for it to be semantically invalid. In particular, it is not
213 * safe to assume that the inheritance structure of a class does not contain a 213 * safe to assume that the inheritance structure of a class does not contain a
214 * cycle. Clients that traverse the inheritance structure must explicitly 214 * cycle. Clients that traverse the inheritance structure must explicitly
215 * guard against infinite loops. 215 * guard against infinite loops.
216 */ 216 */
217 List<InterfaceType> get mixins; 217 List<InterfaceType> get mixins;
218 218
219 /** 219 /**
220 * Return the resolved [ClassDeclaration] node that declares this 220 * Return the resolved [ClassDeclaration] or [EnumDeclaration] node that
221 * [ClassElement]. 221 * declares this [ClassElement].
222 * 222 *
223 * This method is expensive, because resolved AST might be evicted from cache, 223 * This method is expensive, because resolved AST might be evicted from cache,
224 * so parsing and resolving will be performed. 224 * so parsing and resolving will be performed.
225 */ 225 */
226 @override 226 @override
227 ClassDeclaration get node; 227 AstNode get node;
228 228
229 /** 229 /**
230 * Return the superclass of this class, or `null` if the class represents the 230 * Return the superclass of this class, or `null` if the class represents the
231 * class 'Object'. All other classes will have a non-`null` superclass. If the 231 * class 'Object'. All other classes will have a non-`null` superclass. If the
232 * superclass was not explicitly declared then the implicit superclass 232 * superclass was not explicitly declared then the implicit superclass
233 * 'Object' will be returned. 233 * 'Object' will be returned.
234 * 234 *
235 * <b>Note:</b> Because the element model represents the state of the code, it 235 * <b>Note:</b> Because the element model represents the state of the code, it
236 * is possible for it to be semantically invalid. In particular, it is not 236 * is possible for it to be semantically invalid. In particular, it is not
237 * safe to assume that the inheritance structure of a class does not contain a 237 * safe to assume that the inheritance structure of a class does not contain a
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 688
689 /** 689 /**
690 * Set whether an error has reported explaining why this class is an 690 * Set whether an error has reported explaining why this class is an
691 * invalid mixin application. 691 * invalid mixin application.
692 */ 692 */
693 void set mixinErrorsReported(bool value) { 693 void set mixinErrorsReported(bool value) {
694 setModifier(Modifier.MIXIN_ERRORS_REPORTED, value); 694 setModifier(Modifier.MIXIN_ERRORS_REPORTED, value);
695 } 695 }
696 696
697 @override 697 @override
698 ClassDeclaration get node => 698 AstNode get node {
699 getNodeMatching((node) => node is ClassDeclaration); 699 if (isEnum) {
700 return getNodeMatching((node) => node is EnumDeclaration);
701 } else {
702 return getNodeMatching((node) => node is ClassDeclaration);
703 }
704 }
700 705
701 /** 706 /**
702 * Set whether this class is defined by a typedef construct. 707 * Set whether this class is defined by a typedef construct.
703 */ 708 */
704 void set typedef(bool isTypedef) { 709 void set typedef(bool isTypedef) {
705 setModifier(Modifier.TYPEDEF, isTypedef); 710 setModifier(Modifier.TYPEDEF, isTypedef);
706 } 711 }
707 712
708 @override 713 @override
709 List<TypeParameterElement> get typeParameters => _typeParameters; 714 List<TypeParameterElement> get typeParameters => _typeParameters;
(...skipping 2966 matching lines...) Expand 10 before | Expand all | Expand 10 after
3676 3681
3677 /** 3682 /**
3678 * A field defined within a type. 3683 * A field defined within a type.
3679 */ 3684 */
3680 abstract class FieldElement 3685 abstract class FieldElement
3681 implements ClassMemberElement, PropertyInducingElement { 3686 implements ClassMemberElement, PropertyInducingElement {
3682 /** 3687 /**
3683 * Return {@code true} if this element is an enum constant. 3688 * Return {@code true} if this element is an enum constant.
3684 */ 3689 */
3685 bool get isEnumConstant; 3690 bool get isEnumConstant;
3691
3692 /**
3693 * Return the resolved [VariableDeclaration] or [EnumConstantDeclaration]
3694 * node that declares this [FieldElement].
3695 *
3696 * This method is expensive, because resolved AST might be evicted from cache,
3697 * so parsing and resolving will be performed.
3698 */
3699 @override
3700 AstNode get node;
3686 } 3701 }
3687 3702
3688 /** 3703 /**
3689 * A concrete implementation of a [FieldElement]. 3704 * A concrete implementation of a [FieldElement].
3690 */ 3705 */
3691 class FieldElementImpl extends PropertyInducingElementImpl 3706 class FieldElementImpl extends PropertyInducingElementImpl
3692 implements FieldElement { 3707 implements FieldElement {
3693 /** 3708 /**
3694 * An empty list of field elements. 3709 * An empty list of field elements.
3695 */ 3710 */
(...skipping 16 matching lines...) Expand all
3712 @override 3727 @override
3713 bool get isEnumConstant => 3728 bool get isEnumConstant =>
3714 enclosingElement != null ? enclosingElement.isEnum : false; 3729 enclosingElement != null ? enclosingElement.isEnum : false;
3715 3730
3716 @override 3731 @override
3717 bool get isStatic => hasModifier(Modifier.STATIC); 3732 bool get isStatic => hasModifier(Modifier.STATIC);
3718 3733
3719 @override 3734 @override
3720 ElementKind get kind => ElementKind.FIELD; 3735 ElementKind get kind => ElementKind.FIELD;
3721 3736
3737 @override
3738 AstNode get node {
3739 if (isEnumConstant) {
3740 return getNodeMatching((node) => node is EnumConstantDeclaration);
3741 } else {
3742 return getNodeMatching((node) => node is VariableDeclaration);
3743 }
3744 }
3745
3722 /** 3746 /**
3723 * Set whether this field is static. 3747 * Set whether this field is static.
3724 */ 3748 */
3725 void set static(bool isStatic) { 3749 void set static(bool isStatic) {
3726 setModifier(Modifier.STATIC, isStatic); 3750 setModifier(Modifier.STATIC, isStatic);
3727 } 3751 }
3728 3752
3729 @override 3753 @override
3730 accept(ElementVisitor visitor) => visitor.visitFieldElement(this); 3754 accept(ElementVisitor visitor) => visitor.visitFieldElement(this);
3731 } 3755 }
(...skipping 1849 matching lines...) Expand 10 before | Expand all | Expand 10 after
5581 * The result of looking up getter (respectively setter) <i>m</i> in class 5605 * The result of looking up getter (respectively setter) <i>m</i> in class
5582 * <i>C</i> with respect to library <i>L</i> is: 5606 * <i>C</i> with respect to library <i>L</i> is:
5583 * * If <i>C</i> declares an instance getter (respectively setter) named 5607 * * If <i>C</i> declares an instance getter (respectively setter) named
5584 * <i>m</i> that is accessible to <i>L</i>, then that getter (respectively 5608 * <i>m</i> that is accessible to <i>L</i>, then that getter (respectively
5585 * setter) is the result of the lookup. Otherwise, if <i>C</i> has a 5609 * setter) is the result of the lookup. Otherwise, if <i>C</i> has a
5586 * superclass <i>S</i>, then the result of the lookup is the result of 5610 * superclass <i>S</i>, then the result of the lookup is the result of
5587 * looking up getter (respectively setter) <i>m</i> in <i>S</i> with respect 5611 * looking up getter (respectively setter) <i>m</i> in <i>S</i> with respect
5588 * to <i>L</i>. Otherwise, we say that the lookup has failed. 5612 * to <i>L</i>. Otherwise, we say that the lookup has failed.
5589 * </blockquote> 5613 * </blockquote>
5590 */ 5614 */
5591 PropertyAccessorElement lookUpGetter( 5615 PropertyAccessorElement lookUpGetter(String name, LibraryElement library);
5592 String name, LibraryElement library);
5593 5616
5594 /** 5617 /**
5595 * Return the element representing the getter that results from looking up the 5618 * Return the element representing the getter that results from looking up the
5596 * getter with the given [name] in the superclass of this class with respect 5619 * getter with the given [name] in the superclass of this class with respect
5597 * to the given [library], or `null` if the look up fails. The behavior of 5620 * to the given [library], or `null` if the look up fails. The behavior of
5598 * this method is defined by the Dart Language Specification in section 5621 * this method is defined by the Dart Language Specification in section
5599 * 12.15.1: 5622 * 12.15.1:
5600 * <blockquote> 5623 * <blockquote>
5601 * The result of looking up getter (respectively setter) <i>m</i> in class 5624 * The result of looking up getter (respectively setter) <i>m</i> in class
5602 * <i>C</i> with respect to library <i>L</i> is: 5625 * <i>C</i> with respect to library <i>L</i> is:
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
5637 * <blockquote> 5660 * <blockquote>
5638 * The result of looking up method <i>m</i> in class <i>C</i> with respect to 5661 * The result of looking up method <i>m</i> in class <i>C</i> with respect to
5639 * library <i>L</i> is: 5662 * library <i>L</i> is:
5640 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible 5663 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
5641 * to <i>L</i>, then that method is the result of the lookup. Otherwise, if 5664 * to <i>L</i>, then that method is the result of the lookup. Otherwise, if
5642 * <i>C</i> has a superclass <i>S</i>, then the result of the lookup is the 5665 * <i>C</i> has a superclass <i>S</i>, then the result of the lookup is the
5643 * result of looking up method <i>m</i> in <i>S</i> with respect to <i>L</i>. 5666 * result of looking up method <i>m</i> in <i>S</i> with respect to <i>L</i>.
5644 * Otherwise, we say that the lookup has failed. 5667 * Otherwise, we say that the lookup has failed.
5645 * </blockquote> 5668 * </blockquote>
5646 */ 5669 */
5647 MethodElement lookUpMethodInSuperclass( 5670 MethodElement lookUpMethodInSuperclass(String name, LibraryElement library);
5648 String name, LibraryElement library);
5649 5671
5650 /** 5672 /**
5651 * Return the element representing the setter that results from looking up the 5673 * Return the element representing the setter that results from looking up the
5652 * setter with the given [name] in this class with respect to the given 5674 * setter with the given [name] in this class with respect to the given
5653 * [library], or `null` if the look up fails. The behavior of this method is 5675 * [library], or `null` if the look up fails. The behavior of this method is
5654 * defined by the Dart Language Specification in section 12.16: 5676 * defined by the Dart Language Specification in section 12.16:
5655 * <blockquote> 5677 * <blockquote>
5656 * The result of looking up getter (respectively setter) <i>m</i> in class 5678 * The result of looking up getter (respectively setter) <i>m</i> in class
5657 * <i>C</i> with respect to library <i>L</i> is: 5679 * <i>C</i> with respect to library <i>L</i> is:
5658 * * If <i>C</i> declares an instance getter (respectively setter) named 5680 * * If <i>C</i> declares an instance getter (respectively setter) named
5659 * <i>m</i> that is accessible to <i>L</i>, then that getter (respectively 5681 * <i>m</i> that is accessible to <i>L</i>, then that getter (respectively
5660 * setter) is the result of the lookup. Otherwise, if <i>C</i> has a 5682 * setter) is the result of the lookup. Otherwise, if <i>C</i> has a
5661 * superclass <i>S</i>, then the result of the lookup is the result of 5683 * superclass <i>S</i>, then the result of the lookup is the result of
5662 * looking up getter (respectively setter) <i>m</i> in <i>S</i> with respect 5684 * looking up getter (respectively setter) <i>m</i> in <i>S</i> with respect
5663 * to <i>L</i>. Otherwise, we say that the lookup has failed. 5685 * to <i>L</i>. Otherwise, we say that the lookup has failed.
5664 * </blockquote> 5686 * </blockquote>
5665 */ 5687 */
5666 PropertyAccessorElement lookUpSetter( 5688 PropertyAccessorElement lookUpSetter(String name, LibraryElement library);
5667 String name, LibraryElement library);
5668 5689
5669 /** 5690 /**
5670 * Return the element representing the setter that results from looking up the 5691 * Return the element representing the setter that results from looking up the
5671 * setter with the given [name] in the superclass of this class with respect 5692 * setter with the given [name] in the superclass of this class with respect
5672 * to the given [library], or `null` if the look up fails. The behavior of 5693 * to the given [library], or `null` if the look up fails. The behavior of
5673 * this method is defined by the Dart Language Specification in section 12.16: 5694 * this method is defined by the Dart Language Specification in section 12.16:
5674 * <blockquote> 5695 * <blockquote>
5675 * The result of looking up getter (respectively setter) <i>m</i> in class 5696 * The result of looking up getter (respectively setter) <i>m</i> in class
5676 * <i>C</i> with respect to library <i>L</i> is: 5697 * <i>C</i> with respect to library <i>L</i> is:
5677 * * If <i>C</i> declares an instance getter (respectively setter) named 5698 * * If <i>C</i> declares an instance getter (respectively setter) named
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
6491 * given [type] to Object, where the given [depth] is the length of the 6512 * given [type] to Object, where the given [depth] is the length of the
6492 * longest path from the subtype to this type. The set of [visitedTypes] is 6513 * longest path from the subtype to this type. The set of [visitedTypes] is
6493 * used to prevent infinite recursion in the case of a cyclic type structure. 6514 * used to prevent infinite recursion in the case of a cyclic type structure.
6494 * 6515 *
6495 * See [computeLongestInheritancePathToObject], and [getLeastUpperBound]. 6516 * See [computeLongestInheritancePathToObject], and [getLeastUpperBound].
6496 */ 6517 */
6497 static int _computeLongestInheritancePathToObject( 6518 static int _computeLongestInheritancePathToObject(
6498 InterfaceType type, int depth, HashSet<ClassElement> visitedTypes) { 6519 InterfaceType type, int depth, HashSet<ClassElement> visitedTypes) {
6499 ClassElement classElement = type.element; 6520 ClassElement classElement = type.element;
6500 // Object case 6521 // Object case
6501 if (classElement.supertype == null || 6522 if (classElement.supertype == null || visitedTypes.contains(classElement)) {
6502 visitedTypes.contains(classElement)) {
6503 return depth; 6523 return depth;
6504 } 6524 }
6505 int longestPath = 1; 6525 int longestPath = 1;
6506 try { 6526 try {
6507 visitedTypes.add(classElement); 6527 visitedTypes.add(classElement);
6508 List<InterfaceType> superinterfaces = classElement.interfaces; 6528 List<InterfaceType> superinterfaces = classElement.interfaces;
6509 int pathLength; 6529 int pathLength;
6510 if (superinterfaces.length > 0) { 6530 if (superinterfaces.length > 0) {
6511 // loop through each of the superinterfaces recursively calling this 6531 // loop through each of the superinterfaces recursively calling this
6512 // method and keeping track of the longest path to return 6532 // method and keeping track of the longest path to return
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after
7252 /** 7272 /**
7253 * The length of the visible range for this element, or `-1` if this element 7273 * The length of the visible range for this element, or `-1` if this element
7254 * does not have a visible range. 7274 * does not have a visible range.
7255 */ 7275 */
7256 int _visibleRangeLength = -1; 7276 int _visibleRangeLength = -1;
7257 7277
7258 /** 7278 /**
7259 * Initialize a newly created method element to have the given [name] and 7279 * Initialize a newly created method element to have the given [name] and
7260 * [offset]. 7280 * [offset].
7261 */ 7281 */
7262 LocalVariableElementImpl(String name, int offset) 7282 LocalVariableElementImpl(String name, int offset) : super(name, offset);
7263 : super(name, offset);
7264 7283
7265 /** 7284 /**
7266 * Initialize a newly created local variable element to have the given [name]. 7285 * Initialize a newly created local variable element to have the given [name].
7267 */ 7286 */
7268 LocalVariableElementImpl.forNode(Identifier name) : super.forNode(name); 7287 LocalVariableElementImpl.forNode(Identifier name) : super.forNode(name);
7269 7288
7270 @override 7289 @override
7271 String get identifier { 7290 String get identifier {
7272 int enclosingOffset = 7291 int enclosingOffset =
7273 enclosingElement != null ? enclosingElement.nameOffset : 0; 7292 enclosingElement != null ? enclosingElement.nameOffset : 0;
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
7648 return buffer.toString(); 7667 return buffer.toString();
7649 } 7668 }
7650 7669
7651 /** 7670 /**
7652 * If the given [method]'s type is different when any type parameters from the 7671 * If the given [method]'s type is different when any type parameters from the
7653 * defining type's declaration are replaced with the actual type arguments 7672 * defining type's declaration are replaced with the actual type arguments
7654 * from the [definingType], create a method member representing the given 7673 * from the [definingType], create a method member representing the given
7655 * method. Return the member that was created, or the base method if no member 7674 * method. Return the member that was created, or the base method if no member
7656 * was created. 7675 * was created.
7657 */ 7676 */
7658 static MethodElement from( 7677 static MethodElement from(MethodElement method, InterfaceType definingType) {
7659 MethodElement method, InterfaceType definingType) {
7660 if (method == null || definingType.typeArguments.length == 0) { 7678 if (method == null || definingType.typeArguments.length == 0) {
7661 return method; 7679 return method;
7662 } 7680 }
7663 FunctionType baseType = method.type; 7681 FunctionType baseType = method.type;
7664 List<DartType> argumentTypes = definingType.typeArguments; 7682 List<DartType> argumentTypes = definingType.typeArguments;
7665 List<DartType> parameterTypes = definingType.element.type.typeArguments; 7683 List<DartType> parameterTypes = definingType.element.type.typeArguments;
7666 FunctionType substitutedType = 7684 FunctionType substitutedType =
7667 baseType.substitute2(argumentTypes, parameterTypes); 7685 baseType.substitute2(argumentTypes, parameterTypes);
7668 if (baseType == substitutedType) { 7686 if (baseType == substitutedType) {
7669 return method; 7687 return method;
(...skipping 1262 matching lines...) Expand 10 before | Expand all | Expand 10 after
8932 /** 8950 /**
8933 * The propagated type of this variable, or `null` if type propagation has not 8951 * The propagated type of this variable, or `null` if type propagation has not
8934 * been performed. 8952 * been performed.
8935 */ 8953 */
8936 DartType propagatedType; 8954 DartType propagatedType;
8937 8955
8938 /** 8956 /**
8939 * Initialize a newly created synthetic element to have the given [name] and 8957 * Initialize a newly created synthetic element to have the given [name] and
8940 * [offset]. 8958 * [offset].
8941 */ 8959 */
8942 PropertyInducingElementImpl(String name, int offset) 8960 PropertyInducingElementImpl(String name, int offset) : super(name, offset);
8943 : super(name, offset);
8944 8961
8945 /** 8962 /**
8946 * Initialize a newly created element to have the given [name]. 8963 * Initialize a newly created element to have the given [name].
8947 */ 8964 */
8948 PropertyInducingElementImpl.forNode(Identifier name) : super.forNode(name); 8965 PropertyInducingElementImpl.forNode(Identifier name) : super.forNode(name);
8949 } 8966 }
8950 8967
8951 /** 8968 /**
8952 * A visitor that will recursively visit all of the element in an element model. 8969 * A visitor that will recursively visit all of the element in an element model.
8953 * For example, using an instance of this class to visit a 8970 * For example, using an instance of this class to visit a
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
9240 /** 9257 /**
9241 * An empty list of top-level variable elements. 9258 * An empty list of top-level variable elements.
9242 */ 9259 */
9243 static const List<TopLevelVariableElement> EMPTY_ARRAY = 9260 static const List<TopLevelVariableElement> EMPTY_ARRAY =
9244 const <TopLevelVariableElement>[]; 9261 const <TopLevelVariableElement>[];
9245 9262
9246 /** 9263 /**
9247 * Initialize a newly created synthetic top-level variable element to have the 9264 * Initialize a newly created synthetic top-level variable element to have the
9248 * given [name] and [offset]. 9265 * given [name] and [offset].
9249 */ 9266 */
9250 TopLevelVariableElementImpl(String name, int offset) 9267 TopLevelVariableElementImpl(String name, int offset) : super(name, offset);
9251 : super(name, offset);
9252 9268
9253 /** 9269 /**
9254 * Initialize a newly created top-level variable element to have the given 9270 * Initialize a newly created top-level variable element to have the given
9255 * [name]. 9271 * [name].
9256 */ 9272 */
9257 TopLevelVariableElementImpl.forNode(Identifier name) : super.forNode(name); 9273 TopLevelVariableElementImpl.forNode(Identifier name) : super.forNode(name);
9258 9274
9259 @override 9275 @override
9260 bool get isStatic => true; 9276 bool get isStatic => true;
9261 9277
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
9605 /** 9621 /**
9606 * The type representing the bound associated with this parameter, or `null` 9622 * The type representing the bound associated with this parameter, or `null`
9607 * if this parameter does not have an explicit bound. 9623 * if this parameter does not have an explicit bound.
9608 */ 9624 */
9609 DartType bound; 9625 DartType bound;
9610 9626
9611 /** 9627 /**
9612 * Initialize a newly created method element to have the given [name] and 9628 * Initialize a newly created method element to have the given [name] and
9613 * [offset]. 9629 * [offset].
9614 */ 9630 */
9615 TypeParameterElementImpl(String name, int offset) 9631 TypeParameterElementImpl(String name, int offset) : super(name, offset);
9616 : super(name, offset);
9617 9632
9618 /** 9633 /**
9619 * Initialize a newly created type parameter element to have the given [name]. 9634 * Initialize a newly created type parameter element to have the given [name].
9620 */ 9635 */
9621 TypeParameterElementImpl.forNode(Identifier name) : super.forNode(name); 9636 TypeParameterElementImpl.forNode(Identifier name) : super.forNode(name);
9622 9637
9623 @override 9638 @override
9624 ElementKind get kind => ElementKind.TYPE_PARAMETER; 9639 ElementKind get kind => ElementKind.TYPE_PARAMETER;
9625 9640
9626 @override 9641 @override
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
10384 // void <: void (by reflexivity) 10399 // void <: void (by reflexivity)
10385 // bottom <: void (as bottom is a subtype of all types). 10400 // bottom <: void (as bottom is a subtype of all types).
10386 // void <: dynamic (as dynamic is a supertype of all types) 10401 // void <: dynamic (as dynamic is a supertype of all types)
10387 return identical(type, this) || type.isDynamic; 10402 return identical(type, this) || type.isDynamic;
10388 } 10403 }
10389 10404
10390 @override 10405 @override
10391 VoidTypeImpl substitute2( 10406 VoidTypeImpl substitute2(
10392 List<DartType> argumentTypes, List<DartType> parameterTypes) => this; 10407 List<DartType> argumentTypes, List<DartType> parameterTypes) => this;
10393 } 10408 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/element_handle.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698