From 0f568a395f20aa0013c87010dfc336f7e2560557 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 24 Jul 2019 18:44:51 +0900 Subject: [PATCH] Debugger: Recognize exceptions from target VM in FUS --- .../debugger/evaluate/KotlinEvaluatorBuilder.kt | 15 +++++++++------ .../evaluate/evaluate/EvaluationStatus.kt | 2 +- idea/resources/META-INF/plugin.xml | 2 +- idea/resources/META-INF/plugin.xml.192 | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt index a8ade680874..272961ccf70 100644 --- a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluatorBuilder.kt @@ -47,7 +47,7 @@ import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.core.util.attachmentByPsiFile import org.jetbrains.kotlin.idea.core.util.mergeAttachments import org.jetbrains.kotlin.idea.core.util.runInReadActionWithWriteActionPriorityWithPCE -import org.jetbrains.kotlin.idea.debugger.DebuggerUtils +import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.Companion.compileCodeFragmentCacheAware import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_CLASS_NAME import org.jetbrains.kotlin.idea.debugger.evaluate.classLoading.GENERATED_FUNCTION_NAME @@ -55,9 +55,6 @@ import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.* import org.jetbrains.kotlin.idea.debugger.evaluate.compilingEvaluator.loadClassesSafely import org.jetbrains.kotlin.idea.debugger.evaluate.variables.EvaluatorValueConverter import org.jetbrains.kotlin.idea.debugger.evaluate.variables.VariableFinder -import org.jetbrains.kotlin.idea.debugger.safeLocation -import org.jetbrains.kotlin.idea.debugger.safeMethod -import org.jetbrains.kotlin.idea.debugger.safeVisibleVariableByName import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.psi.* @@ -153,7 +150,13 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, private val sourcePositi val executionContext = ExecutionContext(context, frameProxy) return evaluateSafe(executionContext, status) } catch (e: EvaluateException) { - status.error(EvaluationError.EvaluateException) + val error = if (e.exceptionFromTargetVM != null) { + EvaluationError.ExceptionFromEvaluatedCode + } else { + EvaluationError.EvaluateException + } + + status.error(error) throw e } catch (e: ProcessCanceledException) { status.error(EvaluationError.ProcessCancelledException) @@ -431,7 +434,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, private val sourcePositi is ExceptionThrown -> { when { this.kind == ExceptionThrown.ExceptionKind.FROM_EVALUATED_CODE -> { - status.error(EvaluationError.Eval4JExceptionFromEvaluatedCode) + status.error(EvaluationError.ExceptionFromEvaluatedCode) evaluationException(InvocationException(this.exception.value as ObjectReference)) } this.kind == ExceptionThrown.ExceptionKind.BROKEN_CODE -> diff --git a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/evaluate/EvaluationStatus.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/evaluate/EvaluationStatus.kt index 294b39af792..c624bd9cb84 100644 --- a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/evaluate/EvaluationStatus.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/evaluate/EvaluationStatus.kt @@ -71,10 +71,10 @@ enum class EvaluationError { SuspendCall, CrossInlineLambda, - Eval4JExceptionFromEvaluatedCode, Eval4JAbnormalTermination, Eval4JUnknownException, + ExceptionFromEvaluatedCode, ErrorElementOccurred, FrontendException, BackendException, diff --git a/idea/resources/META-INF/plugin.xml b/idea/resources/META-INF/plugin.xml index e0b66dee5fd..64b0deaf46e 100644 --- a/idea/resources/META-INF/plugin.xml +++ b/idea/resources/META-INF/plugin.xml @@ -77,7 +77,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. - + diff --git a/idea/resources/META-INF/plugin.xml.192 b/idea/resources/META-INF/plugin.xml.192 index 266262862ad..74b0589f767 100644 --- a/idea/resources/META-INF/plugin.xml.192 +++ b/idea/resources/META-INF/plugin.xml.192 @@ -77,7 +77,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. - +