Fix after review

This commit is contained in:
Ilya Chernikov
2016-12-14 17:18:47 +01:00
parent f036422ee9
commit d78fc50e90
3 changed files with 6 additions and 7 deletions
@@ -53,11 +53,12 @@ open class GenericReplCompiledEvaluator(baseClasspath: Iterable<File>,
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)
}
@@ -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)
@@ -95,8 +95,7 @@ private fun <T> 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<Any>::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<String> {
}
try {
// TODO: check if second part of the condition is necessary
if ((parameter.type.classifier as? KClass<*>)?.let { it.java.isArray || it.qualifiedName == Array<Any>::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)