Author: John Harrison Date: 2025-05-07T11:49:53-07:00 New Revision: 854b9e931703dd1b9d8a2b0fe8da787f9e26058d
URL: https://github.com/llvm/llvm-project/commit/854b9e931703dd1b9d8a2b0fe8da787f9e26058d DIFF: https://github.com/llvm/llvm-project/commit/854b9e931703dd1b9d8a2b0fe8da787f9e26058d.diff LOG: [lldb-dap] Format extension typescript. (#138925) I think the format checker isn't checking typescript files. I ran `npm run format` to fix the extenion typescript. Added: Modified: lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts lldb/tools/lldb-dap/src-ts/uri-launch-handler.ts Removed: ################################################################################ diff --git a/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts b/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts index 8a4089008b2f9..c91b101f4a9ba 100644 --- a/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts +++ b/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts @@ -21,79 +21,97 @@ async function isServerModeSupported(exe: string): Promise<boolean> { } interface BoolConfig { - type: 'boolean'; + type: "boolean"; default: boolean; } interface StringConfig { - type: 'string'; + type: "string"; default: string; } interface NumberConfig { - type: 'number'; + type: "number"; default: number; } interface StringArrayConfig { - type: 'stringArray'; + type: "stringArray"; default: string[]; } -type DefaultConfig = BoolConfig | NumberConfig | StringConfig | StringArrayConfig; +type DefaultConfig = + | BoolConfig + | NumberConfig + | StringConfig + | StringArrayConfig; const configurations: Record<string, DefaultConfig> = { // Keys for debugger configurations. - "commandEscapePrefix": { type: "string", default: "`" }, - "customFrameFormat": { type: "string", default: "" }, - "customThreadFormat": { type: "string", default: "" }, - "detachOnError": { type: "boolean", default: false }, - "disableASLR": { type: "boolean", default: true }, - "disableSTDIO": { type: "boolean", default: false }, - "displayExtendedBacktrace": { type: "boolean", default: false }, - "enableAutoVariableSummaries": { type: "boolean", default: false }, - "enableSyntheticChildDebugging": { type: "boolean", default: false }, - "timeout": { type: "number", default: 30 }, + commandEscapePrefix: { type: "string", default: "`" }, + customFrameFormat: { type: "string", default: "" }, + customThreadFormat: { type: "string", default: "" }, + detachOnError: { type: "boolean", default: false }, + disableASLR: { type: "boolean", default: true }, + disableSTDIO: { type: "boolean", default: false }, + displayExtendedBacktrace: { type: "boolean", default: false }, + enableAutoVariableSummaries: { type: "boolean", default: false }, + enableSyntheticChildDebugging: { type: "boolean", default: false }, + timeout: { type: "number", default: 30 }, // Keys for platform / target configuration. - "platformName": { type: "string", default: "" }, - "targetTriple": { type: "string", default: "" }, + platformName: { type: "string", default: "" }, + targetTriple: { type: "string", default: "" }, // Keys for debugger command hooks. - "initCommands": { type: "stringArray", default: [] }, - "preRunCommands": { type: "stringArray", default: [] }, - "postRunCommands": { type: "stringArray", default: [] }, - "stopCommands": { type: "stringArray", default: [] }, - "exitCommands": { type: "stringArray", default: [] }, - "terminateCommands": { type: "stringArray", default: [] }, + initCommands: { type: "stringArray", default: [] }, + preRunCommands: { type: "stringArray", default: [] }, + postRunCommands: { type: "stringArray", default: [] }, + stopCommands: { type: "stringArray", default: [] }, + exitCommands: { type: "stringArray", default: [] }, + terminateCommands: { type: "stringArray", default: [] }, }; export class LLDBDapConfigurationProvider - implements vscode.DebugConfigurationProvider { - constructor(private readonly server: LLDBDapServer) { } + implements vscode.DebugConfigurationProvider +{ + constructor(private readonly server: LLDBDapServer) {} async resolveDebugConfiguration( folder: vscode.WorkspaceFolder | undefined, debugConfiguration: vscode.DebugConfiguration, - token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration> { - let config = vscode.workspace.getConfiguration('lldb-dap.defaults'); + token?: vscode.CancellationToken, + ): Promise<vscode.DebugConfiguration> { + let config = vscode.workspace.getConfiguration("lldb-dap.defaults"); for (const [key, cfg] of Object.entries(configurations)) { - if (Reflect.has(debugConfiguration, key)) continue; + if (Reflect.has(debugConfiguration, key)) { + continue; + } const value = config.get(key); - if (value === cfg.default) continue; + if (!value || value === cfg.default) { + continue; + } switch (cfg.type) { - case 'string': - if (typeof value !== 'string') + case "string": + if (typeof value !== "string") { throw new Error(`Expected ${key} to be a string, got ${value}`); + } break; - case 'number': - if (typeof value !== 'number') + case "number": + if (typeof value !== "number") { throw new Error(`Expected ${key} to be a number, got ${value}`); + } break; - case 'boolean': - if (typeof value !== 'boolean') + case "boolean": + if (typeof value !== "boolean") { throw new Error(`Expected ${key} to be a boolean, got ${value}`); + } break; - case 'stringArray': - if (typeof value !== 'object' && Array.isArray(value)) - throw new Error(`Expected ${key} to be a array of strings, got ${value}`); - if ((value as string[]).length === 0) continue; + case "stringArray": + if (typeof value !== "object" && Array.isArray(value)) { + throw new Error( + `Expected ${key} to be a array of strings, got ${value}`, + ); + } + if ((value as string[]).length === 0) { + continue; + } break; } diff --git a/lldb/tools/lldb-dap/src-ts/uri-launch-handler.ts b/lldb/tools/lldb-dap/src-ts/uri-launch-handler.ts index 0c3b1e9a00d9e..d45c1820eec75 100644 --- a/lldb/tools/lldb-dap/src-ts/uri-launch-handler.ts +++ b/lldb/tools/lldb-dap/src-ts/uri-launch-handler.ts @@ -1,78 +1,102 @@ import * as vscode from "vscode"; export class LaunchUriHandler implements vscode.UriHandler { - async handleUri(uri: vscode.Uri) { - try { - const params = new URLSearchParams(uri.query); - if (uri.path == '/start') { - // Some properties have default values - let debugConfig: vscode.DebugConfiguration = { - type: 'lldb-dap', - request: 'launch', - name: '', - }; - // The `config` parameter allows providing a complete JSON-encoded configuration - const configJson = params.get("config"); - if (configJson !== null) { - Object.assign(debugConfig, JSON.parse(configJson)); - } - // Furthermore, some frequently used parameters can also be provided as separate parameters - const stringKeys = ["name", "request", "program", "cwd", "debuggerRoot"]; - const numberKeys = ["pid"]; - const arrayKeys = [ - "args", "initCommands", "preRunCommands", "stopCommands", "exitCommands", - "terminateCommands", "launchCommands", "attachCommands" - ]; - for (const key of stringKeys) { - const value = params.get(key); - if (value) { - debugConfig[key] = value; - } - } - for (const key of numberKeys) { - const value = params.get(key); - if (value) { - debugConfig[key] = Number(value); - } - } - for (const key of arrayKeys) { - // `getAll()` returns an array of strings. - const value = params.getAll(key); - if (value) { - debugConfig[key] = value; - } - } - // Report an error if we received any unknown parameters - const supportedKeys = new Set<string>(["config"].concat(stringKeys).concat(numberKeys).concat(arrayKeys)); - const presentKeys = new Set<string>(params.keys()); - // FIXME: Use `Set. diff erence` as soon as ES2024 is widely available - const unknownKeys = new Set<string>(); - for (const k of presentKeys.keys()) { - if (!supportedKeys.has(k)) { - unknownKeys.add(k); - } - } - if (unknownKeys.size > 0) { - throw new Error(`Unsupported URL parameters: ${Array.from(unknownKeys.keys()).join(", ")}`); - } - // Prodide a default for the config name - const defaultName = debugConfig.request == 'launch' ? "URL-based Launch" : "URL-based Attach"; - debugConfig.name = debugConfig.name || debugConfig.program || defaultName; - // Force the type to `lldb-dap`. We don't want to allow launching any other - // Debug Adapters using this URI scheme. - if (debugConfig.type != "lldb-dap") { - throw new Error(`Unsupported debugger type: ${debugConfig.type}`); - } - await vscode.debug.startDebugging(undefined, debugConfig); - } else { - throw new Error(`Unsupported Uri path: ${uri.path}`); - } - } catch (err) { - if (err instanceof Error) { - await vscode.window.showErrorMessage(`Failed to handle lldb-dap URI request: ${err.message}`); - } else { - await vscode.window.showErrorMessage(`Failed to handle lldb-dap URI request: ${JSON.stringify(err)}`); - } + async handleUri(uri: vscode.Uri) { + try { + const params = new URLSearchParams(uri.query); + if (uri.path == "/start") { + // Some properties have default values + let debugConfig: vscode.DebugConfiguration = { + type: "lldb-dap", + request: "launch", + name: "", + }; + // The `config` parameter allows providing a complete JSON-encoded configuration + const configJson = params.get("config"); + if (configJson !== null) { + Object.assign(debugConfig, JSON.parse(configJson)); } + // Furthermore, some frequently used parameters can also be provided as separate parameters + const stringKeys = [ + "name", + "request", + "program", + "cwd", + "debuggerRoot", + ]; + const numberKeys = ["pid"]; + const arrayKeys = [ + "args", + "initCommands", + "preRunCommands", + "stopCommands", + "exitCommands", + "terminateCommands", + "launchCommands", + "attachCommands", + ]; + for (const key of stringKeys) { + const value = params.get(key); + if (value) { + debugConfig[key] = value; + } + } + for (const key of numberKeys) { + const value = params.get(key); + if (value) { + debugConfig[key] = Number(value); + } + } + for (const key of arrayKeys) { + // `getAll()` returns an array of strings. + const value = params.getAll(key); + if (value) { + debugConfig[key] = value; + } + } + // Report an error if we received any unknown parameters + const supportedKeys = new Set<string>( + ["config"].concat(stringKeys).concat(numberKeys).concat(arrayKeys), + ); + const presentKeys = new Set<string>(params.keys()); + // FIXME: Use `Set. diff erence` as soon as ES2024 is widely available + const unknownKeys = new Set<string>(); + for (const k of presentKeys.keys()) { + if (!supportedKeys.has(k)) { + unknownKeys.add(k); + } + } + if (unknownKeys.size > 0) { + throw new Error( + `Unsupported URL parameters: ${Array.from(unknownKeys.keys()).join(", ")}`, + ); + } + // Prodide a default for the config name + const defaultName = + debugConfig.request == "launch" + ? "URL-based Launch" + : "URL-based Attach"; + debugConfig.name = + debugConfig.name || debugConfig.program || defaultName; + // Force the type to `lldb-dap`. We don't want to allow launching any other + // Debug Adapters using this URI scheme. + if (debugConfig.type != "lldb-dap") { + throw new Error(`Unsupported debugger type: ${debugConfig.type}`); + } + await vscode.debug.startDebugging(undefined, debugConfig); + } else { + throw new Error(`Unsupported Uri path: ${uri.path}`); + } + } catch (err) { + if (err instanceof Error) { + await vscode.window.showErrorMessage( + `Failed to handle lldb-dap URI request: ${err.message}`, + ); + } else { + await vscode.window.showErrorMessage( + `Failed to handle lldb-dap URI request: ${JSON.stringify(err)}`, + ); + } } + } } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits