Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/workspace.rs')
-rw-r--r--crates/project-model/src/workspace.rs61
1 files changed, 33 insertions, 28 deletions
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index d53639e242..f5ba71fcd0 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -211,34 +211,35 @@ impl ProjectWorkspace {
let project_location = project_json.parent().to_path_buf();
let project_json: ProjectJson =
ProjectJson::new(Some(project_json.clone()), &project_location, data);
- ProjectWorkspace::load_inline(
- project_json,
- config.target.as_deref(),
- &config.extra_env,
- &config.cfg_overrides,
- )
+ ProjectWorkspace::load_inline(project_json, config)
}
ProjectManifest::CargoScript(rust_file) => {
ProjectWorkspace::load_detached_file(rust_file, config)?
}
ProjectManifest::CargoToml(cargo_toml) => {
let sysroot = match (&config.sysroot, &config.sysroot_src) {
- (Some(RustLibSource::Discover), None) => {
- Sysroot::discover(cargo_toml.parent(), &config.extra_env)
- }
+ (Some(RustLibSource::Discover), None) => Sysroot::discover(
+ cargo_toml.parent(),
+ &config.extra_env,
+ config.sysroot_query_metadata,
+ ),
(Some(RustLibSource::Discover), Some(sysroot_src)) => {
Sysroot::discover_with_src_override(
cargo_toml.parent(),
&config.extra_env,
sysroot_src.clone(),
+ config.sysroot_query_metadata,
)
}
- (Some(RustLibSource::Path(path)), None) => {
- Sysroot::discover_sysroot_src_dir(path.clone())
- }
- (Some(RustLibSource::Path(sysroot)), Some(sysroot_src)) => {
- Sysroot::load(Some(sysroot.clone()), Some(sysroot_src.clone()))
- }
+ (Some(RustLibSource::Path(path)), None) => Sysroot::discover_sysroot_src_dir(
+ path.clone(),
+ config.sysroot_query_metadata,
+ ),
+ (Some(RustLibSource::Path(sysroot)), Some(sysroot_src)) => Sysroot::load(
+ Some(sysroot.clone()),
+ Some(sysroot_src.clone()),
+ config.sysroot_query_metadata,
+ ),
(None, _) => Sysroot::empty(),
};
tracing::info!(workspace = %cargo_toml, src_root = ?sysroot.src_root(), root = ?sysroot.root(), "Using sysroot");
@@ -352,20 +353,19 @@ impl ProjectWorkspace {
Ok(res)
}
- pub fn load_inline(
- project_json: ProjectJson,
- target: Option<&str>,
- extra_env: &FxHashMap<String, String>,
- cfg_overrides: &CfgOverrides,
- ) -> ProjectWorkspace {
- let sysroot = Sysroot::load(project_json.sysroot.clone(), project_json.sysroot_src.clone());
+ pub fn load_inline(project_json: ProjectJson, config: &CargoConfig) -> ProjectWorkspace {
+ let sysroot = Sysroot::load(
+ project_json.sysroot.clone(),
+ project_json.sysroot_src.clone(),
+ config.sysroot_query_metadata,
+ );
let cfg_config = RustcCfgConfig::Rustc(&sysroot);
let data_layout_config = RustcDataLayoutConfig::Rustc(&sysroot);
let toolchain = match get_toolchain_version(
project_json.path(),
&sysroot,
Tool::Rustc,
- extra_env,
+ &config.extra_env,
"rustc ",
) {
Ok(it) => it,
@@ -375,15 +375,16 @@ impl ProjectWorkspace {
}
};
- let rustc_cfg = rustc_cfg::get(target, extra_env, cfg_config);
- let data_layout = target_data_layout::get(data_layout_config, target, extra_env);
+ let target = config.target.as_deref();
+ let rustc_cfg = rustc_cfg::get(target, &config.extra_env, cfg_config);
+ let data_layout = target_data_layout::get(data_layout_config, target, &config.extra_env);
ProjectWorkspace {
kind: ProjectWorkspaceKind::Json(project_json),
sysroot,
rustc_cfg,
toolchain,
target_layout: data_layout.map(Arc::from).map_err(|it| Arc::from(it.to_string())),
- cfg_overrides: cfg_overrides.clone(),
+ cfg_overrides: config.cfg_overrides.clone(),
}
}
@@ -393,8 +394,12 @@ impl ProjectWorkspace {
) -> anyhow::Result<ProjectWorkspace> {
let dir = detached_file.parent();
let sysroot = match &config.sysroot {
- Some(RustLibSource::Path(path)) => Sysroot::discover_sysroot_src_dir(path.clone()),
- Some(RustLibSource::Discover) => Sysroot::discover(dir, &config.extra_env),
+ Some(RustLibSource::Path(path)) => {
+ Sysroot::discover_sysroot_src_dir(path.clone(), config.sysroot_query_metadata)
+ }
+ Some(RustLibSource::Discover) => {
+ Sysroot::discover(dir, &config.extra_env, config.sysroot_query_metadata)
+ }
None => Sysroot::empty(),
};