Refactoring: move method

This commit is contained in:
Nikolay Krasko
2017-05-29 20:30:27 +03:00
parent cb4c840d3b
commit 45958e630d
2 changed files with 16 additions and 15 deletions
@@ -17,6 +17,8 @@
package org.jetbrains.kotlin.idea.debugger
import com.intellij.debugger.engine.DebugProcessImpl
import com.intellij.debugger.engine.events.DebuggerCommandImpl
import com.intellij.debugger.impl.DebuggerContextImpl
import com.intellij.debugger.jdi.LocalVariableProxyImpl
import com.sun.jdi.*
import com.sun.tools.jdi.LocalVariableImpl
@@ -52,6 +54,16 @@ fun isInsideInlineArgument(inlineArgument: KtFunction, location: Location, debug
} != null
}
fun <T: Any> DebugProcessImpl.invokeInManagerThread(f: (DebuggerContextImpl) -> T?): T? {
var result: T? = null
managerThread.invokeAndWait(object : DebuggerCommandImpl() {
override fun action() {
result = runReadAction { f(debuggerContext) }
}
})
return result
}
private fun lambdaOrdinalByArgument(elementAt: KtFunction, context: BindingContext): Int {
val type = CodegenBinding.asmTypeForAnonymousClass(context, elementAt)
return type.className.substringAfterLast("$").toInt()
@@ -23,8 +23,6 @@ import com.intellij.debugger.engine.evaluation.EvaluateException
import com.intellij.debugger.engine.evaluation.TextWithImports
import com.intellij.debugger.engine.evaluation.TextWithImportsImpl
import com.intellij.debugger.engine.evaluation.expression.EvaluatorBuilderImpl
import com.intellij.debugger.engine.events.DebuggerCommandImpl
import com.intellij.debugger.impl.DebuggerContextImpl
import com.intellij.debugger.settings.NodeRendererSettings
import com.intellij.debugger.ui.impl.watch.*
import com.intellij.debugger.ui.tree.*
@@ -55,6 +53,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.debugger.KotlinDebuggerTestBase
import org.jetbrains.kotlin.idea.debugger.KotlinFrameExtraVariablesProvider
import org.jetbrains.kotlin.idea.debugger.evaluate.AbstractKotlinEvaluateExpressionTest.PrinterConfig.DescriptorViewOptions
import org.jetbrains.kotlin.idea.debugger.invokeInManagerThread
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.test.InTextDirectivesUtils.*
import org.junit.Assert
@@ -316,14 +315,14 @@ abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestBase() {
append(getPrefix(descriptor))
append(label)
if (config.shouldRenderSourcesPosition() && hasSourcePosition(descriptor)) {
val sp = invokeInManagerThread {
val sp = debugProcess.invokeInManagerThread {
SourcePositionProvider.getSourcePosition(descriptor, myProject, debuggerContext)
}
append(" (sp = ${render(sp)})")
}
if (config.shouldRenderExpression() && descriptor is ValueDescriptorImpl) {
val expression = invokeInManagerThread {
val expression = debugProcess.invokeInManagerThread {
descriptor.getTreeEvaluation((node as XValueNodeImpl).valueContainer as JavaValue, it) as? PsiExpression
}
@@ -338,7 +337,7 @@ abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestBase() {
val codeFragmentText = codeFragment.text
if (config.shouldComputeResultOfCreateExpression()) {
invokeInManagerThread {
debugProcess.invokeInManagerThread {
it.suspendContext?.evaluate(
TextWithImportsImpl(text.kind, codeFragmentText, codeFragment.importsToString(), text.fileType),
null)
@@ -356,16 +355,6 @@ abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestBase() {
return false
}
private fun <T: Any> invokeInManagerThread(f: (DebuggerContextImpl) -> T?): T? {
var result: T? = null
debuggerContext.debugProcess!!.managerThread.invokeAndWait(object : DebuggerCommandImpl() {
override fun action() {
result = runReadAction { f(debuggerContext) }
}
})
return result
}
private fun getPrefix(descriptor: NodeDescriptorImpl): String {
val prefix = when (descriptor) {
is StackFrameDescriptor -> "frame"