Refactoring: Replace 'ParametersDescriptor' with a simple 'List'

This commit is contained in:
Yan Zhulanow
2018-11-26 17:55:03 +09:00
parent c88d8a5e0d
commit 8334769eb0
2 changed files with 16 additions and 26 deletions
@@ -219,21 +219,11 @@ class KotlinDebuggerCaches(project: Project) {
} }
data class CompiledDataDescriptor( data class CompiledDataDescriptor(
val classes: List<ClassToLoad>, val classes: List<ClassToLoad>,
val sourcePosition: SourcePosition, val sourcePosition: SourcePosition,
val parameters: ParametersDescriptor val parameters: List<Parameter>
) )
class ParametersDescriptor : Iterable<Parameter> {
private val list = ArrayList<Parameter>()
fun add(name: String, jetType: KotlinType, value: Value? = null, error: EvaluateException? = null) {
list.add(Parameter(name, jetType, value, error))
}
override fun iterator() = list.iterator()
}
data class Parameter(val callText: String, val type: KotlinType, val value: Value? = null, val error: EvaluateException? = null) data class Parameter(val callText: String, val type: KotlinType, val value: Value? = null, val error: EvaluateException? = null)
class ComputedClassNames(val classNames: List<String>, val shouldBeCached: Boolean) { class ComputedClassNames(val classNames: List<String>, val shouldBeCached: Boolean) {
@@ -64,8 +64,7 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor
import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded
import org.jetbrains.kotlin.idea.debugger.DebuggerUtils import org.jetbrains.kotlin.idea.debugger.DebuggerUtils
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.CompiledDataDescriptor import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.*
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.ParametersDescriptor
import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.ClassToLoad
import org.jetbrains.kotlin.idea.debugger.evaluate.compilingEvaluator.loadClassesSafely import org.jetbrains.kotlin.idea.debugger.evaluate.compilingEvaluator.loadClassesSafely
import org.jetbrains.kotlin.idea.debugger.getBackingFieldName import org.jetbrains.kotlin.idea.debugger.getBackingFieldName
@@ -413,7 +412,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour
private fun ExtractionResult.getParametersForDebugger( private fun ExtractionResult.getParametersForDebugger(
fragment: KtCodeFragment, fragment: KtCodeFragment,
context: EvaluationContextImpl context: EvaluationContextImpl
): ParametersDescriptor { ): List<Parameter> {
return runReadAction { return runReadAction {
val valuesForLabels = HashMap<String, Value>() val valuesForLabels = HashMap<String, Value>()
@@ -429,10 +428,10 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour
}) })
} }
val parameters = ParametersDescriptor() val parameters = mutableListOf<Parameter>()
val receiver = config.descriptor.receiverParameter val receiver = config.descriptor.receiverParameter
if (receiver != null) { if (receiver != null) {
parameters.add(THIS_NAME, receiver.getParameterType(true)) parameters += Parameter(THIS_NAME, receiver.getParameterType(true))
} }
for (param in config.descriptor.parameters) { for (param in config.descriptor.parameters) {
@@ -449,20 +448,21 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour
val thisObject = context.suspendContext.frameProxy?.thisObject() val thisObject = context.suspendContext.frameProxy?.thisObject()
val field = thisObject?.referenceType()?.fieldByName(backingFieldName) val field = thisObject?.referenceType()?.fieldByName(backingFieldName)
if (thisObject != null && field != null) { val parameter = if (thisObject != null && field != null) {
parameters.add(backingFieldName, param.getParameterType(true), thisObject.getValue(field).asValue()) Parameter(backingFieldName, param.getParameterType(true), thisObject.getValue(field).asValue())
} else { } else {
parameters.add( Parameter(
backingFieldName, paramDescriptor.builtIns.unitType, null, backingFieldName, paramDescriptor.builtIns.unitType,
EvaluateException("Can't find a backing field for property ${paramDescriptor.name}") error = EvaluateException("Can't find a backing field for property ${paramDescriptor.name}")
) )
} }
parameters += parameter
continue continue
} }
} }
parameters.add(paramName, param.getParameterType(true), valuesForLabels[paramName]) parameters += Parameter(paramName, param.getParameterType(true), valuesForLabels[paramName])
} }
parameters parameters
@@ -470,7 +470,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour
} }
private fun EvaluationContextImpl.getArgumentsForEval4j( private fun EvaluationContextImpl.getArgumentsForEval4j(
parameters: ParametersDescriptor, parameters: List<Parameter>,
parameterTypes: Array<Type> parameterTypes: Array<Type>
): List<Value> { ): List<Value> {
val frameVisitor = FrameVisitor(this) val frameVisitor = FrameVisitor(this)
@@ -491,7 +491,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour
codeFragment: KtCodeFragment, codeFragment: KtCodeFragment,
extractedFunction: KtNamedFunction, extractedFunction: KtNamedFunction,
context: EvaluationContextImpl, context: EvaluationContextImpl,
parameters: ParametersDescriptor parameters: List<Parameter>
): ClassFileFactory { ): ClassFileFactory {
return runReadAction { return runReadAction {
val fileForDebugger = createFileForDebugger(codeFragment, extractedFunction) val fileForDebugger = createFileForDebugger(codeFragment, extractedFunction)