Debugger: Recognize exceptions from target VM in FUS
This commit is contained in:
+9
-6
@@ -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 ->
|
||||
|
||||
+1
-1
@@ -71,10 +71,10 @@ enum class EvaluationError {
|
||||
SuspendCall,
|
||||
CrossInlineLambda,
|
||||
|
||||
Eval4JExceptionFromEvaluatedCode,
|
||||
Eval4JAbnormalTermination,
|
||||
Eval4JUnknownException,
|
||||
|
||||
ExceptionFromEvaluatedCode,
|
||||
ErrorElementOccurred,
|
||||
FrontendException,
|
||||
BackendException,
|
||||
|
||||
@@ -77,7 +77,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.action.refactoring" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.newFileTempl" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.npwizards" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger.eval" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger.eval" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.j2k" version="1"/>
|
||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.IDESettingsFUSCollector"/>
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.action.refactoring" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.newFileTempl" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.npwizards" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger.eval" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger.eval" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="kotlin.ide.j2k" version="1"/>
|
||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.IDESettingsFUSCollector"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user