From f0d2f458e0709d828c0ac6528e3285c3179899c7 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 22 Sep 2016 11:35:31 +0200 Subject: [PATCH] Fix script codegen for REPL lines with ScriptTemplate with parameters --- .../src/org/jetbrains/kotlin/codegen/ScriptCodegen.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java index a00e37ba4a4..1f068b6f49f 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.java @@ -152,7 +152,7 @@ public class ScriptCodegen extends MemberCodegen { iv.invokespecial("java/lang/Object", "", "()V", false); } else { - // TODO: check if it is correct way to find a promary constructor + // TODO: check if it is correct way to find a primary constructor Collection ctorDescriptors = superclass.getConstructors(); assert ctorDescriptors.size() == 1; ConstructorDescriptor ctorDesc = ctorDescriptors.iterator().next(); @@ -160,6 +160,8 @@ public class ScriptCodegen extends MemberCodegen { iv.load(0, classType); + int valueParamStart = context.getEarlierScripts().size() + 1; + List valueParameters = scriptDescriptor.getUnsubstitutedPrimaryConstructor().getValueParameters(); for (ValueParameterDescriptor superclassParam: ctorDesc.getValueParameters()) { ValueParameterDescriptor valueParam = null; @@ -170,7 +172,7 @@ public class ScriptCodegen extends MemberCodegen { } } assert valueParam != null; - iv.load(valueParam.getIndex() + 1, typeMapper.mapType(valueParam.getType())); + iv.load(valueParam.getIndex() + valueParamStart, typeMapper.mapType(valueParam.getType())); } CallableMethod ctorMethod = typeMapper.mapToCallableMethod(ctorDesc, false);