From da68b326d3b34058a14812c67c7dc4aead4f3c1a Mon Sep 17 00:00:00 2001 From: Maksim Zuev Date: Thu, 9 Oct 2025 12:10:54 +0200 Subject: [PATCH] [rd debugger] IJPL-211527 Do not remove a breakpoint until it's highlighter is initialized GitOrigin-RevId: ad70e0abd57fdb317296b4a88c89c2dfdeb0dff1 --- .../breakpoints/XLineBreakpointManager.kt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt index a7a35665b763..b4860164ff82 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt @@ -190,12 +190,23 @@ class XLineBreakpointManager(private val project: Project, coroutineScope: Corou private fun cleanUpBreakpoints(document: Document) { val breakpoints = getDocumentBreakpointProxies(document) - // Check if two or more breakpoints occurred at the same position and remove duplicates. - val (valid, invalid) = breakpoints.partition { - val highlighter = it.getHighlighter() - highlighter != null && highlighter.isValid + val valid = mutableListOf() + val invalid = mutableListOf() + for (breakpoint in breakpoints) { + val highlighter = breakpoint.getHighlighter() + if (highlighter == null) { + // Breakpoint is uninitialized yet + continue + } + if (highlighter.isValid) { + valid.add(breakpoint) + } + else { + invalid.add(breakpoint) + } } removeBreakpoints(invalid) + // Check if two or more breakpoints occurred at the same position and remove duplicates. val areInlineBreakpoints = XDebuggerUtil.areInlineBreakpointsEnabled(FileDocumentManager.getInstance().getFile(document)) val duplicates = valid .groupBy { b ->