fix for NPE

This commit is contained in:
Alex Tkachman
2012-02-24 18:01:10 +02:00
parent a6b29094c0
commit 8faf1e62d3
2 changed files with 12 additions and 1 deletions
@@ -124,7 +124,7 @@ public class CallableMethod implements Callable {
}
public boolean isNeedsThis() {
return thisClass != null;
return thisClass != null && generateCalleeType == null;
}
public boolean isNeedsReceiver() {
@@ -91,6 +91,7 @@ public class ClosureCodegen extends ObjectOrClosureCodegen {
if (fd.getReceiverParameter().exists()) {
result.setNeedsReceiver(fd);
}
result.setNeedsThis(getInternalType(fd));
result.requestGenerateCallee(Type.getObjectType(getInternalClassName(fd)));
return result;
}
@@ -337,6 +338,16 @@ public class ClosureCodegen extends ObjectOrClosureCodegen {
}
}
public static ClassDescriptor getInternalType(FunctionDescriptor descriptor) {
final int paramCount = descriptor.getValueParameters().size();
if (descriptor.getReceiverParameter().exists()) {
return JetStandardClasses.getReceiverFunction(paramCount);
}
else {
return JetStandardClasses.getFunction(paramCount);
}
}
private void appendType(SignatureWriter signatureWriter, JetType type, char variance) {
signatureWriter.visitTypeArgument(variance);