Auto merge of #17275 - roife:fix-issue-17012, r=Veykril · rust-lang/rust@56d77b9

@@ -3,7 +3,7 @@ import * as vscode from "vscode";

33

import * as path from "path";

44

import type * as ra from "./lsp_ext";

556-

import { Cargo, type ExecutableInfo, getRustcId, getSysroot } from "./toolchain";

6+

import { Cargo, getRustcId, getSysroot } from "./toolchain";

77

import type { Ctx } from "./ctx";

88

import { prepareEnv } from "./run";

99

import { unwrapUndefinable } from "./undefinable";

@@ -12,7 +12,6 @@ const debugOutput = vscode.window.createOutputChannel("Debug");

1212

type DebugConfigProvider = (

1313

config: ra.Runnable,

1414

executable: string,

15-

cargoWorkspace: string,

1615

env: Record<string, string>,

1716

sourceFileMap?: Record<string, string>,

1817

) => vscode.DebugConfiguration;

@@ -134,7 +133,7 @@ async function getDebugConfiguration(

134133

}

135134136135

const env = prepareEnv(runnable, ctx.config.runnablesExtraEnv);

137-

const { executable, workspace: cargoWorkspace } = await getDebugExecutableInfo(runnable, env);

136+

const executable = await getDebugExecutable(runnable, env);

138137

let sourceFileMap = debugOptions.sourceFileMap;

139138

if (sourceFileMap === "auto") {

140139

// let's try to use the default toolchain

@@ -148,13 +147,7 @@ async function getDebugConfiguration(

148147

}

149148150149

const provider = unwrapUndefinable(knownEngines[debugEngine.id]);

151-

const debugConfig = provider(

152-

runnable,

153-

simplifyPath(executable),

154-

cargoWorkspace,

155-

env,

156-

sourceFileMap,

157-

);

150+

const debugConfig = provider(runnable, simplifyPath(executable), env, sourceFileMap);

158151

if (debugConfig.type in debugOptions.engineSettings) {

159152

const settingsMap = (debugOptions.engineSettings as any)[debugConfig.type];

160153

for (var key in settingsMap) {

@@ -176,21 +169,20 @@ async function getDebugConfiguration(

176169

return debugConfig;

177170

}

178171179-

async function getDebugExecutableInfo(

172+

async function getDebugExecutable(

180173

runnable: ra.Runnable,

181174

env: Record<string, string>,

182-

): Promise<ExecutableInfo> {

175+

): Promise<string> {

183176

const cargo = new Cargo(runnable.args.workspaceRoot || ".", debugOutput, env);

184-

const executableInfo = await cargo.executableInfoFromArgs(runnable.args.cargoArgs);

177+

const executable = await cargo.executableFromArgs(runnable.args.cargoArgs);

185178186179

// if we are here, there were no compilation errors.

187-

return executableInfo;

180+

return executable;

188181

}

189182190183

function getCCppDebugConfig(

191184

runnable: ra.Runnable,

192185

executable: string,

193-

cargoWorkspace: string,

194186

env: Record<string, string>,

195187

sourceFileMap?: Record<string, string>,

196188

): vscode.DebugConfiguration {

@@ -200,7 +192,7 @@ function getCCppDebugConfig(

200192

name: runnable.label,

201193

program: executable,

202194

args: runnable.args.executableArgs,

203-

cwd: cargoWorkspace || runnable.args.workspaceRoot,

195+

cwd: runnable.args.cwd || runnable.args.workspaceRoot || ".",

204196

sourceFileMap,

205197

env,

206198

// See https://github.com/rust-lang/rust-analyzer/issues/16901#issuecomment-2024486941

@@ -213,7 +205,6 @@ function getCCppDebugConfig(

213205

function getCodeLldbDebugConfig(

214206

runnable: ra.Runnable,

215207

executable: string,

216-

cargoWorkspace: string,

217208

env: Record<string, string>,

218209

sourceFileMap?: Record<string, string>,

219210

): vscode.DebugConfiguration {

@@ -223,7 +214,7 @@ function getCodeLldbDebugConfig(

223214

name: runnable.label,

224215

program: executable,

225216

args: runnable.args.executableArgs,

226-

cwd: cargoWorkspace || runnable.args.workspaceRoot,

217+

cwd: runnable.args.cwd || runnable.args.workspaceRoot || ".",

227218

sourceMap: sourceFileMap,

228219

sourceLanguages: ["rust"],

229220

env,

@@ -233,7 +224,6 @@ function getCodeLldbDebugConfig(

233224

function getNativeDebugConfig(

234225

runnable: ra.Runnable,

235226

executable: string,

236-

cargoWorkspace: string,

237227

env: Record<string, string>,

238228

_sourceFileMap?: Record<string, string>,

239229

): vscode.DebugConfiguration {

@@ -244,7 +234,7 @@ function getNativeDebugConfig(

244234

target: executable,

245235

// See https://github.com/WebFreak001/code-debug/issues/359

246236

arguments: quote(runnable.args.executableArgs),

247-

cwd: cargoWorkspace || runnable.args.workspaceRoot,

237+

cwd: runnable.args.cwd || runnable.args.workspaceRoot || ".",

248238

env,

249239

valuesFormatting: "prettyPrinters",

250240

};