| Index: pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| index b7b1183fced1ee0034ddec6180a91ff59400de0a..f03b24a9218e49c1745b36e770fbd5434c6040b9 100644
|
| --- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
|
| @@ -63,7 +63,7 @@ abstract class TypeInformation {
|
| final MemberTypeInformation context;
|
|
|
| /// The element this [TypeInformation] node belongs to.
|
| - TypedElement get contextMember => context == null ? null : context.member;
|
| + MemberElement get contextMember => context == null ? null : context.member;
|
|
|
| Iterable<TypeInformation> get assignments => _assignments;
|
|
|
| @@ -357,10 +357,8 @@ abstract class ElementTypeInformation extends TypeInformation {
|
| return new ParameterTypeInformation._instanceMember(element, types);
|
| }
|
| return new ParameterTypeInformation._static(element, types);
|
| - } else if (element.isLocal) {
|
| - return new MemberTypeInformation._localFunction(element);
|
| }
|
| - return new MemberTypeInformation._forMember(element);
|
| + return new MemberTypeInformation(element);
|
| }
|
|
|
| ElementTypeInformation._internal(MemberTypeInformation context, this._element)
|
| @@ -387,7 +385,7 @@ abstract class ElementTypeInformation extends TypeInformation {
|
| */
|
| class MemberTypeInformation extends ElementTypeInformation
|
| with ApplyableTypeInformation {
|
| - TypedElement get _member => super._element;
|
| + MemberElement get _member => super._element;
|
|
|
| /**
|
| * If [element] is a function, [closurizedCount] is the number of
|
| @@ -411,16 +409,9 @@ class MemberTypeInformation extends ElementTypeInformation
|
| */
|
| Map<MemberElement, Setlet<Spannable>> _callers;
|
|
|
| - MemberTypeInformation._internal(Element element)
|
| - : super._internal(null, element);
|
| + MemberTypeInformation(MemberElement element) : super._internal(null, element);
|
|
|
| - MemberTypeInformation._forMember(MemberElement element)
|
| - : this._internal(element);
|
| -
|
| - MemberTypeInformation._localFunction(LocalFunctionElement element)
|
| - : this._internal(element);
|
| -
|
| - TypedElement get member => _element;
|
| + MemberElement get member => _element;
|
|
|
| String get debugName => '$member';
|
|
|
| @@ -488,7 +479,7 @@ class MemberTypeInformation extends ElementTypeInformation
|
| giveUp(inferrer);
|
| return safeType(inferrer);
|
| }
|
| - if (inferrer.isNativeMember(_member)) {
|
| + if (inferrer.closedWorld.nativeData.isNativeMember(_member)) {
|
| // Use the type annotation as the type for native elements. We
|
| // also give up on inferring to make sure this element never
|
| // goes in the work queue.
|
| @@ -593,11 +584,7 @@ class MemberTypeInformation extends ElementTypeInformation
|
|
|
| @override
|
| String getInferredSignature(TypeSystem types) {
|
| - if (_member.isLocal) {
|
| - return types.getInferredSignatureOfLocalFunction(_member);
|
| - } else {
|
| - return types.getInferredSignatureOfMethod(_member);
|
| - }
|
| + return types.getInferredSignatureOfMethod(_member);
|
| }
|
| }
|
|
|
| @@ -613,8 +600,7 @@ class MemberTypeInformation extends ElementTypeInformation
|
| class ParameterTypeInformation extends ElementTypeInformation {
|
| ParameterElement get _parameter => super._element;
|
| final FunctionElement _declaration;
|
| - // TODO(johnniwinther): This should be a [MethodElement].
|
| - final FunctionElement _method;
|
| + final MethodElement _method;
|
|
|
| ParameterTypeInformation._internal(MemberTypeInformation context,
|
| ParameterElement parameter, this._declaration, this._method)
|
| @@ -631,12 +617,12 @@ class ParameterTypeInformation extends ElementTypeInformation {
|
| factory ParameterTypeInformation._localFunction(
|
| ParameterElement element, TypeSystem types) {
|
| LocalFunctionElement localFunction = element.functionDeclaration;
|
| + MethodElement callMethod = localFunction.callMethod;
|
| return new ParameterTypeInformation._internal(
|
| - types.getInferredTypeOfLocalFunction(localFunction),
|
| + types.getInferredTypeOfMember(callMethod),
|
| element,
|
| localFunction,
|
| - // TODO(johnniwinther): This should be `localFunction.callMethod`.
|
| - localFunction);
|
| + callMethod);
|
| }
|
|
|
| ParameterTypeInformation._instanceMember(
|
| @@ -651,8 +637,7 @@ class ParameterTypeInformation extends ElementTypeInformation {
|
| assert(element.functionDeclaration.isInstanceMember);
|
| }
|
|
|
| - // TODO(johnniwinther): This should be a [MethodElement].
|
| - FunctionElement get method => _method;
|
| + MethodElement get method => _method;
|
|
|
| Local get parameter => _parameter;
|
|
|
| @@ -798,24 +783,12 @@ abstract class CallSiteTypeInformation extends TypeInformation
|
| }
|
|
|
| class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
|
| - final Element calledElement;
|
| + final MemberElement calledElement;
|
|
|
| StaticCallSiteTypeInformation(
|
| MemberTypeInformation context,
|
| Spannable call,
|
| MemberElement enclosing,
|
| - MemberElement calledElement,
|
| - Selector selector,
|
| - TypeMask mask,
|
| - ArgumentsTypes arguments,
|
| - bool inLoop)
|
| - : this.internal(context, call, enclosing, calledElement, selector, mask,
|
| - arguments, inLoop);
|
| -
|
| - StaticCallSiteTypeInformation.internal(
|
| - MemberTypeInformation context,
|
| - Spannable call,
|
| - MemberElement enclosing,
|
| this.calledElement,
|
| Selector selector,
|
| TypeMask mask,
|
| @@ -883,30 +856,6 @@ class StaticCallSiteTypeInformation extends CallSiteTypeInformation {
|
| }
|
| }
|
|
|
| -@deprecated
|
| -class LocalFunctionCallSiteTypeInformation
|
| - extends StaticCallSiteTypeInformation {
|
| - LocalFunctionCallSiteTypeInformation(
|
| - MemberTypeInformation context,
|
| - Spannable call,
|
| - MemberElement enclosing,
|
| - LocalFunctionElement calledElement,
|
| - Selector selector,
|
| - TypeMask mask,
|
| - ArgumentsTypes arguments,
|
| - bool inLoop)
|
| - : super.internal(context, call, enclosing, calledElement, selector, mask,
|
| - arguments, inLoop);
|
| -
|
| - MemberTypeInformation _getCalledTypeInfo(InferrerEngine inferrer) {
|
| - return inferrer.types.getInferredTypeOfLocalFunction(calledElement);
|
| - }
|
| -
|
| - TypeInformation _getCalledTypeInfoWithSelector(InferrerEngine inferrer) {
|
| - return inferrer.typeOfLocalFunctionWithSelector(calledElement, selector);
|
| - }
|
| -}
|
| -
|
| class DynamicCallSiteTypeInformation extends CallSiteTypeInformation {
|
| final TypeInformation receiver;
|
|
|
| @@ -1748,19 +1697,13 @@ class PhiElementTypeInformation extends TypeInformation {
|
| class ClosureTypeInformation extends TypeInformation
|
| with ApplyableTypeInformation {
|
| final ast.Node node;
|
| - final Element _element;
|
| + final MethodElement _element;
|
|
|
| ClosureTypeInformation(
|
| - MemberTypeInformation context, ast.Node node, MethodElement element)
|
| - : this._internal(context, node, element);
|
| -
|
| - ClosureTypeInformation._internal(
|
| MemberTypeInformation context, this.node, this._element)
|
| : super(context);
|
|
|
| - // TODO(johnniwinther): Type this as `FunctionEntity` when
|
| - // 'LocalFunctionElement.callMethod' is used as key for
|
| - Entity get closure => _element;
|
| + FunctionEntity get closure => _element;
|
|
|
| TypeMask computeType(InferrerEngine inferrer) => safeType(inferrer);
|
|
|
| @@ -1785,17 +1728,6 @@ class ClosureTypeInformation extends TypeInformation
|
| }
|
| }
|
|
|
| -@deprecated
|
| -class LocalFunctionClosureTypeInformation extends ClosureTypeInformation {
|
| - LocalFunctionClosureTypeInformation(MemberTypeInformation context,
|
| - ast.Node node, LocalFunctionElement element)
|
| - : super._internal(context, node, element);
|
| -
|
| - String getInferredSignature(TypeSystem types) {
|
| - return types.getInferredSignatureOfLocalFunction(_element);
|
| - }
|
| -}
|
| -
|
| /**
|
| * Mixin for [TypeInformation] nodes that can bail out during tracing.
|
| */
|
|
|