diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index 8131a59a23a8..f2173431887d 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -100,6 +100,14 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @Override public void toggleLineBreakpoint(@NotNull final Project project, @NotNull final VirtualFile file, final int line, boolean temporary) { + toggleAndReturnLineBreakpoint(project, file, line, temporary); + } + + @NotNull + public Promise toggleAndReturnLineBreakpoint(@NotNull final Project project, + @NotNull final VirtualFile file, + final int line, + boolean temporary) { ApplicationManager.getApplication().assertReadAccessAllowed(); XLineBreakpointType typeWinner = null; for (XLineBreakpointType type : getLineBreakpointTypes()) { @@ -108,8 +116,9 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { } } if (typeWinner != null) { - toggleLineBreakpoint(project, typeWinner, file, line, temporary); + return toggleAndReturnLineBreakpoint(project, typeWinner, file, line, temporary); } + return rejectedPromise(); } @Override @@ -123,10 +132,20 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @NotNull final VirtualFile file, final int line, final boolean temporary) { + toggleAndReturnLineBreakpoint(project, type, file, line, temporary); + } + + @NotNull + public

Promise toggleAndReturnLineBreakpoint(@NotNull final Project project, + @NotNull final XLineBreakpointType

type, + @NotNull final VirtualFile file, + final int line, + final boolean temporary) { XSourcePositionImpl position = XSourcePositionImpl.create(file, line); if (position != null) { - toggleAndReturnLineBreakpoint(project, type, position, temporary, null, true); + return toggleAndReturnLineBreakpoint(project, type, position, temporary, null, true); } + return rejectedPromise(); } @NotNull diff --git a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java index ee22b4bd7ade..cc367d87faa1 100644 --- a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java +++ b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java @@ -35,6 +35,7 @@ import com.intellij.xdebugger.breakpoints.*; import com.intellij.xdebugger.evaluation.XDebuggerEvaluator; import com.intellij.xdebugger.frame.*; import com.intellij.xdebugger.impl.XDebugSessionImpl; +import com.intellij.xdebugger.impl.XDebuggerUtilImpl; import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil; import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl; import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointImpl; @@ -42,6 +43,7 @@ import com.intellij.xdebugger.impl.frame.XStackFrameContainerEx; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.concurrency.Promise; import java.awt.*; import java.io.File; @@ -74,13 +76,17 @@ public class XDebuggerTestUtil { assertEquals(errorMessage, breakpoint.getErrorMessage()); } - public static void toggleBreakpoint(Project project, VirtualFile file, int line) { - new WriteAction() { + @Nullable + public static XLineBreakpoint toggleBreakpoint(Project project, VirtualFile file, int line) { + return new WriteAction() { @Override - protected void run(@NotNull Result result) throws Throwable { - XDebuggerUtil.getInstance().toggleLineBreakpoint(project, file, line); + protected void run(@NotNull Result result) throws Throwable { + Promise promise = + ((XDebuggerUtilImpl)XDebuggerUtil.getInstance()).toggleAndReturnLineBreakpoint(project, file, line, false); + + promise.done(result::setResult); } - }.execute(); + }.execute().getResultObject(); } public static

XBreakpoint

insertBreakpoint(final Project project,