From 7405fdceaf9f484e96e3f53e2cc8b63c38dbd562 Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Tue, 22 May 2018 19:17:26 +0300 Subject: [PATCH] IDEA-192430 Breakpoint intentions [Stop/don't stop in the class] parent class is displayed instead of caller class --- .../com/intellij/debugger/engine/JavaStackFrame.java | 2 ++ .../ui/breakpoints/BreakpointIntentionAction.kt | 6 +++++- .../ui/impl/watch/StackFrameDescriptorImpl.java | 11 ++--------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java index 4faee8c18468..10584eb4b466 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java @@ -17,6 +17,7 @@ import com.intellij.debugger.settings.CapturePoint; import com.intellij.debugger.settings.DebuggerSettings; import com.intellij.debugger.settings.NodeRendererSettings; import com.intellij.debugger.ui.breakpoints.Breakpoint; +import com.intellij.debugger.ui.breakpoints.BreakpointIntentionAction; import com.intellij.debugger.ui.impl.watch.*; import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; import com.intellij.lang.java.JavaLanguage; @@ -188,6 +189,7 @@ public class JavaStackFrame extends XStackFrame implements JVMStackFrameInfoProv final ObjectReference thisObjectReference = myDescriptor.getThisObject(); if (thisObjectReference != null) { ValueDescriptorImpl thisDescriptor = myNodeManager.getThisDescriptor(null, thisObjectReference); + myDescriptor.putUserData(BreakpointIntentionAction.THIS_TYPE_KEY, thisObjectReference.type().name()); children.add(JavaValue.create(thisDescriptor, evaluationContext, myNodeManager)); } else if (location != null) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointIntentionAction.kt b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointIntentionAction.kt index 7f5b0e5384ef..103a2d024e7e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointIntentionAction.kt +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointIntentionAction.kt @@ -95,6 +95,9 @@ internal abstract class BreakpointIntentionAction(protected val myBreakpoint: XB @JvmField val CALLER_KEY = Key.create("CALLER_KEY") + @JvmField + val THIS_TYPE_KEY = Key.create("THIS_TYPE_KEY") + @JvmStatic fun getIntentions(breakpoint: XBreakpoint<*>, currentSession: XDebugSession?): List { val process = currentSession?.debugProcess @@ -104,7 +107,8 @@ internal abstract class BreakpointIntentionAction(protected val myBreakpoint: XB val currentStackFrame = currentSession.currentStackFrame if (currentStackFrame is JavaStackFrame) { val frameDescriptor = currentStackFrame.descriptor - frameDescriptor.typeName?.let { + + frameDescriptor.getUserData(THIS_TYPE_KEY)?.let { res.add(AddClassFilter(breakpoint, it)) res.add(AddClassNotFilter(breakpoint, it)) } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/StackFrameDescriptorImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/StackFrameDescriptorImpl.java index ca810d8cc022..9c32d48c8766 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/StackFrameDescriptorImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/StackFrameDescriptorImpl.java @@ -31,7 +31,6 @@ public class StackFrameDescriptorImpl extends NodeDescriptorImpl implements Stac private final StackFrameProxyImpl myFrame; private int myUiIndex; private String myName = null; - private String myTypeName = null; private Location myLocation; private MethodsTracker.MethodOccurrence myMethodOccurrence; private boolean myIsSynthetic; @@ -116,17 +115,12 @@ public class StackFrameDescriptorImpl extends NodeDescriptorImpl implements Stac } return null; } - + @Override public String getName() { return myName; } - @Nullable - public String getTypeName() { - return myTypeName; - } - @Override protected String calcRepresentation(EvaluationContextImpl context, DescriptorLabelListener descriptorLabelListener) throws EvaluateException { DebuggerManagerThreadImpl.assertIsManagerThread(); @@ -148,8 +142,7 @@ public class StackFrameDescriptorImpl extends NodeDescriptorImpl implements Stac String name; try { ReferenceType refType = myLocation.declaringType(); - myTypeName = refType != null ? refType.name() : null; - name = myTypeName; + name = refType != null ? refType.name() : null; } catch (InternalError e) { name = e.toString();