https://github.com/Da-Viper created https://github.com/llvm/llvm-project/pull/104711
Fixes #103043 >From 0b84d36d320a58a13ca98bd1b1c186c72bbe63e2 Mon Sep 17 00:00:00 2001 From: Ezike Ebuka <yerimy...@gmail.com> Date: Sun, 18 Aug 2024 15:26:11 +0100 Subject: [PATCH] [lldb-dap] vscode now shows a dialog when the dab-executable is not found --- lldb/tools/lldb-dap/src-ts/extension.ts | 29 ++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/lldb/tools/lldb-dap/src-ts/extension.ts b/lldb/tools/lldb-dap/src-ts/extension.ts index 791175f7b46224..c7802eed2a513b 100644 --- a/lldb/tools/lldb-dap/src-ts/extension.ts +++ b/lldb/tools/lldb-dap/src-ts/extension.ts @@ -1,4 +1,5 @@ import * as vscode from "vscode"; +import * as fs from "node:fs/promises"; import { LLDBDapOptions } from "./types"; import { DisposableContext } from "./disposable-context"; import { LLDBDapDescriptorFactory } from "./debug-adapter-factory"; @@ -17,10 +18,32 @@ function createDefaultLLDBDapOptions(): LLDBDapOptions { const path = vscode.workspace .getConfiguration("lldb-dap", session.workspaceFolder) .get<string>("executable-path"); - if (path) { - return new vscode.DebugAdapterExecutable(path, []); + + if (!path) { + return packageJSONExecutable; + } + + try { + const fileStats = await fs.stat(path); + if (!fileStats.isFile()) { + throw new Error(`Error: ${path} is not a file`); + } + } catch (err) { + const error: Error = err as Error; + const openSettingsAction = "Open Settings"; + const callBackValue = await vscode.window.showErrorMessage( + error.message, + { modal: true }, + openSettingsAction, + ); + if (openSettingsAction === callBackValue) { + vscode.commands.executeCommand( + "workbench.action.openSettings", + "lldb-dap.executable-path", + ); + } } - return packageJSONExecutable; + return new vscode.DebugAdapterExecutable(path, []); }, }; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits