Report supportsBreakpointLocationsRequest
authorTom Tromey <tromey@adacore.com>
Thu, 27 Jul 2023 16:31:32 +0000 (10:31 -0600)
committerTom Tromey <tromey@adacore.com>
Thu, 27 Jul 2023 16:35:00 +0000 (10:35 -0600)
While looking at the DAP spec, I noticed that the breakpointLocations
request is gated behind a capability.  This patch changes gdb to
report this capability.

I've also added a comment to explain the fact that arguments to
breakpointLocations are not optional, even though the spec says they
are.

gdb/python/lib/gdb/dap/locations.py

index 6c591579920ca360067960242fec344fa3531d98..594f1bad45bbd196d32d56de69091f4c0aeb6189 100644 (file)
@@ -18,7 +18,7 @@ import gdb
 # This is deprecated in 3.9, but required in older versions.
 from typing import Optional
 
-from .server import request
+from .server import capability, request
 from .startup import in_gdb_thread, send_gdb_with_response
 
 
@@ -32,7 +32,15 @@ def _find_lines(filename, start_line, end_line):
     return {"breakpoints": [{"line": x} for x in sorted(lines)]}
 
 
+# Note that the spec says that the arguments to this are optional.
+# However, calling this without arguments is nonsensical.  This is
+# discussed in:
+#   https://github.com/microsoft/debug-adapter-protocol/issues/266
+# This points out that fixing this would be an incompatibility but
+# goes on to propose "if arguments property is missing, debug adapters
+# should return an error".
 @request("breakpointLocations")
+@capability("supportsBreakpointLocationsRequest")
 def breakpoint_locations(*, source, line: int, endLine: Optional[int] = None, **extra):
     if endLine is None:
         endLine = line