aboutsummaryrefslogtreecommitdiff
path: root/lldb/tools/lldb-dap/DAP.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/lldb-dap/DAP.cpp')
-rw-r--r--lldb/tools/lldb-dap/DAP.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/lldb/tools/lldb-dap/DAP.cpp b/lldb/tools/lldb-dap/DAP.cpp
index cbd3b14..849712f 100644
--- a/lldb/tools/lldb-dap/DAP.cpp
+++ b/lldb/tools/lldb-dap/DAP.cpp
@@ -1406,11 +1406,15 @@ void DAP::EventThread() {
// avoids sending paths that should be source mapped. Note that
// CreateBreakpoint doesn't apply source mapping and certain
// implementation ignore the source part of this event anyway.
- llvm::json::Value source_bp = bp.ToProtocolBreakpoint();
- source_bp.getAsObject()->erase("source");
+ protocol::Breakpoint protocol_bp = bp.ToProtocolBreakpoint();
+
+ // "source" is not needed here, unless we add adapter data to be
+ // saved by the client.
+ if (protocol_bp.source && !protocol_bp.source->adapterData)
+ protocol_bp.source = std::nullopt;
llvm::json::Object body;
- body.try_emplace("breakpoint", source_bp);
+ body.try_emplace("breakpoint", protocol_bp);
body.try_emplace("reason", "changed");
llvm::json::Object bp_event = CreateEventObject("breakpoint");
@@ -1491,8 +1495,9 @@ std::vector<protocol::Breakpoint> DAP::SetSourceBreakpoints(
protocol::Breakpoint response_breakpoint =
iv->second.ToProtocolBreakpoint();
- response_breakpoint.source = source;
+ if (!response_breakpoint.source)
+ response_breakpoint.source = source;
if (!response_breakpoint.line &&
src_bp.GetLine() != LLDB_INVALID_LINE_NUMBER)
response_breakpoint.line = src_bp.GetLine();