EvaluateExpression: pass invokePolicy flag to eval4j
This commit is contained in:
@@ -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.plugin.refactoring.extractFunction.AnalysisResult.ErrorMessage
|
||||||
import org.jetbrains.jet.lang.diagnostics.Severity
|
import org.jetbrains.jet.lang.diagnostics.Severity
|
||||||
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages
|
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 {
|
object KotlinEvaluationBuilder: EvaluatorBuilder {
|
||||||
override fun build(codeFragment: PsiElement, position: SourcePosition?): ExpressionEvaluator {
|
override fun build(codeFragment: PsiElement, position: SourcePosition?): ExpressionEvaluator {
|
||||||
@@ -116,7 +119,7 @@ class KotlinEvaluator(val codeFragment: JetCodeFragment,
|
|||||||
makeInitialFrame(this, context.getArgumentsByNames(extractedFunction.getParameterNamesForDebugger())),
|
makeInitialFrame(this, context.getArgumentsByNames(extractedFunction.getParameterNamesForDebugger())),
|
||||||
JDIEval(virtualMachine,
|
JDIEval(virtualMachine,
|
||||||
context.getClassLoader()!!,
|
context.getClassLoader()!!,
|
||||||
context.getSuspendContext().getThread()?.getThreadReference()!!)
|
context.getSuspendContext().getThread()?.getThreadReference()!!, context.getSuspendContext().getInvokePolicy())
|
||||||
)
|
)
|
||||||
|
|
||||||
resultValue = when (value) {
|
resultValue = when (value) {
|
||||||
@@ -152,6 +155,10 @@ class KotlinEvaluator(val codeFragment: JetCodeFragment,
|
|||||||
return null
|
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> {
|
private fun JetNamedFunction.getParameterNamesForDebugger(): List<String> {
|
||||||
val result = arrayListOf<String>()
|
val result = arrayListOf<String>()
|
||||||
for (param in getValueParameters()) {
|
for (param in getValueParameters()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user