| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 /** | 5 /** |
| 6 * This library is capable of producing linked summaries from unlinked | 6 * This library is capable of producing linked summaries from unlinked |
| 7 * ones (or prelinked ones). It functions by building a miniature | 7 * ones (or prelinked ones). It functions by building a miniature |
| 8 * element model to represent the contents of the summaries, and then | 8 * element model to represent the contents of the summaries, and then |
| 9 * scanning the element model to gather linked information and adding | 9 * scanning the element model to gather linked information and adding |
| 10 * it to the summary data structures. | 10 * it to the summary data structures. |
| (...skipping 2944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2955 | 2955 |
| 2956 @override | 2956 @override |
| 2957 List<FunctionElementForLink_Local_NonSynthetic> get functions => | 2957 List<FunctionElementForLink_Local_NonSynthetic> get functions => |
| 2958 _functions ??= _variable.unlinkedVariable.initializer.localFunctions | 2958 _functions ??= _variable.unlinkedVariable.initializer.localFunctions |
| 2959 .map((UnlinkedExecutable ex) => | 2959 .map((UnlinkedExecutable ex) => |
| 2960 new FunctionElementForLink_Local_NonSynthetic( | 2960 new FunctionElementForLink_Local_NonSynthetic( |
| 2961 _variable.compilationUnit, this, ex)) | 2961 _variable.compilationUnit, this, ex)) |
| 2962 .toList(); | 2962 .toList(); |
| 2963 | 2963 |
| 2964 @override | 2964 @override |
| 2965 String get identifier => ''; |
| 2966 |
| 2967 @override |
| 2965 DartType get returnType { | 2968 DartType get returnType { |
| 2966 // If this is a variable whose type needs inferring, infer it. | 2969 // If this is a variable whose type needs inferring, infer it. |
| 2967 if (_variable.hasImplicitType) { | 2970 if (_variable.hasImplicitType) { |
| 2968 return _variable.inferredType; | 2971 return _variable.inferredType; |
| 2969 } else { | 2972 } else { |
| 2970 // There's no reason linking should need to access the type of | 2973 // There's no reason linking should need to access the type of |
| 2971 // this FunctionElement, since the variable doesn't need its | 2974 // this FunctionElement, since the variable doesn't need its |
| 2972 // type inferred. | 2975 // type inferred. |
| 2973 assert(false); | 2976 assert(false); |
| 2974 // But for robustness, return the dynamic type. | 2977 // But for robustness, return the dynamic type. |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3078 | 3081 |
| 3079 @override | 3082 @override |
| 3080 List<FunctionElementForLink_Local_NonSynthetic> get functions => | 3083 List<FunctionElementForLink_Local_NonSynthetic> get functions => |
| 3081 _functions ??= _unlinkedExecutable.localFunctions | 3084 _functions ??= _unlinkedExecutable.localFunctions |
| 3082 .map((UnlinkedExecutable ex) => | 3085 .map((UnlinkedExecutable ex) => |
| 3083 new FunctionElementForLink_Local_NonSynthetic( | 3086 new FunctionElementForLink_Local_NonSynthetic( |
| 3084 compilationUnit, this, ex)) | 3087 compilationUnit, this, ex)) |
| 3085 .toList(); | 3088 .toList(); |
| 3086 | 3089 |
| 3087 @override | 3090 @override |
| 3091 String get identifier { |
| 3092 String identifier = _unlinkedExecutable.name; |
| 3093 Element enclosing = this.enclosingElement; |
| 3094 if (enclosing is ExecutableElement) { |
| 3095 int id = |
| 3096 ElementImpl.findElementIndexUsingIdentical(enclosing.functions, this); |
| 3097 identifier += "@$id"; |
| 3098 } |
| 3099 return identifier; |
| 3100 } |
| 3101 |
| 3102 @override |
| 3088 bool get _hasTypeBeenInferred => _inferredReturnType != null; | 3103 bool get _hasTypeBeenInferred => _inferredReturnType != null; |
| 3089 | 3104 |
| 3090 @override | 3105 @override |
| 3091 DartType buildType( | 3106 DartType buildType( |
| 3092 DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) { | 3107 DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) { |
| 3093 assert(implicitFunctionTypeIndices.isEmpty); | 3108 assert(implicitFunctionTypeIndices.isEmpty); |
| 3094 return type; | 3109 return type; |
| 3095 } | 3110 } |
| 3096 | 3111 |
| 3097 @override | 3112 @override |
| (...skipping 1876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4974 } | 4989 } |
| 4975 } | 4990 } |
| 4976 | 4991 |
| 4977 @override | 4992 @override |
| 4978 PropertyAccessorElementForLink_Variable get getter => | 4993 PropertyAccessorElementForLink_Variable get getter => |
| 4979 _getter ??= new PropertyAccessorElementForLink_Variable(this, false); | 4994 _getter ??= new PropertyAccessorElementForLink_Variable(this, false); |
| 4980 | 4995 |
| 4981 @override | 4996 @override |
| 4982 bool get hasImplicitType => unlinkedVariable.type == null; | 4997 bool get hasImplicitType => unlinkedVariable.type == null; |
| 4983 | 4998 |
| 4999 @override |
| 5000 String get identifier => unlinkedVariable.name; |
| 5001 |
| 4984 /** | 5002 /** |
| 4985 * Return the inferred type of the variable element. Should only be called if | 5003 * Return the inferred type of the variable element. Should only be called if |
| 4986 * no type was explicitly declared. | 5004 * no type was explicitly declared. |
| 4987 */ | 5005 */ |
| 4988 DartType get inferredType { | 5006 DartType get inferredType { |
| 4989 // We should only try to infer a type when none is explicitly declared. | 5007 // We should only try to infer a type when none is explicitly declared. |
| 4990 assert(unlinkedVariable.type == null); | 5008 assert(unlinkedVariable.type == null); |
| 4991 if (_inferredType == null) { | 5009 if (_inferredType == null) { |
| 4992 if (_typeInferenceNode != null) { | 5010 if (_typeInferenceNode != null) { |
| 4993 assert(Linker._initializerTypeInferenceCycle == null); | 5011 assert(Linker._initializerTypeInferenceCycle == null); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5061 * there are no type parameters in scope. | 5079 * there are no type parameters in scope. |
| 5062 */ | 5080 */ |
| 5063 TypeParameterizedElementMixin get _typeParameterContext; | 5081 TypeParameterizedElementMixin get _typeParameterContext; |
| 5064 | 5082 |
| 5065 @override | 5083 @override |
| 5066 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 5084 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 5067 | 5085 |
| 5068 @override | 5086 @override |
| 5069 String toString() => '$enclosingElement.$name'; | 5087 String toString() => '$enclosingElement.$name'; |
| 5070 } | 5088 } |
| OLD | NEW |