| 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 library analyzer.src.dart.element.element; | 5 library analyzer.src.dart.element.element; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:math' show min; | 8 import 'dart:math' show min; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| (...skipping 1593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1604 * Set whether this constructor represents a 'const' constructor. | 1604 * Set whether this constructor represents a 'const' constructor. |
| 1605 */ | 1605 */ |
| 1606 void set const2(bool isConst) { | 1606 void set const2(bool isConst) { |
| 1607 assert(serializedExecutable == null); | 1607 assert(serializedExecutable == null); |
| 1608 setModifier(Modifier.CONST, isConst); | 1608 setModifier(Modifier.CONST, isConst); |
| 1609 } | 1609 } |
| 1610 | 1610 |
| 1611 @override | 1611 @override |
| 1612 ClassElement get enclosingElement => super.enclosingElement as ClassElement; | 1612 ClassElement get enclosingElement => super.enclosingElement as ClassElement; |
| 1613 | 1613 |
| 1614 @override |
| 1615 TypeParameterizedElementMixin get enclosingTypeParameterContext => |
| 1616 super.enclosingElement as ClassElementImpl; |
| 1617 |
| 1614 /** | 1618 /** |
| 1615 * Set whether this constructor represents a factory method. | 1619 * Set whether this constructor represents a factory method. |
| 1616 */ | 1620 */ |
| 1617 void set factory(bool isFactory) { | 1621 void set factory(bool isFactory) { |
| 1618 assert(serializedExecutable == null); | 1622 assert(serializedExecutable == null); |
| 1619 setModifier(Modifier.FACTORY, isFactory); | 1623 setModifier(Modifier.FACTORY, isFactory); |
| 1620 } | 1624 } |
| 1621 | 1625 |
| 1622 @override | 1626 @override |
| 1623 bool get isConst { | 1627 bool get isConst { |
| (...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2685 } | 2689 } |
| 2686 buffer.writeCharCode(currentChar); | 2690 buffer.writeCharCode(currentChar); |
| 2687 } | 2691 } |
| 2688 } | 2692 } |
| 2689 } | 2693 } |
| 2690 | 2694 |
| 2691 /** | 2695 /** |
| 2692 * A base class for concrete implementations of an [ExecutableElement]. | 2696 * A base class for concrete implementations of an [ExecutableElement]. |
| 2693 */ | 2697 */ |
| 2694 abstract class ExecutableElementImpl extends ElementImpl | 2698 abstract class ExecutableElementImpl extends ElementImpl |
| 2699 with TypeParameterizedElementMixin |
| 2695 implements ExecutableElement { | 2700 implements ExecutableElement { |
| 2696 /** | 2701 /** |
| 2697 * The unlinked representation of the executable in the summary. | 2702 * The unlinked representation of the executable in the summary. |
| 2698 */ | 2703 */ |
| 2699 final UnlinkedExecutable serializedExecutable; | 2704 final UnlinkedExecutable serializedExecutable; |
| 2700 | 2705 |
| 2701 /** | 2706 /** |
| 2702 * A list containing all of the functions defined within this executable | 2707 * A list containing all of the functions defined within this executable |
| 2703 * element. | 2708 * element. |
| 2704 */ | 2709 */ |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2972 * [typeParameters]. | 2977 * [typeParameters]. |
| 2973 */ | 2978 */ |
| 2974 void set typeParameters(List<TypeParameterElement> typeParameters) { | 2979 void set typeParameters(List<TypeParameterElement> typeParameters) { |
| 2975 for (TypeParameterElement parameter in typeParameters) { | 2980 for (TypeParameterElement parameter in typeParameters) { |
| 2976 (parameter as TypeParameterElementImpl).enclosingElement = this; | 2981 (parameter as TypeParameterElementImpl).enclosingElement = this; |
| 2977 } | 2982 } |
| 2978 this._typeParameters = typeParameters; | 2983 this._typeParameters = typeParameters; |
| 2979 } | 2984 } |
| 2980 | 2985 |
| 2981 @override | 2986 @override |
| 2987 List<UnlinkedTypeParam> get unlinkedTypeParams => |
| 2988 serializedExecutable.typeParameters; |
| 2989 |
| 2990 @override |
| 2982 void appendTo(StringBuffer buffer) { | 2991 void appendTo(StringBuffer buffer) { |
| 2983 if (this.kind != ElementKind.GETTER) { | 2992 if (this.kind != ElementKind.GETTER) { |
| 2984 int typeParameterCount = _typeParameters.length; | 2993 int typeParameterCount = _typeParameters.length; |
| 2985 if (typeParameterCount > 0) { | 2994 if (typeParameterCount > 0) { |
| 2986 buffer.write('<'); | 2995 buffer.write('<'); |
| 2987 for (int i = 0; i < typeParameterCount; i++) { | 2996 for (int i = 0; i < typeParameterCount; i++) { |
| 2988 if (i > 0) { | 2997 if (i > 0) { |
| 2989 buffer.write(", "); | 2998 buffer.write(", "); |
| 2990 } | 2999 } |
| 2991 (_typeParameters[i] as TypeParameterElementImpl).appendTo(buffer); | 3000 (_typeParameters[i] as TypeParameterElementImpl).appendTo(buffer); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3244 List<ParameterElement> parameters, DartType returnType) | 3253 List<ParameterElement> parameters, DartType returnType) |
| 3245 : super("", -1) { | 3254 : super("", -1) { |
| 3246 synthetic = true; | 3255 synthetic = true; |
| 3247 this.returnType = returnType; | 3256 this.returnType = returnType; |
| 3248 this.parameters = parameters; | 3257 this.parameters = parameters; |
| 3249 | 3258 |
| 3250 type = new FunctionTypeImpl(this); | 3259 type = new FunctionTypeImpl(this); |
| 3251 } | 3260 } |
| 3252 | 3261 |
| 3253 @override | 3262 @override |
| 3263 TypeParameterizedElementMixin get enclosingTypeParameterContext { |
| 3264 Element enclosingElement = this.enclosingElement; |
| 3265 if (enclosingElement is TypeParameterizedElementMixin) { |
| 3266 return enclosingElement; |
| 3267 } |
| 3268 return null; |
| 3269 } |
| 3270 |
| 3271 @override |
| 3254 String get identifier { | 3272 String get identifier { |
| 3255 String identifier = super.identifier; | 3273 String identifier = super.identifier; |
| 3256 if (!isStatic) { | 3274 if (!isStatic) { |
| 3257 identifier += "@$nameOffset"; | 3275 identifier += "@$nameOffset"; |
| 3258 } | 3276 } |
| 3259 return identifier; | 3277 return identifier; |
| 3260 } | 3278 } |
| 3261 | 3279 |
| 3262 @override | 3280 @override |
| 3263 bool get isEntryPoint { | 3281 bool get isEntryPoint { |
| (...skipping 1277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4541 if ("unary-" == displayName) { | 4559 if ("unary-" == displayName) { |
| 4542 return "-"; | 4560 return "-"; |
| 4543 } | 4561 } |
| 4544 return displayName; | 4562 return displayName; |
| 4545 } | 4563 } |
| 4546 | 4564 |
| 4547 @override | 4565 @override |
| 4548 ClassElement get enclosingElement => super.enclosingElement as ClassElement; | 4566 ClassElement get enclosingElement => super.enclosingElement as ClassElement; |
| 4549 | 4567 |
| 4550 @override | 4568 @override |
| 4569 TypeParameterizedElementMixin get enclosingTypeParameterContext => |
| 4570 super.enclosingElement as ClassElementImpl; |
| 4571 |
| 4572 @override |
| 4551 bool get isOperator { | 4573 bool get isOperator { |
| 4552 String name = displayName; | 4574 String name = displayName; |
| 4553 if (name.isEmpty) { | 4575 if (name.isEmpty) { |
| 4554 return false; | 4576 return false; |
| 4555 } | 4577 } |
| 4556 int first = name.codeUnitAt(0); | 4578 int first = name.codeUnitAt(0); |
| 4557 return !((0x61 <= first && first <= 0x7A) || | 4579 return !((0x61 <= first && first <= 0x7A) || |
| 4558 (0x41 <= first && first <= 0x5A) || | 4580 (0x41 <= first && first <= 0x5A) || |
| 4559 first == 0x5F || | 4581 first == 0x5F || |
| 4560 first == 0x24); | 4582 first == 0x24); |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4978 * element. | 5000 * element. |
| 4979 */ | 5001 */ |
| 4980 List<ExecutableElement> _elements = PropertyAccessorElement.EMPTY_LIST; | 5002 List<ExecutableElement> _elements = PropertyAccessorElement.EMPTY_LIST; |
| 4981 | 5003 |
| 4982 MultiplyInheritedPropertyAccessorElementImpl(Identifier name) | 5004 MultiplyInheritedPropertyAccessorElementImpl(Identifier name) |
| 4983 : super.forNode(name) { | 5005 : super.forNode(name) { |
| 4984 synthetic = true; | 5006 synthetic = true; |
| 4985 } | 5007 } |
| 4986 | 5008 |
| 4987 @override | 5009 @override |
| 5010 TypeParameterizedElementMixin get enclosingTypeParameterContext => null; |
| 5011 |
| 5012 @override |
| 4988 List<ExecutableElement> get inheritedElements => _elements; | 5013 List<ExecutableElement> get inheritedElements => _elements; |
| 4989 | 5014 |
| 4990 void set inheritedElements(List<ExecutableElement> elements) { | 5015 void set inheritedElements(List<ExecutableElement> elements) { |
| 4991 this._elements = elements; | 5016 this._elements = elements; |
| 4992 } | 5017 } |
| 4993 } | 5018 } |
| 4994 | 5019 |
| 4995 /** | 5020 /** |
| 4996 * A [VariableElementImpl], which is not a parameter. | 5021 * A [VariableElementImpl], which is not a parameter. |
| 4997 */ | 5022 */ |
| (...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5555 @override | 5580 @override |
| 5556 String get displayName { | 5581 String get displayName { |
| 5557 if (serializedExecutable != null && isSetter) { | 5582 if (serializedExecutable != null && isSetter) { |
| 5558 String name = serializedExecutable.name; | 5583 String name = serializedExecutable.name; |
| 5559 assert(name.endsWith('=')); | 5584 assert(name.endsWith('=')); |
| 5560 return name.substring(0, name.length - 1); | 5585 return name.substring(0, name.length - 1); |
| 5561 } | 5586 } |
| 5562 return super.displayName; | 5587 return super.displayName; |
| 5563 } | 5588 } |
| 5564 | 5589 |
| 5590 @override |
| 5591 TypeParameterizedElementMixin get enclosingTypeParameterContext { |
| 5592 Element enclosingElement = this.enclosingElement; |
| 5593 if (enclosingElement is TypeParameterizedElementMixin) { |
| 5594 return enclosingElement; |
| 5595 } |
| 5596 return null; |
| 5597 } |
| 5598 |
| 5565 /** | 5599 /** |
| 5566 * Set whether this accessor is a getter. | 5600 * Set whether this accessor is a getter. |
| 5567 */ | 5601 */ |
| 5568 void set getter(bool isGetter) { | 5602 void set getter(bool isGetter) { |
| 5569 assert(serializedExecutable == null); | 5603 assert(serializedExecutable == null); |
| 5570 setModifier(Modifier.GETTER, isGetter); | 5604 setModifier(Modifier.GETTER, isGetter); |
| 5571 } | 5605 } |
| 5572 | 5606 |
| 5573 @override | 5607 @override |
| 5574 int get hashCode => JenkinsSmiHash.hash2(super.hashCode, isGetter ? 1 : 2); | 5608 int get hashCode => JenkinsSmiHash.hash2(super.hashCode, isGetter ? 1 : 2); |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6296 | 6330 |
| 6297 @override | 6331 @override |
| 6298 void visitElement(Element element) { | 6332 void visitElement(Element element) { |
| 6299 int offset = element.nameOffset; | 6333 int offset = element.nameOffset; |
| 6300 if (offset != -1) { | 6334 if (offset != -1) { |
| 6301 map[offset] = element; | 6335 map[offset] = element; |
| 6302 } | 6336 } |
| 6303 super.visitElement(element); | 6337 super.visitElement(element); |
| 6304 } | 6338 } |
| 6305 } | 6339 } |
| OLD | NEW |