| Index: pkg/compiler/lib/src/inferrer/type_system.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/type_system.dart b/pkg/compiler/lib/src/inferrer/type_system.dart
|
| index 41979790116d57bdb1b9a5bd43bc6d5990c7f6b4..14703c1350f02ec762c726136467e61454f2c683 100644
|
| --- a/pkg/compiler/lib/src/inferrer/type_system.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/type_system.dart
|
| @@ -353,13 +353,17 @@ class TypeSystem {
|
| });
|
| }
|
|
|
| - String getInferredSignatureOf(FunctionElement function) {
|
| - ElementTypeInformation info;
|
| - if (function.isLocal) {
|
| - info = getInferredTypeOfLocalFunction(function);
|
| - } else {
|
| - info = getInferredTypeOfMember(function as MethodElement);
|
| - }
|
| + String getInferredSignatureOfLocalFunction(LocalFunctionElement function) {
|
| + return _getInferredSignatureOf(
|
| + getInferredTypeOfLocalFunction(function), function);
|
| + }
|
| +
|
| + String getInferredSignatureOfMethod(MethodElement function) {
|
| + return _getInferredSignatureOf(getInferredTypeOfMember(function), function);
|
| + }
|
| +
|
| + String _getInferredSignatureOf(
|
| + ElementTypeInformation info, FunctionElement function) {
|
| FunctionElement impl = function.implementation;
|
| FunctionSignature signature = impl.functionSignature;
|
| var res = "";
|
| @@ -420,7 +424,20 @@ class TypeSystem {
|
| new ListTypeInformation(currentMember, mask, element, length);
|
| }
|
|
|
| - TypeInformation allocateClosure(ast.Node node, Element element) {
|
| + /// Creates a [TypeInformation] object for the local function [element] of
|
| + /// a function expression or local function declaration used as a closure.
|
| + TypeInformation allocateClosureForLocalFunction(
|
| + ast.Node node, LocalFunctionElement element) {
|
| + TypeInformation result =
|
| + new LocalFunctionClosureTypeInformation(currentMember, node, element);
|
| + allocatedClosures.add(result);
|
| + return result;
|
| + }
|
| +
|
| + /// Creates a [TypeInformation] object for the closurization of a static or
|
| + /// top-level method [element] used a function constant.
|
| + TypeInformation allocateClosureForMethod(
|
| + ast.Node node, MethodElement element) {
|
| TypeInformation result =
|
| new ClosureTypeInformation(currentMember, node, element);
|
| allocatedClosures.add(result);
|
|
|