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

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

Issue 2435313002: More improvements to DeclarationResolver. (Closed)
Patch Set: Created 4 years, 1 month 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
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 852 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 @override 863 @override
864 String get name { 864 String get name {
865 if (_unlinkedClass != null) { 865 if (_unlinkedClass != null) {
866 return _unlinkedClass.name; 866 return _unlinkedClass.name;
867 } 867 }
868 return super.name; 868 return super.name;
869 } 869 }
870 870
871 @override 871 @override
872 int get nameOffset { 872 int get nameOffset {
873 if (_unlinkedClass != null) { 873 int offset = super.nameOffset;
874 if (offset == 0 && _unlinkedClass != null) {
874 return _unlinkedClass.nameOffset; 875 return _unlinkedClass.nameOffset;
875 } 876 }
876 return super.nameOffset; 877 return offset;
877 } 878 }
878 879
879 @override 880 @override
880 InterfaceType get supertype { 881 InterfaceType get supertype {
881 if (_unlinkedClass != null && _supertype == null) { 882 if (_unlinkedClass != null && _supertype == null) {
882 if (_unlinkedClass.supertype != null) { 883 if (_unlinkedClass.supertype != null) {
883 DartType type = enclosingUnit.resynthesizerContext 884 DartType type = enclosingUnit.resynthesizerContext
884 .resolveTypeRef(_unlinkedClass.supertype, this); 885 .resolveTypeRef(_unlinkedClass.supertype, this);
885 if (type is InterfaceType) { 886 if (type is InterfaceType) {
886 _supertype = type; 887 _supertype = type;
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after
1844 @override 1845 @override
1845 String get name { 1846 String get name {
1846 if (_unlinkedEnumValue != null) { 1847 if (_unlinkedEnumValue != null) {
1847 return _unlinkedEnumValue.name; 1848 return _unlinkedEnumValue.name;
1848 } 1849 }
1849 return super.name; 1850 return super.name;
1850 } 1851 }
1851 1852
1852 @override 1853 @override
1853 int get nameOffset { 1854 int get nameOffset {
1854 if (_unlinkedEnumValue != null) { 1855 int offset = super.nameOffset;
1856 if (offset == -1 && _unlinkedEnumValue != null) {
1855 return _unlinkedEnumValue.nameOffset; 1857 return _unlinkedEnumValue.nameOffset;
1856 } 1858 }
1857 return super.nameOffset; 1859 return offset;
1858 } 1860 }
1859 1861
1860 @override 1862 @override
1861 InterfaceType get type => _enum.type; 1863 InterfaceType get type => _enum.type;
1862 } 1864 }
1863 1865
1864 /** 1866 /**
1865 * The synthetic `values` field of an enum. 1867 * The synthetic `values` field of an enum.
1866 */ 1868 */
1867 class ConstFieldElementImpl_EnumValues extends ConstFieldElementImpl_ofEnum { 1869 class ConstFieldElementImpl_EnumValues extends ConstFieldElementImpl_ofEnum {
(...skipping 1602 matching lines...) Expand 10 before | Expand all | Expand 10 after
3470 @override 3472 @override
3471 String get name { 3473 String get name {
3472 if (_unlinkedEnum != null) { 3474 if (_unlinkedEnum != null) {
3473 return _unlinkedEnum.name; 3475 return _unlinkedEnum.name;
3474 } 3476 }
3475 return super.name; 3477 return super.name;
3476 } 3478 }
3477 3479
3478 @override 3480 @override
3479 int get nameOffset { 3481 int get nameOffset {
3480 if (_unlinkedEnum != null) { 3482 int offset = super.nameOffset;
3483 if (offset == 0 && _unlinkedEnum != null && _unlinkedEnum.nameOffset != 0) {
3481 return _unlinkedEnum.nameOffset; 3484 return _unlinkedEnum.nameOffset;
3482 } 3485 }
3483 return super.nameOffset; 3486 return offset;
3484 } 3487 }
3485 3488
3486 @override 3489 @override
3487 InterfaceType get supertype => context.typeProvider.objectType; 3490 InterfaceType get supertype => context.typeProvider.objectType;
3488 3491
3489 @override 3492 @override
3490 InterfaceType get type { 3493 InterfaceType get type {
3491 if (_type == null) { 3494 if (_type == null) {
3492 InterfaceTypeImpl type = new InterfaceTypeImpl(this); 3495 InterfaceTypeImpl type = new InterfaceTypeImpl(this);
3493 type.typeArguments = const <DartType>[]; 3496 type.typeArguments = const <DartType>[];
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
3819 @override 3822 @override
3820 String get name { 3823 String get name {
3821 if (serializedExecutable != null) { 3824 if (serializedExecutable != null) {
3822 return serializedExecutable.name; 3825 return serializedExecutable.name;
3823 } 3826 }
3824 return super.name; 3827 return super.name;
3825 } 3828 }
3826 3829
3827 @override 3830 @override
3828 int get nameOffset { 3831 int get nameOffset {
3829 if (serializedExecutable != null) { 3832 int offset = super.nameOffset;
3833 if (offset == 0 && serializedExecutable != null) {
3830 return serializedExecutable.nameOffset; 3834 return serializedExecutable.nameOffset;
3831 } 3835 }
3832 return super.nameOffset; 3836 return offset;
3833 } 3837 }
3834 3838
3835 @override 3839 @override
3836 List<ParameterElement> get parameters { 3840 List<ParameterElement> get parameters {
3837 if (serializedExecutable != null) { 3841 if (serializedExecutable != null) {
3838 _parameters ??= ParameterElementImpl.resynthesizeList( 3842 _parameters ??= ParameterElementImpl.resynthesizeList(
3839 serializedExecutable.parameters, this); 3843 serializedExecutable.parameters, this);
3840 } 3844 }
3841 return _parameters ?? const <ParameterElement>[]; 3845 return _parameters ?? const <ParameterElement>[];
3842 } 3846 }
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
4096 return super.metadata; 4100 return super.metadata;
4097 } 4101 }
4098 4102
4099 void set metadata(List<ElementAnnotation> metadata) { 4103 void set metadata(List<ElementAnnotation> metadata) {
4100 assert(_unlinkedExportNonPublic == null); 4104 assert(_unlinkedExportNonPublic == null);
4101 super.metadata = metadata; 4105 super.metadata = metadata;
4102 } 4106 }
4103 4107
4104 @override 4108 @override
4105 int get nameOffset { 4109 int get nameOffset {
4106 if (_unlinkedExportNonPublic != null) { 4110 int offset = super.nameOffset;
4111 if (offset == 0 && _unlinkedExportNonPublic != null) {
4107 return _unlinkedExportNonPublic.offset; 4112 return _unlinkedExportNonPublic.offset;
4108 } 4113 }
4109 return super.nameOffset; 4114 return offset;
4110 } 4115 }
4111 4116
4112 @override 4117 @override
4113 String get uri { 4118 String get uri {
4114 if (_unlinkedExportPublic != null) { 4119 if (_unlinkedExportPublic != null) {
4115 return _selectedUri ??= _selectUri( 4120 return _selectedUri ??= _selectUri(
4116 _unlinkedExportPublic.uri, _unlinkedExportPublic.configurations); 4121 _unlinkedExportPublic.uri, _unlinkedExportPublic.configurations);
4117 } 4122 }
4118 return super.uri; 4123 return super.uri;
4119 } 4124 }
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
4669 @override 4674 @override
4670 String get name { 4675 String get name {
4671 if (_unlinkedTypedef != null) { 4676 if (_unlinkedTypedef != null) {
4672 return _unlinkedTypedef.name; 4677 return _unlinkedTypedef.name;
4673 } 4678 }
4674 return super.name; 4679 return super.name;
4675 } 4680 }
4676 4681
4677 @override 4682 @override
4678 int get nameOffset { 4683 int get nameOffset {
4679 if (_unlinkedTypedef != null) { 4684 int offset = super.nameOffset;
4685 if (offset == 0 && _unlinkedTypedef != null) {
4680 return _unlinkedTypedef.nameOffset; 4686 return _unlinkedTypedef.nameOffset;
4681 } 4687 }
4682 return super.nameOffset; 4688 return offset;
4683 } 4689 }
4684 4690
4685 @override 4691 @override
4686 List<ParameterElement> get parameters { 4692 List<ParameterElement> get parameters {
4687 if (_unlinkedTypedef != null) { 4693 if (_unlinkedTypedef != null) {
4688 _parameters ??= ParameterElementImpl.resynthesizeList( 4694 _parameters ??= ParameterElementImpl.resynthesizeList(
4689 _unlinkedTypedef.parameters, this); 4695 _unlinkedTypedef.parameters, this);
4690 } 4696 }
4691 return _parameters ?? const <ParameterElement>[]; 4697 return _parameters ?? const <ParameterElement>[];
4692 } 4698 }
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
5006 return super.metadata; 5012 return super.metadata;
5007 } 5013 }
5008 5014
5009 void set metadata(List<ElementAnnotation> metadata) { 5015 void set metadata(List<ElementAnnotation> metadata) {
5010 assert(_unlinkedImport == null); 5016 assert(_unlinkedImport == null);
5011 super.metadata = metadata; 5017 super.metadata = metadata;
5012 } 5018 }
5013 5019
5014 @override 5020 @override
5015 int get nameOffset { 5021 int get nameOffset {
5016 if (_unlinkedImport != null) { 5022 int offset = super.nameOffset;
5023 if (offset == 0 && _unlinkedImport != null) {
5017 if (_unlinkedImport.isImplicit) { 5024 if (_unlinkedImport.isImplicit) {
5018 return -1; 5025 return -1;
5019 } 5026 }
5020 return _unlinkedImport.offset; 5027 return _unlinkedImport.offset;
5021 } 5028 }
5022 return super.nameOffset; 5029 return offset;
5023 } 5030 }
5024 5031
5025 PrefixElement get prefix { 5032 PrefixElement get prefix {
5026 if (_unlinkedImport != null) { 5033 if (_unlinkedImport != null) {
5027 if (_unlinkedImport.prefixReference != 0 && _prefix == null) { 5034 if (_unlinkedImport.prefixReference != 0 && _prefix == null) {
5028 LibraryElementImpl library = enclosingElement as LibraryElementImpl; 5035 LibraryElementImpl library = enclosingElement as LibraryElementImpl;
5029 _prefix = new PrefixElementImpl.forSerialized(_unlinkedImport, library); 5036 _prefix = new PrefixElementImpl.forSerialized(_unlinkedImport, library);
5030 } 5037 }
5031 } 5038 }
5032 return _prefix; 5039 return _prefix;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
5215 @override 5222 @override
5216 String get name { 5223 String get name {
5217 if (_unlinkedLabel != null) { 5224 if (_unlinkedLabel != null) {
5218 return _unlinkedLabel.name; 5225 return _unlinkedLabel.name;
5219 } 5226 }
5220 return super.name; 5227 return super.name;
5221 } 5228 }
5222 5229
5223 @override 5230 @override
5224 int get nameOffset { 5231 int get nameOffset {
5225 if (_unlinkedLabel != null) { 5232 int offset = super.nameOffset;
5233 if (offset == 0 &&
5234 _unlinkedLabel != null &&
5235 _unlinkedLabel.nameOffset != 0) {
5226 return _unlinkedLabel.nameOffset; 5236 return _unlinkedLabel.nameOffset;
5227 } 5237 }
5228 return super.nameOffset; 5238 return offset;
5229 } 5239 }
5230 5240
5231 @override 5241 @override
5232 accept(ElementVisitor visitor) => visitor.visitLabelElement(this); 5242 accept(ElementVisitor visitor) => visitor.visitLabelElement(this);
5233 5243
5234 /** 5244 /**
5235 * Create and return [LabelElement]s for the given [unlinkedLabels]. 5245 * Create and return [LabelElement]s for the given [unlinkedLabels].
5236 */ 5246 */
5237 static List<LabelElement> resynthesizeList( 5247 static List<LabelElement> resynthesizeList(
5238 ExecutableElementImpl enclosingExecutable, 5248 ExecutableElementImpl enclosingExecutable,
(...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after
6756 @override 6766 @override
6757 String get name { 6767 String get name {
6758 if (_unlinkedVariable != null) { 6768 if (_unlinkedVariable != null) {
6759 return _unlinkedVariable.name; 6769 return _unlinkedVariable.name;
6760 } 6770 }
6761 return super.name; 6771 return super.name;
6762 } 6772 }
6763 6773
6764 @override 6774 @override
6765 int get nameOffset { 6775 int get nameOffset {
6766 if (_unlinkedVariable != null) { 6776 int offset = super.nameOffset;
6777 if (offset == 0 && _unlinkedVariable != null) {
6767 return _unlinkedVariable.nameOffset; 6778 return _unlinkedVariable.nameOffset;
6768 } 6779 }
6769 return super.nameOffset; 6780 return offset;
6770 } 6781 }
6771 6782
6772 @override 6783 @override
6773 DartType get type { 6784 DartType get type {
6774 if (_unlinkedVariable != null && _type == null) { 6785 if (_unlinkedVariable != null && _type == null) {
6775 _type = enclosingUnit.resynthesizerContext.resolveLinkedType( 6786 _type = enclosingUnit.resynthesizerContext.resolveLinkedType(
6776 _unlinkedVariable.inferredTypeSlot, typeParameterContext) ?? 6787 _unlinkedVariable.inferredTypeSlot, typeParameterContext) ??
6777 enclosingUnit.resynthesizerContext 6788 enclosingUnit.resynthesizerContext
6778 .resolveTypeRef(_unlinkedVariable.type, typeParameterContext); 6789 .resolveTypeRef(_unlinkedVariable.type, typeParameterContext);
6779 } 6790 }
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
7060 @override 7071 @override
7061 String get name { 7072 String get name {
7062 if (_unlinkedParam != null) { 7073 if (_unlinkedParam != null) {
7063 return _unlinkedParam.name; 7074 return _unlinkedParam.name;
7064 } 7075 }
7065 return super.name; 7076 return super.name;
7066 } 7077 }
7067 7078
7068 @override 7079 @override
7069 int get nameOffset { 7080 int get nameOffset {
7070 if (_unlinkedParam != null) { 7081 int offset = super.nameOffset;
7082 if (offset == 0 && _unlinkedParam != null) {
7071 if (isSynthetic) { 7083 if (isSynthetic) {
7072 return -1; 7084 return -1;
7073 } 7085 }
7074 return _unlinkedParam.nameOffset; 7086 return _unlinkedParam.nameOffset;
7075 } 7087 }
7076 return super.nameOffset; 7088 return offset;
7077 } 7089 }
7078 7090
7079 @override 7091 @override
7080 ParameterKind get parameterKind { 7092 ParameterKind get parameterKind {
7081 if (_unlinkedParam != null && _parameterKind == null) { 7093 if (_unlinkedParam != null && _parameterKind == null) {
7082 switch (_unlinkedParam.kind) { 7094 switch (_unlinkedParam.kind) {
7083 case UnlinkedParamKind.named: 7095 case UnlinkedParamKind.named:
7084 _parameterKind = ParameterKind.NAMED; 7096 _parameterKind = ParameterKind.NAMED;
7085 break; 7097 break;
7086 case UnlinkedParamKind.positional: 7098 case UnlinkedParamKind.positional:
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
7382 LibraryElementImpl library = enclosingElement as LibraryElementImpl; 7394 LibraryElementImpl library = enclosingElement as LibraryElementImpl;
7383 int prefixId = _unlinkedImport.prefixReference; 7395 int prefixId = _unlinkedImport.prefixReference;
7384 return _name = library._unlinkedDefiningUnit.references[prefixId].name; 7396 return _name = library._unlinkedDefiningUnit.references[prefixId].name;
7385 } 7397 }
7386 } 7398 }
7387 return super.name; 7399 return super.name;
7388 } 7400 }
7389 7401
7390 @override 7402 @override
7391 int get nameOffset { 7403 int get nameOffset {
7392 if (_unlinkedImport != null) { 7404 int offset = super.nameOffset;
7405 if (offset == 0 && _unlinkedImport != null) {
7393 return _unlinkedImport.prefixOffset; 7406 return _unlinkedImport.prefixOffset;
7394 } 7407 }
7395 return super.nameOffset; 7408 return offset;
7396 } 7409 }
7397 7410
7398 @override 7411 @override
7399 accept(ElementVisitor visitor) => visitor.visitPrefixElement(this); 7412 accept(ElementVisitor visitor) => visitor.visitPrefixElement(this);
7400 7413
7401 @override 7414 @override
7402 void appendTo(StringBuffer buffer) { 7415 void appendTo(StringBuffer buffer) {
7403 buffer.write("as "); 7416 buffer.write("as ");
7404 super.appendTo(buffer); 7417 super.appendTo(buffer);
7405 } 7418 }
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
8030 @override 8043 @override
8031 String get name { 8044 String get name {
8032 if (_unlinkedTypeParam != null) { 8045 if (_unlinkedTypeParam != null) {
8033 return _unlinkedTypeParam.name; 8046 return _unlinkedTypeParam.name;
8034 } 8047 }
8035 return super.name; 8048 return super.name;
8036 } 8049 }
8037 8050
8038 @override 8051 @override
8039 int get nameOffset { 8052 int get nameOffset {
8040 if (_unlinkedTypeParam != null) { 8053 int offset = super.nameOffset;
8054 if (offset == 0 && _unlinkedTypeParam != null) {
8041 return _unlinkedTypeParam.nameOffset; 8055 return _unlinkedTypeParam.nameOffset;
8042 } 8056 }
8043 return super.nameOffset; 8057 return offset;
8044 } 8058 }
8045 8059
8046 TypeParameterType get type { 8060 TypeParameterType get type {
8047 if (_unlinkedTypeParam != null) { 8061 if (_unlinkedTypeParam != null) {
8048 _type ??= new TypeParameterTypeImpl(this); 8062 _type ??= new TypeParameterTypeImpl(this);
8049 } 8063 }
8050 return _type; 8064 return _type;
8051 } 8065 }
8052 8066
8053 void set type(TypeParameterType type) { 8067 void set type(TypeParameterType type) {
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
8452 8466
8453 @override 8467 @override
8454 void visitElement(Element element) { 8468 void visitElement(Element element) {
8455 int offset = element.nameOffset; 8469 int offset = element.nameOffset;
8456 if (offset != -1) { 8470 if (offset != -1) {
8457 map[offset] = element; 8471 map[offset] = element;
8458 } 8472 }
8459 super.visitElement(element); 8473 super.visitElement(element);
8460 } 8474 }
8461 } 8475 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/builder.dart ('k') | pkg/analyzer/lib/src/generated/declaration_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698