Unnamed repository; edit this file 'description' to name the repository.
Missing runnable env on debug target
Fix bug in Rust Analyzer where runnable debugging did not pass environment variable from configuration to child process of Cargo on binary build stage
Rungsikorn Rungsikavarnich 2023-03-30
parent 17e31b7 · commit fb9a1dd
-rw-r--r--editors/code/src/debug.ts9
-rw-r--r--editors/code/src/toolchain.ts7
2 files changed, 12 insertions, 4 deletions
diff --git a/editors/code/src/debug.ts b/editors/code/src/debug.ts
index 268b70b4fb..cffee1de6a 100644
--- a/editors/code/src/debug.ts
+++ b/editors/code/src/debug.ts
@@ -118,8 +118,8 @@ async function getDebugConfiguration(
return path.normalize(p).replace(wsFolder, "${workspaceFolder" + workspaceQualifier + "}");
}
- const executable = await getDebugExecutable(runnable);
const env = prepareEnv(runnable, ctx.config.runnableEnv);
+ const executable = await getDebugExecutable(runnable, env);
let sourceFileMap = debugOptions.sourceFileMap;
if (sourceFileMap === "auto") {
// let's try to use the default toolchain
@@ -156,8 +156,11 @@ async function getDebugConfiguration(
return debugConfig;
}
-async function getDebugExecutable(runnable: ra.Runnable): Promise<string> {
- const cargo = new Cargo(runnable.args.workspaceRoot || ".", debugOutput);
+async function getDebugExecutable(
+ runnable: ra.Runnable,
+ env: Record<string, string>
+): Promise<string> {
+ const cargo = new Cargo(runnable.args.workspaceRoot || ".", debugOutput, env);
const executable = await cargo.executableFromArgs(runnable.args.cargoArgs);
// if we are here, there were no compilation errors.
diff --git a/editors/code/src/toolchain.ts b/editors/code/src/toolchain.ts
index eb70b88871..917a1d6b09 100644
--- a/editors/code/src/toolchain.ts
+++ b/editors/code/src/toolchain.ts
@@ -18,7 +18,11 @@ export interface ArtifactSpec {
}
export class Cargo {
- constructor(readonly rootFolder: string, readonly output: vscode.OutputChannel) {}
+ constructor(
+ readonly rootFolder: string,
+ readonly output: vscode.OutputChannel,
+ readonly env: Record<string, string>
+ ) {}
// Made public for testing purposes
static artifactSpec(args: readonly string[]): ArtifactSpec {
@@ -102,6 +106,7 @@ export class Cargo {
const cargo = cp.spawn(path, cargoArgs, {
stdio: ["ignore", "pipe", "pipe"],
cwd: this.rootFolder,
+ env: this.env,
});
cargo.on("error", (err) => reject(new Error(`could not launch cargo: ${err}`)));