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 |