diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java b/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java index 165eea3a9bf..45c19d55a43 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java @@ -158,7 +158,15 @@ public class MethodInliner { List recaptured = invocation.getRecaptured(); for (CapturedParamInfo capturedParamInfo : recaptured) { Type type = capturedParamInfo.getType(); - super.visitVarInsn(type.getOpcode(Opcodes.ILOAD), capturedParamInfo.getIndex()); + List contextCaptured = MethodInliner.this.parameters.getCaptured(); + CapturedParamInfo result = null; + for (CapturedParamInfo info : contextCaptured) { + //TODO more sofisticated check + if (info.getFieldName().equals(capturedParamInfo.getFieldName())) { + result = info; + } + } + super.visitVarInsn(type.getOpcode(Opcodes.ILOAD), result.getIndex()); } super.visitMethodInsn(opcode, invocation.getNewLambdaType().getInternalName(), name, invocation.getNewConstructorDescriptor()); } else {