From 4bb63535ea63361c9305efb6e6bc76fda695cac0 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 14 Jan 2014 14:18:55 +0400 Subject: [PATCH] Temporary workaround for constructor params --- .../org/jetbrains/jet/codegen/asm/MethodInliner.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 {