From 6c9e48d80024ed4548de6d969eff21d1583ba256 Mon Sep 17 00:00:00 2001 From: Maria Sokolova Date: Mon, 26 Jan 2026 14:08:49 +0100 Subject: [PATCH] [debugger] Introduced XExecutionStackGroupContainer. IJPL-223919 GitOrigin-RevId: c92bbec303d07f4bfe42b8dc771cf8233b5fe626 --- .../debugger/engine/JavaDebugProcess.java | 1 + .../xdebugger/frame/XSuspendContext.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java index c403219cd2d8..92f9ef7ec951 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaDebugProcess.java @@ -14,6 +14,7 @@ import com.intellij.debugger.impl.DebuggerContextListener; import com.intellij.debugger.impl.DebuggerContextUtil; import com.intellij.debugger.impl.DebuggerSession; import com.intellij.debugger.impl.DebuggerStateManager; +import com.intellij.debugger.impl.DebuggerUtilsAsync; import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.debugger.impl.DebuggerUtilsImpl; import com.intellij.debugger.impl.PrioritizedTask; diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/frame/XSuspendContext.java b/platform/xdebugger-api/src/com/intellij/xdebugger/frame/XSuspendContext.java index 66aa67c3715a..eb5a312fff09 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/frame/XSuspendContext.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/frame/XSuspendContext.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -45,4 +46,27 @@ public abstract class XSuspendContext { public interface XExecutionStackContainer extends XValueCallback, Obsolescent { void addExecutionStack(@NotNull List executionStacks, final boolean last); } + + @ApiStatus.Internal + public interface XExecutionStackGroupContainer extends XExecutionStackContainer { + default void addExecutionStackGroups(@NotNull List executionStackGroups, final boolean last) { + addExecutionStack(flattenGroups(executionStackGroups), last); + } + + private static List flattenGroups(List groups) { + List result = new ArrayList<>(); + collectStacks(groups, result); + return result; + } + + private static void collectStacks(List groups, List result) { + for (XExecutionStackGroup group : groups) { + result.addAll(group.getStacks()); + var subGroups = group.getGroups(); + if (!subGroups.isEmpty()) { + collectStacks(subGroups, result); + } + } + } + } }