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

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

Issue 2002483002: Make ExecutableElementImpl implement TypeParameterizedElementMixin. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/resynthesize_test.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 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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/resynthesize_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698