From bc204c1194830fcd090d6e7da4c6c96365d6107b Mon Sep 17 00:00:00 2001 From: pTalanov Date: Fri, 4 May 2012 15:58:27 +0400 Subject: [PATCH] Finish tests fix --- .../reference/CallExpressionTranslator.java | 16 +++++++++++++++- .../k2js/translate/reference/CallTranslator.java | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallExpressionTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallExpressionTranslator.java index 9413827834e..b328ac78c30 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallExpressionTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallExpressionTranslator.java @@ -22,6 +22,9 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.psi.JetCallExpression; +import org.jetbrains.jet.lang.psi.JetExpression; +import org.jetbrains.jet.lang.psi.JetReferenceExpression; +import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.jet.lang.resolve.calls.ExpressionAsFunctionDescriptor; import org.jetbrains.jet.lang.resolve.calls.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument; @@ -95,11 +98,22 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl return translateExpressionAsFunction(); } if (resolvedCall instanceof VariableAsFunctionResolvedCall) { - return Translation.translateAsExpression(PsiUtils.getCallee(expression), context()); + return translateVariableForVariableAsFunctionResolvedCall(); } return null; } + @NotNull + //TODO: looks hacky and should be modified soon + private JsExpression translateVariableForVariableAsFunctionResolvedCall() { + JetExpression callee = PsiUtils.getCallee(expression); + if (callee instanceof JetSimpleNameExpression) { + return ReferenceTranslator.getAccessTranslator((JetSimpleNameExpression) callee, receiver, context()).translateAsGet(); + } + assert receiver != null; + return Translation.translateAsExpression(callee, context()); + } + @NotNull private JsExpression translateExpressionAsFunction() { return Translation.translateAsExpression(getCallee(expression), context()); diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java index 7ef0c308a48..40261414321 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java @@ -103,6 +103,7 @@ public final class CallTranslator extends AbstractTranslator { return descriptor.getName().equals("invoke"); } + @NotNull private JsExpression invokeCall() { JsInvocation callMethodInvocation = generateCallMethodInvocation(); List parameters = Lists.newArrayList(context().program().getNullLiteral());