Minor: extract wrapEvaluateException()
This commit is contained in:
+1
@@ -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
|
||||
|
||||
+2
-5
@@ -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()
|
||||
}
|
||||
}
|
||||
+10
-10
@@ -60,19 +60,11 @@ fun Method.safeArguments(): List<LocalVariable>? {
|
||||
}
|
||||
|
||||
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 <T> wrapEvaluateException(block: () -> T): T? {
|
||||
return try {
|
||||
block()
|
||||
} catch (e: EvaluateException) {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun <T> wrapAbsentInformationException(block: () -> T): T? {
|
||||
return try {
|
||||
block()
|
||||
|
||||
Reference in New Issue
Block a user