Debugger: use StackFrameProxy from IDEA instead of StackFrame from JDI to show error message when debug info in corrupted
#EA-76187 - IE: FrameVisitor.findLocalVariable Fixed
This commit is contained in:
@@ -24,3 +24,4 @@
|
||||
- Debugger can distinguish nested inline arguments
|
||||
- Add kotlinClassName() and kotlinFunctionName() macros for use in live templates
|
||||
- Complete private members from libraries in Evaluate Expression dialog
|
||||
- Show error message when debug info for some local variable is corrupted
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.idea.debugger
|
||||
|
||||
import com.intellij.debugger.engine.DebugProcessImpl
|
||||
import com.intellij.debugger.jdi.LocalVariableProxyImpl
|
||||
import com.sun.jdi.*
|
||||
import com.sun.tools.jdi.LocalVariableImpl
|
||||
import org.jetbrains.kotlin.codegen.binding.CodegenBinding
|
||||
@@ -28,11 +29,11 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import java.util.*
|
||||
|
||||
fun isInsideInlineFunctionBody(visibleVariables: List<LocalVariable>): Boolean {
|
||||
fun isInsideInlineFunctionBody(visibleVariables: List<LocalVariableProxyImpl>): Boolean {
|
||||
return visibleVariables.any { it.name().startsWith(JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION) }
|
||||
}
|
||||
|
||||
fun numberOfInlinedFunctions(visibleVariables: List<LocalVariable>): Int {
|
||||
fun numberOfInlinedFunctions(visibleVariables: List<LocalVariableProxyImpl>): Int {
|
||||
return visibleVariables.count { it.name().startsWith(JvmAbi.LOCAL_VARIABLE_NAME_PREFIX_INLINE_FUNCTION) }
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.jetbrains.org.objectweb.asm.Type
|
||||
|
||||
class FrameVisitor(context: EvaluationContextImpl) {
|
||||
private val project = context.debugProcess.project
|
||||
private val frame = context.frameProxy?.stackFrame
|
||||
private val frame = context.frameProxy
|
||||
|
||||
companion object {
|
||||
val OBJECT_TYPE = Type.getType(Any::class.java)
|
||||
@@ -192,7 +192,7 @@ class FrameVisitor(context: EvaluationContextImpl) {
|
||||
|
||||
private fun getField(owner: Value, name: String, asmType: Type?, checkType: Boolean): Value? {
|
||||
try {
|
||||
val obj = owner.asJdiValue(frame!!.virtualMachine(), owner.asmType)
|
||||
val obj = owner.asJdiValue(frame!!.virtualMachine.virtualMachine, owner.asmType)
|
||||
if (obj !is ObjectReference) return null
|
||||
|
||||
val _class = obj.referenceType()
|
||||
|
||||
Reference in New Issue
Block a user