EvaluateExpression: pass invokePolicy flag to eval4j

This commit is contained in:
Natalia Ukhorskaya
2014-05-20 18:28:32 +04:00
parent 51b95181f0
commit 7e66d67b95
@@ -67,6 +67,9 @@ import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult
import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.ErrorMessage
import org.jetbrains.jet.lang.diagnostics.Severity
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages
import com.sun.jdi.request.EventRequest
import com.sun.jdi.ObjectReference
import com.intellij.debugger.engine.SuspendContext
object KotlinEvaluationBuilder: EvaluatorBuilder {
override fun build(codeFragment: PsiElement, position: SourcePosition?): ExpressionEvaluator {
@@ -116,7 +119,7 @@ class KotlinEvaluator(val codeFragment: JetCodeFragment,
makeInitialFrame(this, context.getArgumentsByNames(extractedFunction.getParameterNamesForDebugger())),
JDIEval(virtualMachine,
context.getClassLoader()!!,
context.getSuspendContext().getThread()?.getThreadReference()!!)
context.getSuspendContext().getThread()?.getThreadReference()!!, context.getSuspendContext().getInvokePolicy())
)
resultValue = when (value) {
@@ -152,6 +155,10 @@ class KotlinEvaluator(val codeFragment: JetCodeFragment,
return null
}
private fun SuspendContext.getInvokePolicy(): Int {
return if (getSuspendPolicy() == EventRequest.SUSPEND_EVENT_THREAD) ObjectReference.INVOKE_SINGLE_THREADED else 0
}
private fun JetNamedFunction.getParameterNamesForDebugger(): List<String> {
val result = arrayListOf<String>()
for (param in getValueParameters()) {