diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2023-05-02 09:16:26 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2023-05-02 17:33:58 +0200 |
| commit | 16b3febcf54e932217c08cd4fc327f49705f82de (patch) | |
| tree | b2cd4f8b645a606cbe0a727b1baa55e0a08bbdf2 | |
| parent | 9c0c13ec8e47cfe487f46136b394c0372e957968 (diff) | |
| download | rust-16b3febcf54e932217c08cd4fc327f49705f82de.tar.gz rust-16b3febcf54e932217c08cd4fc327f49705f82de.zip | |
Only pass unstable flags to cargo metadata from extra args config
| -rw-r--r-- | crates/project-model/src/cargo_workspace.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index fb98d61963c..ea680b1b709 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -293,12 +293,25 @@ impl CargoWorkspace { } meta.current_dir(current_dir.as_os_str()); - let mut other_options = config.extra_args.clone(); + let mut other_options = vec![]; + // cargo metadata only supports a subset of flags of what cargo usually accepts, and usually + // the only relevant flags for metadata here are unstable ones, so we pass those along + // but nothing else + let mut extra_args = config.extra_args.iter(); + while let Some(arg) = extra_args.next() { + if arg == "-Z" { + if let Some(arg) = extra_args.next() { + other_options.push("-Z".to_owned()); + other_options.push(arg.to_owned()); + } + } + } + if !targets.is_empty() { other_options.append( &mut targets .into_iter() - .flat_map(|target| ["--filter-platform".to_string(), target]) + .flat_map(|target| ["--filter-platform".to_owned().to_string(), target]) .collect(), ); } |
