Skip to content

Commit 0a78659

Browse files
committed
dap: alias step into to next and step out to continue
Step into and step out are required by the UI for DAP. We don't have a way to implement these in a logical manner but they need to exist. We'll discuss in further iterations how these might differ from next and continue, but for now, we just need some implementation for the UI. Signed-off-by: Jonathan A. Sternberg <[email protected]>
1 parent 266db93 commit 0a78659

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

dap/adapter.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,29 @@ func (d *Adapter[C]) Next(c Context, req *dap.NextRequest, resp *dap.NextRespons
156156
return nil
157157
}
158158

159+
func (d *Adapter[C]) StepIn(c Context, req *dap.StepInRequest, resp *dap.StepInResponse) error {
160+
var (
161+
subReq dap.NextRequest
162+
subResp dap.NextResponse
163+
)
164+
165+
subReq.Arguments.ThreadId = req.Arguments.ThreadId
166+
subReq.Arguments.SingleThread = req.Arguments.SingleThread
167+
subReq.Arguments.Granularity = req.Arguments.Granularity
168+
return d.Next(c, &subReq, &subResp)
169+
}
170+
171+
func (d *Adapter[C]) StepOut(c Context, req *dap.StepOutRequest, resp *dap.StepOutResponse) error {
172+
var (
173+
subReq dap.ContinueRequest
174+
subResp dap.ContinueResponse
175+
)
176+
177+
subReq.Arguments.ThreadId = req.Arguments.ThreadId
178+
subReq.Arguments.SingleThread = req.Arguments.SingleThread
179+
return d.Continue(c, &subReq, &subResp)
180+
}
181+
159182
func (d *Adapter[C]) SetBreakpoints(c Context, req *dap.SetBreakpointsRequest, resp *dap.SetBreakpointsResponse) error {
160183
resp.Body.Breakpoints = d.breakpointMap.Set(req.Arguments.Source.Path, req.Arguments.Breakpoints)
161184
return nil
@@ -373,6 +396,8 @@ func (d *Adapter[C]) dapHandler() Handler {
373396
Launch: d.Launch,
374397
Continue: d.Continue,
375398
Next: d.Next,
399+
StepIn: d.StepIn,
400+
StepOut: d.StepOut,
376401
SetBreakpoints: d.SetBreakpoints,
377402
ConfigurationDone: d.ConfigurationDone,
378403
Disconnect: d.Disconnect,

dap/handler.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ type Handler struct {
5252
Terminate HandlerFunc[*dap.TerminateRequest, *dap.TerminateResponse]
5353
Continue HandlerFunc[*dap.ContinueRequest, *dap.ContinueResponse]
5454
Next HandlerFunc[*dap.NextRequest, *dap.NextResponse]
55+
StepIn HandlerFunc[*dap.StepInRequest, *dap.StepInResponse]
56+
StepOut HandlerFunc[*dap.StepOutRequest, *dap.StepOutResponse]
5557
Restart HandlerFunc[*dap.RestartRequest, *dap.RestartResponse]
5658
Threads HandlerFunc[*dap.ThreadsRequest, *dap.ThreadsResponse]
5759
StackTrace HandlerFunc[*dap.StackTraceRequest, *dap.StackTraceResponse]

dap/server.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ func (s *Server) handleMessage(c Context, m dap.Message) (dap.ResponseMessage, e
119119
return s.h.Continue.Do(c, req)
120120
case *dap.NextRequest:
121121
return s.h.Next.Do(c, req)
122+
case *dap.StepInRequest:
123+
return s.h.StepIn.Do(c, req)
124+
case *dap.StepOutRequest:
125+
return s.h.StepOut.Do(c, req)
122126
case *dap.RestartRequest:
123127
return s.h.Restart.Do(c, req)
124128
case *dap.ThreadsRequest:

0 commit comments

Comments
 (0)