Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/build_scripts.rs')
-rw-r--r--crates/project-model/src/build_scripts.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs
index 4dc3b3f349..8e1f7fdcde 100644
--- a/crates/project-model/src/build_scripts.rs
+++ b/crates/project-model/src/build_scripts.rs
@@ -64,8 +64,10 @@ impl WorkspaceBuildScripts {
config: &CargoConfig,
allowed_features: &FxHashSet<String>,
manifest_path: &ManifestPath,
+ toolchain: Option<&Version>,
sysroot: Option<&Sysroot>,
) -> io::Result<Command> {
+ const RUST_1_75: Version = Version::new(1, 75, 0);
let mut cmd = match config.run_build_script_command.as_deref() {
Some([program, args @ ..]) => {
let mut cmd = Command::new(program);
@@ -120,6 +122,10 @@ impl WorkspaceBuildScripts {
cmd.arg("-Zscript");
}
+ if toolchain.map_or(false, |it| *it >= RUST_1_75) {
+ cmd.arg("--keep-going");
+ }
+
cmd
}
};
@@ -142,11 +148,9 @@ impl WorkspaceBuildScripts {
config: &CargoConfig,
workspace: &CargoWorkspace,
progress: &dyn Fn(String),
- toolchain: &Option<Version>,
+ toolchain: Option<&Version>,
sysroot: Option<&Sysroot>,
) -> io::Result<WorkspaceBuildScripts> {
- const RUST_1_75: Version = Version::new(1, 75, 0);
-
let current_dir = match &config.invocation_location {
InvocationLocation::Root(root) if config.run_build_script_command.is_some() => {
root.as_path()
@@ -156,11 +160,13 @@ impl WorkspaceBuildScripts {
.as_ref();
let allowed_features = workspace.workspace_features();
- let mut cmd =
- Self::build_command(config, &allowed_features, workspace.manifest_path(), sysroot)?;
- if toolchain.as_ref().map_or(false, |it| *it >= RUST_1_75) {
- cmd.args(["--keep-going"]);
- }
+ let cmd = Self::build_command(
+ config,
+ &allowed_features,
+ workspace.manifest_path(),
+ toolchain,
+ sysroot,
+ )?;
Self::run_per_ws(cmd, workspace, current_dir, progress)
}
@@ -189,6 +195,7 @@ impl WorkspaceBuildScripts {
// This is not gonna be used anyways, so just construct a dummy here
&ManifestPath::try_from(workspace_root.clone()).unwrap(),
None,
+ None,
)?;
// NB: Cargo.toml could have been modified between `cargo metadata` and
// `cargo check`. We shouldn't assume that package ids we see here are