extract method

This commit is contained in:
Stepan Koltsov
2012-06-05 00:59:47 +04:00
parent 9f4e466898
commit 9376313fd0
@@ -1355,7 +1355,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
// assert !superCall;
// callableMethod = ClosureCodegen.asCallableMethod((FunctionDescriptor) fd);
//}
if (fd instanceof ExpressionAsFunctionDescriptor || (fd instanceof SimpleFunctionDescriptor && (fd.getContainingDeclaration() instanceof FunctionDescriptor || fd.getContainingDeclaration() instanceof ScriptDescriptor))) {
if (isCallAsFunctionObject(fd)) {
SimpleFunctionDescriptor invoke = CodegenUtil.createInvoke(fd);
callableMethod = ClosureCodegen.asCallableMethod(invoke, typeMapper);
}
@@ -1365,6 +1365,11 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
return callableMethod;
}
private boolean isCallAsFunctionObject(FunctionDescriptor fd) {
return fd instanceof ExpressionAsFunctionDescriptor
|| (fd instanceof SimpleFunctionDescriptor && (fd.getContainingDeclaration() instanceof FunctionDescriptor || fd.getContainingDeclaration() instanceof ScriptDescriptor));
}
public void invokeMethodWithArguments(CallableMethod callableMethod, JetCallElement expression, StackValue receiver) {
final Type calleeType = callableMethod.getGenerateCalleeType();
if (calleeType != null && expression instanceof JetCallExpression) {