diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index 15d735c55eb..c9f1ee4ce31 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -823,19 +823,20 @@ public class JetTypeMapper extends BindingTraceAware { if (closure != null) { for (Map.Entry entry : closure.getCaptureVariables().entrySet()) { DeclarationDescriptor variableDescriptor = entry.getKey(); + Type type = null; if (variableDescriptor instanceof VariableDescriptor && !(variableDescriptor instanceof PropertyDescriptor)) { Type sharedVarType = getSharedVarType(variableDescriptor); if (sharedVarType == null) { sharedVarType = mapType(((VariableDescriptor) variableDescriptor).getType()); } - signatureWriter.writeParameterType(JvmMethodParameterKind.SHARED_VAR); - signatureWriter.writeAsmType(sharedVarType, false); - signatureWriter.writeParameterTypeEnd(); + type = sharedVarType; } else if (isLocalNamedFun(variableDescriptor)) { - Type type = classNameForAnonymousClass(bindingContext, (FunctionDescriptor) variableDescriptor).getAsmType(); + type = classNameForAnonymousClass(bindingContext, (FunctionDescriptor) variableDescriptor).getAsmType(); + } - signatureWriter.writeParameterType(JvmMethodParameterKind.VALUE); + if (type != null) { + signatureWriter.writeParameterType(JvmMethodParameterKind.SHARED_VAR); signatureWriter.writeAsmType(type, false); signatureWriter.writeParameterTypeEnd(); }