From d7a7723d3dae35652c5b52acd86621824654627d Mon Sep 17 00:00:00 2001 From: Nipuna Ranasinghe Date: Tue, 12 Nov 2024 20:30:01 +0530 Subject: [PATCH] Fix step-over behaviour for init methods --- .../debugadapter/BreakpointProcessor.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/misc/debug-adapter/modules/debug-adapter-core/src/main/java/org/ballerinalang/debugadapter/BreakpointProcessor.java b/misc/debug-adapter/modules/debug-adapter-core/src/main/java/org/ballerinalang/debugadapter/BreakpointProcessor.java index 8433049daa2f..8cb6dd0d22cc 100644 --- a/misc/debug-adapter/modules/debug-adapter-core/src/main/java/org/ballerinalang/debugadapter/BreakpointProcessor.java +++ b/misc/debug-adapter/modules/debug-adapter-core/src/main/java/org/ballerinalang/debugadapter/BreakpointProcessor.java @@ -234,7 +234,9 @@ void activateDynamicBreakPoints(int threadId, DynamicBreakpointMode mode, boolea Location currentLocation = validFrames.get(0).getJStackFrame().location(); Optional prevLocation = context.getPrevLocation(); if (!validate || prevLocation.isEmpty() || !isWithinSameSource(currentLocation, prevLocation.get())) { - doActivateDynamicBreakPoints(currentLocation); + context.getEventManager().deleteAllBreakpoints(); + configureBreakpointsForMethod(currentLocation); + context.setPrevLocation(currentLocation); } context.setPrevLocation(currentLocation); } @@ -243,7 +245,11 @@ void activateDynamicBreakPoints(int threadId, DynamicBreakpointMode mode, boolea // temporary breakpoint on the location of its invocation. This is supposed to handle the situations where // the user wants to step over on an exit point of the current function. if (mode == DynamicBreakpointMode.CALLER && validFrames.size() > 1) { - doActivateDynamicBreakPoints(validFrames.get(1).getJStackFrame().location()); + context.getEventManager().deleteAllBreakpoints(); + for (int frameIndex = 1; frameIndex < validFrames.size(); frameIndex++) { + configureBreakpointsForMethod(validFrames.get(frameIndex).getJStackFrame().location()); + } + context.setPrevLocation(validFrames.get(0).getJStackFrame().location()); } } catch (JdiProxyException e) { LOGGER.error(e.getMessage()); @@ -254,12 +260,6 @@ void activateDynamicBreakPoints(int threadId, DynamicBreakpointMode mode, boolea } } - private void doActivateDynamicBreakPoints(Location location) { - context.getEventManager().deleteAllBreakpoints(); - configureBreakpointsForMethod(location); - context.setPrevLocation(location); - } - /** * Checks whether the given two locations are within the same source file. *