Replace 'visibleVariablesByName()' calls with a safe implementation
This commit is contained in:
+1
-1
@@ -91,7 +91,7 @@ class KotlinCoroutinesAsyncStackTraceProvider : AsyncStackTraceProvider {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
val continuationVariable = frameProxy.visibleVariableByName("\$continuation") ?: return null
|
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
|
||||||
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
||||||
|
|
||||||
return collectFrames(continuation)
|
return collectFrames(continuation)
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ class VariableFinder private constructor(private val context: EvaluationContextI
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
val continuationVariable = frameProxy.visibleVariableByName("\$continuation") ?: return null
|
val continuationVariable = frameProxy.safeVisibleVariableByName("\$continuation") ?: return null
|
||||||
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
val continuation = frameProxy.getValue(continuationVariable) as? ObjectReference ?: return null
|
||||||
return findCoroutineContextForContinuation(continuation)
|
return findCoroutineContextForContinuation(continuation)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ fun StackFrameProxyImpl.safeVisibleVariables(): List<LocalVariableProxyImpl> {
|
|||||||
return wrapAbsentInformationException { visibleVariables() } ?: emptyList()
|
return wrapAbsentInformationException { visibleVariables() } ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun StackFrameProxyImpl.safeVisibleVariableByName(name: String): LocalVariableProxyImpl? {
|
||||||
|
return wrapAbsentInformationException { visibleVariableByName(name) }
|
||||||
|
}
|
||||||
|
|
||||||
fun Method.safeAllLineLocations(): List<Location> {
|
fun Method.safeAllLineLocations(): List<Location> {
|
||||||
return DebuggerUtilsEx.allLineLocations(this) ?: emptyList()
|
return DebuggerUtilsEx.allLineLocations(this) ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user