diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/GenericReplCompiledEvaluator.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/GenericReplCompiledEvaluator.kt index 3b9f188899c..e56465d2feb 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/GenericReplCompiledEvaluator.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/GenericReplCompiledEvaluator.kt @@ -53,11 +53,12 @@ open class GenericReplCompiledEvaluator(baseClasspath: Iterable, fun classNameFromPath(path: String) = JvmClassName.byInternalName(path.replaceFirst("\\.class$".toRegex(), "")) fun processCompiledClasses() { + val expectedClassName = "Line${codeLine.no}" compiledClasses.filter { it.path.endsWith(".class") } .forEach { val className = classNameFromPath(it.path) - if (className.fqNameForClassNameWithoutDollars.shortName().asString() == "Line${codeLine.no}") { - mainLineClassName = className.fqNameForClassNameWithoutDollars.asString() + if (className.internalName == expectedClassName || className.internalName.endsWith("/$expectedClassName")) { + mainLineClassName = className.internalName.replace('/', '.') } classLoader.addClass(className, it.bytes) } diff --git a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt index f8adf3027ed..28416fcc55b 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt @@ -102,7 +102,7 @@ class GenericReplTest : TestCase() { TestCase.assertNotNull("Unexpected eval result: $res11", res11e) TestCase.assertEquals(3, res11e!!.value) - val codeLine2 = ReplCodeLine(0, "x+4") + val codeLine2 = ReplCodeLine(1, "x+4") val res2 = repl.replCompiler?.compile(codeLine2, listOf(codeLine1)) val res2c = res2 as? ReplCompileResult.CompiledClasses TestCase.assertNotNull("Unexpected compile result: $res2", res2c) diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/reflectionUtil.kt b/compiler/util/src/org/jetbrains/kotlin/utils/reflectionUtil.kt index 6c424896eb4..989c9cd61f6 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/reflectionUtil.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/reflectionUtil.kt @@ -95,8 +95,7 @@ private fun tryCreateCallableMapping(callable: KCallable<*>, args: Iterator< } res.put(par, cvtRes.v) } - // TODO: check if second part of the condition is necessary - else if ((par.type.classifier as? KClass<*>)?.let { it.java.isArray || it.qualifiedName == Array::class.qualifiedName } ?: false) { + else if ((par.type.classifier as? KClass<*>)?.java?.isArray ?: false) { // try vararg val cvtVRes = converter.tryConvertVararg(par, arg, argIt) if (cvtVRes is ArgsConverter.Result.Success) { @@ -197,8 +196,7 @@ private class StringArgsConverter : ArgsConverter { } try { - // TODO: check if second part of the condition is necessary - if ((parameter.type.classifier as? KClass<*>)?.let { it.java.isArray || it.qualifiedName == Array::class.qualifiedName } ?: false) { + if ((parameter.type.classifier as? KClass<*>)?.java?.isArray ?: false) { val argsSequence = sequenceOf(firstArg.value) + restArgsIt.asSequence().map { it.value } val primArrayArgCandidate = convertPrimitivesArray(parameter.type, argsSequence) if (primArrayArgCandidate != null)