[lldb-vscode] Allow an empty 'breakpoints' field to clear breakpoints.
authorJordan Rupprecht <rupprecht@google.com>
Wed, 30 Sep 2020 18:24:10 +0000 (11:24 -0700)
committerJordan Rupprecht <rupprecht@google.com>
Wed, 30 Sep 2020 18:32:06 +0000 (11:32 -0700)
commitad865d9d10b8cf93738470175aae1be7a4a3eb6b
tree80042fbaecf03665f5d08615e4ec7013d529b6da
parent655af658c93bf7f133341e7eb5a2dfa176282781
[lldb-vscode] Allow an empty 'breakpoints' field to clear breakpoints.

Per the DAP spec for SetBreakpoints [1], the way to clear breakpoints is: `To clear all breakpoint for a source, specify an empty array.`

However, leaving the breakpoints field unset is also a well formed request (note the `breakpoints?:` in the `SetBreakpointsArguments` definition). If it's unset, we have a couple choices:

1. Crash (current behavior)
2. Clear breakpoints
3. Return an error response that the breakpoints field is missing.

I propose we do (2) instead of (1), and treat an unset breakpoints field the same as an empty breakpoints field.

[1] https://microsoft.github.io/debug-adapter-protocol/specification#Requests_SetBreakpoints

Reviewed By: wallace, labath

Differential Revision: https://reviews.llvm.org/D88513
lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
lldb/test/API/tools/lldb-vscode/breakpoint/TestVSCode_setBreakpoints.py
lldb/tools/lldb-vscode/lldb-vscode.cpp