Index: compiler/java/com/google/dart/compiler/backend/js/RuntimeTypeInjector.java |
diff --git a/compiler/java/com/google/dart/compiler/backend/js/RuntimeTypeInjector.java b/compiler/java/com/google/dart/compiler/backend/js/RuntimeTypeInjector.java |
index 179767e1308e806d71e0e56676d380fea26091c4..3f3cafb7207353e386f2956ccd03355475744efa 100644 |
--- a/compiler/java/com/google/dart/compiler/backend/js/RuntimeTypeInjector.java |
+++ b/compiler/java/com/google/dart/compiler/backend/js/RuntimeTypeInjector.java |
@@ -500,9 +500,10 @@ public class RuntimeTypeInjector { |
* No lookup method exists for the type "int bar(double x)", hence the in-line creation of: |
* RTT.createFunction([RTT Parameter Types],RTT ReturnType)) |
*/ |
- private JsInvocation generateRTTCreate(VariableElement element, ClassElement classElement) { |
+ private JsInvocation generateRTTCreate(Element element, |
+ FunctionType elementType, |
+ ClassElement classElement) { |
boolean hasTypes = false; |
- FunctionType type = (FunctionType) element.getType(); |
if (ElementKind.of(element).equals(ElementKind.CONSTRUCTOR) |
|| element.getModifiers().isNative()) { |
@@ -516,14 +517,14 @@ public class RuntimeTypeInjector { |
JsInvocation callLookup; |
callLookup = newInvocation(newQualifiedNameRef("RTT.createFunction")); |
- JsArrayLiteral arr = generateTypeArrayFromTypes(type.getParameterTypes(), classElement, |
+ JsArrayLiteral arr = generateTypeArrayFromTypes(elementType.getParameterTypes(), classElement, |
typeArgContextExpr); |
if (arr == null) { |
return newInvocation(newQualifiedNameRef(RTT_DYNAMIC_LOOKUP)); |
} |
- JsExpression returnExpr = generateRTTLookupForType(element, type.getReturnType(), classElement, |
- typeArgContextExpr); |
+ JsExpression returnExpr = generateRTTLookupForType(element, elementType.getReturnType(), |
+ classElement, typeArgContextExpr); |
callLookup.getArguments().add(arr.getExpressions().isEmpty() ? program.getNullLiteral() : arr); |
callLookup.getArguments().add(returnExpr); |
@@ -584,7 +585,7 @@ public class RuntimeTypeInjector { |
(InterfaceType) elementType, classElement); |
break; |
case FUNCTION: |
- elementInvoke = generateRTTCreate((VariableElement) element, classElement); |
+ elementInvoke = generateRTTCreate(element, (FunctionType) elementType, classElement); |
break; |
case FUNCTION_ALIAS: |
elementInvoke = buildTypeLookupExpression(elementType, |