| 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,
|
|
|