Display function value properly

This commit is contained in:
vitaly.khudobakhshov
2018-12-03 14:56:14 +01:00
committed by Ilya Chernikov
parent c901d6cebc
commit 396ba6cdd5
3 changed files with 6 additions and 3 deletions
@@ -110,7 +110,7 @@ open class GenericReplEvaluator(
val resultFieldName = scriptResultFieldName(compileResult.lineId.no) val resultFieldName = scriptResultFieldName(compileResult.lineId.no)
val resultField = scriptClass.getDeclaredField(resultFieldName).apply { isAccessible = true } val resultField = scriptClass.getDeclaredField(resultFieldName).apply { isAccessible = true }
val resultValue: Any? = resultField.get(scriptInstance) val resultValue: Any? = if (!compileResult.isFunctionType) resultField.get(scriptInstance) else "<function>"
return if (compileResult.hasResult) ReplEvalResult.ValueResult(resultFieldName, resultValue, compileResult.type) return if (compileResult.hasResult) ReplEvalResult.ValueResult(resultFieldName, resultValue, compileResult.type)
else ReplEvalResult.UnitResult() else ReplEvalResult.UnitResult()
@@ -89,7 +89,8 @@ sealed class ReplCompileResult : Serializable {
val classes: List<CompiledClassData>, val classes: List<CompiledClassData>,
val hasResult: Boolean, val hasResult: Boolean,
val classpathAddendum: List<File>, val classpathAddendum: List<File>,
val type: String?) : ReplCompileResult() { val type: String?,
val isFunctionType: Boolean) : ReplCompileResult() {
companion object { private val serialVersionUID: Long = 2L } companion object { private val serialVersionUID: Long = 2L }
} }
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.cli.jvm.repl
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.common.repl.*
@@ -124,7 +125,8 @@ open class GenericReplCompiler(
classpathAddendum ?: emptyList(), classpathAddendum ?: emptyList(),
generationState.replSpecific.resultType?.let { generationState.replSpecific.resultType?.let {
DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(it) DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(it)
} },
type?.isFunctionType ?: false
) )
} }
} }