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 b6d34798cbd70ad26a595981c0280c304a0a7965..41979790116d57bdb1b9a5bd43bc6d5990c7f6b4 100644 |
--- a/pkg/compiler/lib/src/inferrer/type_system.dart |
+++ b/pkg/compiler/lib/src/inferrer/type_system.dart |
@@ -70,7 +70,7 @@ class TypeSystem { |
void withMember(MemberElement element, action) { |
assert(_currentMember == null, |
failedAt(element, "Already constructing graph for $_currentMember.")); |
- _currentMember = getInferredTypeOf(element); |
+ _currentMember = getInferredTypeOfMember(element); |
action(); |
_currentMember = null; |
} |
@@ -322,7 +322,22 @@ class TypeSystem { |
return newType; |
} |
- ElementTypeInformation getInferredTypeOf(Element element) { |
+ ElementTypeInformation getInferredTypeOfParameter(ParameterElement element) { |
+ return _getInferredTypeOf(element); |
+ } |
+ |
+ ElementTypeInformation getInferredTypeOfMember(MemberElement element) { |
+ return _getInferredTypeOf(element); |
+ } |
+ |
+ @deprecated |
+ ElementTypeInformation getInferredTypeOfLocalFunction( |
+ LocalFunctionElement element) { |
+ return _getInferredTypeOf(element); |
+ } |
+ |
+ @deprecated |
+ ElementTypeInformation _getInferredTypeOf(Element element) { |
element = element.implementation; |
return typeInformations[element] ??= |
new ElementTypeInformation(element, this); |
@@ -339,12 +354,17 @@ class TypeSystem { |
} |
String getInferredSignatureOf(FunctionElement function) { |
- ElementTypeInformation info = getInferredTypeOf(function); |
+ ElementTypeInformation info; |
+ if (function.isLocal) { |
+ info = getInferredTypeOfLocalFunction(function); |
+ } else { |
+ info = getInferredTypeOfMember(function as MethodElement); |
+ } |
FunctionElement impl = function.implementation; |
FunctionSignature signature = impl.functionSignature; |
var res = ""; |
signature.forEachParameter((Element parameter) { |
- TypeInformation type = getInferredTypeOf(parameter); |
+ TypeInformation type = getInferredTypeOfParameter(parameter); |
res += "${res.isEmpty ? '(' : ', '}${type.type} ${parameter.name}"; |
}); |
res += ") -> ${info.type}"; |