| 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 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |