From f6b62f2299813e0d8b4bb6bf7c1dfff79d91ed07 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 16 Jan 2020 21:10:20 +0900 Subject: [PATCH] Minor: extract wrapEvaluateException() --- .../coroutine/command/CoroutineBuilder.kt | 1 + .../data/CoroutineAsyncStackFrameItem.kt | 7 ++----- .../kotlin/idea/debugger/safeUtil.kt | 20 +++++++++---------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/command/CoroutineBuilder.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/command/CoroutineBuilder.kt index 7703a27fc28..ae2d46b231b 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/command/CoroutineBuilder.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/command/CoroutineBuilder.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.idea.debugger.safeLineNumber import org.jetbrains.kotlin.idea.debugger.safeLocation import org.jetbrains.kotlin.idea.debugger.safeMethod + class CoroutineBuilder(val suspendContext: XSuspendContext) { private val coroutineStackFrameProvider = CoroutineAsyncStackTraceProvider() val debugProcess = (suspendContext as SuspendContextImpl).debugProcess diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/CoroutineAsyncStackFrameItem.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/CoroutineAsyncStackFrameItem.kt index 5fc1a21da4c..74013b2373a 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/CoroutineAsyncStackFrameItem.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/CoroutineAsyncStackFrameItem.kt @@ -13,12 +13,9 @@ import com.intellij.xdebugger.frame.XNamedValue import com.intellij.xdebugger.frame.XStackFrame import com.sun.jdi.Location import com.sun.jdi.ObjectReference +import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.coroutine.util.EmptyStackFrameDescriptor import org.jetbrains.kotlin.idea.debugger.coroutine.util.logger -import org.jetbrains.kotlin.idea.debugger.safeLineNumber -import org.jetbrains.kotlin.idea.debugger.safeMethod -import org.jetbrains.kotlin.idea.debugger.safeSourceLineNumber -import org.jetbrains.kotlin.idea.debugger.safeSourceName class CreationCoroutineStackFrameItem( val frame: StackFrameProxyImpl, @@ -64,6 +61,6 @@ sealed class CoroutineStackFrameItem(val location: Location, val spilledVariable fun uniqueId(): String { return location.safeSourceName() + ":" + location.safeMethod().toString() + ":" + - location.safeLineNumber() + ":" + location.safeSourceLineNumber() + location.safeLineNumber() + ":" + location.safeKotlinPreferredLineNumber() } } \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt index 9780671bb66..2218d83e1a3 100644 --- a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/safeUtil.kt @@ -60,19 +60,11 @@ fun Method.safeArguments(): List? { } fun StackFrameProxy.safeLocation(): Location? { - return try { - this.location() - } catch (e: EvaluateException) { - null - } + return wrapEvaluateException { this.location() } } fun StackFrameProxy.safeStackFrame(): StackFrame? { - return try { - this.stackFrame - } catch (e: EvaluateException) { - null - } + return wrapEvaluateException { this.stackFrame } } fun Location.safeSourceName(): String? { @@ -118,6 +110,14 @@ fun Field.safeType(): Type? { return wrapClassNotLoadedException { type() } } +private inline fun wrapEvaluateException(block: () -> T): T? { + return try { + block() + } catch (e: EvaluateException) { + null + } +} + private inline fun wrapAbsentInformationException(block: () -> T): T? { return try { block()