[rd debugger] IJPL-211527 Do not remove a breakpoint until it's highlighter is initialized

GitOrigin-RevId: ad70e0abd57fdb317296b4a88c89c2dfdeb0dff1
This commit is contained in:
Maksim Zuev
2025-10-09 13:01:18 +00:00
committed by intellij-monorepo-bot
parent 0e519175ae
commit da68b326d3
@@ -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<XLineBreakpointProxy>()
val invalid = mutableListOf<XLineBreakpointProxy>()
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 ->