Chromium Code Reviews| 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 3099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3110 @override | 3110 @override |
| 3111 int get nameOffset { | 3111 int get nameOffset { |
| 3112 if (serializedExecutable != null) { | 3112 if (serializedExecutable != null) { |
| 3113 return serializedExecutable.nameOffset; | 3113 return serializedExecutable.nameOffset; |
| 3114 } | 3114 } |
| 3115 return super.nameOffset; | 3115 return super.nameOffset; |
| 3116 } | 3116 } |
| 3117 | 3117 |
| 3118 @override | 3118 @override |
| 3119 List<ParameterElement> get parameters { | 3119 List<ParameterElement> get parameters { |
| 3120 if (serializedExecutable != null && _parameters == null) { | |
| 3121 List<UnlinkedParam> unlinkedParameters = serializedExecutable.parameters; | |
| 3122 int length = unlinkedParameters.length; | |
| 3123 if (length != 0) { | |
| 3124 List<ParameterElementImpl> parameters = | |
| 3125 new List<ParameterElementImpl>(length); | |
| 3126 for (int i = 0; i < length; i++) { | |
| 3127 parameters[i] = new ParameterElementImpl.forSerializedFactory( | |
| 3128 unlinkedParameters[i], this); | |
| 3129 } | |
| 3130 _parameters = parameters; | |
| 3131 } else { | |
| 3132 _parameters = const <ParameterElement>[]; | |
| 3133 } | |
| 3134 } | |
| 3120 return _parameters ?? const <ParameterElement>[]; | 3135 return _parameters ?? const <ParameterElement>[]; |
| 3121 } | 3136 } |
| 3122 | 3137 |
| 3123 /** | 3138 /** |
| 3124 * Set the parameters defined by this executable element to the given | 3139 * Set the parameters defined by this executable element to the given |
| 3125 * [parameters]. | 3140 * [parameters]. |
| 3126 */ | 3141 */ |
| 3127 void set parameters(List<ParameterElement> parameters) { | 3142 void set parameters(List<ParameterElement> parameters) { |
| 3143 assert(serializedExecutable == null); | |
| 3128 for (ParameterElement parameter in parameters) { | 3144 for (ParameterElement parameter in parameters) { |
| 3129 (parameter as ParameterElementImpl).enclosingElement = this; | 3145 (parameter as ParameterElementImpl).enclosingElement = this; |
| 3130 } | 3146 } |
| 3131 this._parameters = parameters; | 3147 this._parameters = parameters; |
| 3132 } | 3148 } |
| 3133 | 3149 |
| 3134 @override | 3150 @override |
| 3135 DartType get returnType { | 3151 DartType get returnType { |
| 3136 if (serializedExecutable != null && _returnType == null) { | 3152 if (serializedExecutable != null && _returnType == null) { |
| 3137 bool isSetter = | 3153 bool isSetter = |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3723 * Implementation of [FunctionElementImpl] for a synthetic function element | 3739 * Implementation of [FunctionElementImpl] for a synthetic function element |
| 3724 * that was synthesized by a LUB computation. | 3740 * that was synthesized by a LUB computation. |
| 3725 */ | 3741 */ |
| 3726 class FunctionElementImpl_forLUB extends FunctionElementImpl { | 3742 class FunctionElementImpl_forLUB extends FunctionElementImpl { |
| 3727 @override | 3743 @override |
| 3728 final CompilationUnitElementImpl enclosingUnit; | 3744 final CompilationUnitElementImpl enclosingUnit; |
| 3729 | 3745 |
| 3730 @override | 3746 @override |
| 3731 final TypeParameterizedElementMixin enclosingTypeParameterContext; | 3747 final TypeParameterizedElementMixin enclosingTypeParameterContext; |
| 3732 | 3748 |
| 3749 final EntityRef _entityRef; | |
| 3750 | |
| 3733 FunctionElementImpl_forLUB( | 3751 FunctionElementImpl_forLUB( |
| 3734 this.enclosingUnit, this.enclosingTypeParameterContext) | 3752 this.enclosingUnit, this.enclosingTypeParameterContext, this._entityRef) |
| 3735 : super('', -1); | 3753 : super('', -1); |
| 3736 | 3754 |
| 3737 @override | 3755 @override |
| 3738 bool get isSynthetic => true; | 3756 bool get isSynthetic => true; |
| 3757 | |
| 3758 @override | |
| 3759 List<ParameterElement> get parameters { | |
| 3760 return _parameters ??= _entityRef.syntheticParams | |
| 3761 .map((UnlinkedParam param) => | |
| 3762 new ParameterElementImpl.forSerializedFactory(param, this, | |
| 3763 synthetic: true)) | |
| 3764 .toList(growable: false); | |
| 3765 } | |
| 3766 | |
| 3767 @override | |
| 3768 void set parameters(List<ParameterElement> parameters) { | |
| 3769 assert(false); | |
| 3770 } | |
| 3771 | |
| 3772 @override | |
| 3773 DartType get returnType { | |
| 3774 return _returnType ??= enclosingUnit.resynthesizerContext | |
| 3775 .resolveTypeRef(_entityRef.syntheticReturnType, typeParameterContext); | |
| 3776 } | |
| 3777 | |
| 3778 @override | |
| 3779 void set returnType(DartType returnType) { | |
| 3780 assert(false); | |
| 3781 } | |
| 3782 | |
| 3783 @override | |
| 3784 FunctionType get type { | |
| 3785 return _type ??= | |
| 3786 new FunctionTypeImpl.elementWithNameAndArgs(this, null, null, false); | |
| 3787 } | |
| 3788 | |
| 3789 @override | |
| 3790 void set type(FunctionType type) { | |
| 3791 assert(false); | |
| 3792 } | |
| 3739 } | 3793 } |
| 3740 | 3794 |
| 3741 /** | 3795 /** |
| 3742 * A concrete implementation of a [FunctionTypeAliasElement]. | 3796 * A concrete implementation of a [FunctionTypeAliasElement]. |
| 3743 */ | 3797 */ |
| 3744 class FunctionTypeAliasElementImpl extends ElementImpl | 3798 class FunctionTypeAliasElementImpl extends ElementImpl |
| 3745 with TypeParameterizedElementMixin | 3799 with TypeParameterizedElementMixin |
| 3746 implements FunctionTypeAliasElement { | 3800 implements FunctionTypeAliasElement { |
| 3747 /** | 3801 /** |
| 3748 * The unlinked representation of the type in the summary. | 3802 * The unlinked representation of the type in the summary. |
| 3749 */ | 3803 */ |
| 3750 final UnlinkedTypedef _unlinkedTypedef; | 3804 final UnlinkedTypedef _unlinkedTypedef; |
| 3751 | 3805 |
| 3752 /** | 3806 /** |
| 3753 * A list containing all of the parameters defined by this type alias. | 3807 * A list containing all of the parameters defined by this type alias. |
| 3754 */ | 3808 */ |
| 3755 List<ParameterElement> _parameters = ParameterElement.EMPTY_LIST; | 3809 List<ParameterElement> _parameters; |
| 3756 | 3810 |
| 3757 /** | 3811 /** |
| 3758 * The return type defined by this type alias. | 3812 * The return type defined by this type alias. |
| 3759 */ | 3813 */ |
| 3760 DartType _returnType; | 3814 DartType _returnType; |
| 3761 | 3815 |
| 3762 /** | 3816 /** |
| 3763 * The type of function defined by this type alias. | 3817 * The type of function defined by this type alias. |
| 3764 */ | 3818 */ |
| 3765 FunctionType _type; | 3819 FunctionType _type; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3866 | 3920 |
| 3867 @override | 3921 @override |
| 3868 int get nameOffset { | 3922 int get nameOffset { |
| 3869 if (_unlinkedTypedef != null) { | 3923 if (_unlinkedTypedef != null) { |
| 3870 return _unlinkedTypedef.nameOffset; | 3924 return _unlinkedTypedef.nameOffset; |
| 3871 } | 3925 } |
| 3872 return super.nameOffset; | 3926 return super.nameOffset; |
| 3873 } | 3927 } |
| 3874 | 3928 |
| 3875 @override | 3929 @override |
| 3876 List<ParameterElement> get parameters => _parameters; | 3930 List<ParameterElement> get parameters { |
| 3931 if (_unlinkedTypedef != null && _parameters == null) { | |
| 3932 List<UnlinkedParam> unlinkedParameters = _unlinkedTypedef.parameters; | |
| 3933 int length = unlinkedParameters.length; | |
| 3934 if (length != 0) { | |
| 3935 List<ParameterElementImpl> parameters = | |
| 3936 new List<ParameterElementImpl>(length); | |
| 3937 for (int i = 0; i < length; i++) { | |
| 3938 parameters[i] = new ParameterElementImpl.forSerializedFactory( | |
| 3939 unlinkedParameters[i], this); | |
| 3940 } | |
| 3941 _parameters = parameters; | |
| 3942 } else { | |
| 3943 _parameters = const <ParameterElement>[]; | |
| 3944 } | |
| 3945 } | |
| 3946 return _parameters ?? const <ParameterElement>[]; | |
|
Brian Wilkerson
2016/05/27 22:38:15
Seems like I've seen a lot of code with this same
scheglov
2016/05/28 02:00:35
Good point.
Done.
| |
| 3947 } | |
| 3877 | 3948 |
| 3878 /** | 3949 /** |
| 3879 * Set the parameters defined by this type alias to the given [parameters]. | 3950 * Set the parameters defined by this type alias to the given [parameters]. |
| 3880 */ | 3951 */ |
| 3881 void set parameters(List<ParameterElement> parameters) { | 3952 void set parameters(List<ParameterElement> parameters) { |
| 3953 assert(_unlinkedTypedef == null); | |
| 3882 if (parameters != null) { | 3954 if (parameters != null) { |
| 3883 for (ParameterElement parameter in parameters) { | 3955 for (ParameterElement parameter in parameters) { |
| 3884 (parameter as ParameterElementImpl).enclosingElement = this; | 3956 (parameter as ParameterElementImpl).enclosingElement = this; |
| 3885 } | 3957 } |
| 3886 } | 3958 } |
| 3887 this._parameters = parameters; | 3959 this._parameters = parameters; |
| 3888 } | 3960 } |
| 3889 | 3961 |
| 3890 @override | 3962 @override |
| 3891 DartType get returnType { | 3963 DartType get returnType { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3976 buffer.write(returnType); | 4048 buffer.write(returnType); |
| 3977 } | 4049 } |
| 3978 } | 4050 } |
| 3979 | 4051 |
| 3980 @override | 4052 @override |
| 3981 FunctionTypeAlias computeNode() => | 4053 FunctionTypeAlias computeNode() => |
| 3982 getNodeMatching((node) => node is FunctionTypeAlias); | 4054 getNodeMatching((node) => node is FunctionTypeAlias); |
| 3983 | 4055 |
| 3984 @override | 4056 @override |
| 3985 ElementImpl getChild(String identifier) { | 4057 ElementImpl getChild(String identifier) { |
| 3986 for (ParameterElement parameter in _parameters) { | 4058 for (ParameterElement parameter in parameters) { |
| 3987 ParameterElementImpl parameterImpl = parameter; | 4059 ParameterElementImpl parameterImpl = parameter; |
| 3988 if (parameterImpl.identifier == identifier) { | 4060 if (parameterImpl.identifier == identifier) { |
| 3989 return parameterImpl; | 4061 return parameterImpl; |
| 3990 } | 4062 } |
| 3991 } | 4063 } |
| 3992 for (TypeParameterElement typeParameter in _typeParameters) { | 4064 for (TypeParameterElement typeParameter in _typeParameters) { |
| 3993 TypeParameterElementImpl typeParameterImpl = typeParameter; | 4065 TypeParameterElementImpl typeParameterImpl = typeParameter; |
| 3994 if (typeParameterImpl.identifier == identifier) { | 4066 if (typeParameterImpl.identifier == identifier) { |
| 3995 return typeParameterImpl; | 4067 return typeParameterImpl; |
| 3996 } | 4068 } |
| 3997 } | 4069 } |
| 3998 return null; | 4070 return null; |
| 3999 } | 4071 } |
| 4000 | 4072 |
| 4001 @override | 4073 @override |
| 4002 void visitChildren(ElementVisitor visitor) { | 4074 void visitChildren(ElementVisitor visitor) { |
| 4003 super.visitChildren(visitor); | 4075 super.visitChildren(visitor); |
| 4004 safelyVisitChildren(_parameters, visitor); | 4076 safelyVisitChildren(parameters, visitor); |
| 4005 safelyVisitChildren(_typeParameters, visitor); | 4077 safelyVisitChildren(_typeParameters, visitor); |
| 4006 } | 4078 } |
| 4007 } | 4079 } |
| 4008 | 4080 |
| 4009 /** | 4081 /** |
| 4010 * A concrete implementation of a [HideElementCombinator]. | 4082 * A concrete implementation of a [HideElementCombinator]. |
| 4011 */ | 4083 */ |
| 4012 class HideElementCombinatorImpl implements HideElementCombinator { | 4084 class HideElementCombinatorImpl implements HideElementCombinator { |
| 4013 /** | 4085 /** |
| 4014 * The unlinked representation of the combinator in the summary. | 4086 * The unlinked representation of the combinator in the summary. |
| (...skipping 3528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7543 | 7615 |
| 7544 @override | 7616 @override |
| 7545 void visitElement(Element element) { | 7617 void visitElement(Element element) { |
| 7546 int offset = element.nameOffset; | 7618 int offset = element.nameOffset; |
| 7547 if (offset != -1) { | 7619 if (offset != -1) { |
| 7548 map[offset] = element; | 7620 map[offset] = element; |
| 7549 } | 7621 } |
| 7550 super.visitElement(element); | 7622 super.visitElement(element); |
| 7551 } | 7623 } |
| 7552 } | 7624 } |
| OLD | NEW |