From 8d7ff113e373fe68c779fbf01b868fc4e21dabcc Mon Sep 17 00:00:00 2001 From: Arseny Chernyaev Date: Wed, 30 Oct 2019 12:43:57 +0300 Subject: [PATCH] remove default breakpoints correctly (cherry picked from commit 0a801d54741fa681e8c002f58c7961afc5b88cad) GitOrigin-RevId: 314a8b57b755cbd10b17314c4512a02f88cf64f3 --- .../impl/breakpoints/XBreakpointManagerImpl.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java index 7ecebc102886..746de4980e71 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java @@ -203,7 +203,7 @@ public class XBreakpointManagerImpl implements XBreakpointManager { if (!isDefaultBreakpoint(breakpoint)) { throw new IllegalStateException("Trying to remove not default breakpoint " + breakpoint); } - doRemoveBreakpointImpl(breakpoint); + doRemoveBreakpointImpl(breakpoint, true); } private void doRemoveBreakpoint(XBreakpoint breakpoint) { @@ -212,14 +212,21 @@ public class XBreakpointManagerImpl implements XBreakpointManager { breakpoint.setEnabled(false); } else { - doRemoveBreakpointImpl(breakpoint); + doRemoveBreakpointImpl(breakpoint, false); } } - private void doRemoveBreakpointImpl(XBreakpoint breakpoint) { + private void doRemoveBreakpointImpl(XBreakpoint breakpoint, boolean isDefaultBreakpoint) { XBreakpointType type = breakpoint.getType(); XBreakpointBase breakpointBase = (XBreakpointBase)breakpoint; - myBreakpoints.remove(type, breakpointBase); + if (isDefaultBreakpoint) { + Set> typeDefaultBreakpoints = myDefaultBreakpoints.get(breakpoint.getType()); + if (typeDefaultBreakpoints != null) { + typeDefaultBreakpoints.remove(breakpoint); + } + } else { + myBreakpoints.remove(type, breakpointBase); + } myAllBreakpoints.remove(breakpointBase); if (breakpointBase instanceof XLineBreakpointImpl) { myLineBreakpointManager.unregisterBreakpoint((XLineBreakpointImpl)breakpointBase);