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, 5 insertions, 56 deletions
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index 7b964d201b..6b6fb5f9ec 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -23,7 +23,7 @@ use crate::{
cargo_workspace::{CargoMetadataConfig, DepKind, PackageData, RustLibSource},
env::{cargo_config_env, inject_cargo_env, inject_cargo_package_env, inject_rustc_tool_env},
project_json::{Crate, CrateArrayIdx},
- sysroot::{RustLibSrcCrate, RustLibSrcWorkspace},
+ sysroot::RustLibSrcWorkspace,
toolchain_info::{rustc_cfg, target_data_layout, target_tuple, version, QueryConfig},
CargoConfig, CargoWorkspace, CfgOverrides, InvocationStrategy, ManifestPath, Package,
ProjectJson, ProjectManifest, RustSourceWorkspaceConfig, Sysroot, TargetData, TargetKind,
@@ -437,7 +437,9 @@ impl ProjectWorkspace {
if let Some(sysroot_project) = sysroot_project {
sysroot.load_workspace(&RustSourceWorkspaceConfig::Json(*sysroot_project))
} else {
- sysroot.load_workspace(&RustSourceWorkspaceConfig::Stitched)
+ sysroot.load_workspace(&RustSourceWorkspaceConfig::CargoMetadata(
+ sysroot_metadata_config(&config.extra_env, &targets),
+ ))
}
});
@@ -690,7 +692,7 @@ impl ProjectWorkspace {
exclude: krate.exclude.clone(),
})
.collect(),
- RustLibSrcWorkspace::Stitched(_) | RustLibSrcWorkspace::Empty => vec![],
+ RustLibSrcWorkspace::Empty => vec![],
};
r.push(PackageRoot {
@@ -1627,60 +1629,7 @@ fn sysroot_to_crate_graph(
extend_crate_graph_with_sysroot(crate_graph, cg, pm)
}
- RustLibSrcWorkspace::Stitched(stitched) => {
- let cfg_options = Arc::new({
- let mut cfg_options = CfgOptions::default();
- cfg_options.extend(rustc_cfg);
- cfg_options.insert_atom(sym::debug_assertions.clone());
- cfg_options.insert_atom(sym::miri.clone());
- cfg_options
- });
- let sysroot_crates: FxHashMap<RustLibSrcCrate, CrateId> = stitched
- .crates()
- .filter_map(|krate| {
- let file_id = load(&stitched[krate].root)?;
-
- let display_name = CrateDisplayName::from_canonical_name(&stitched[krate].name);
- let crate_id = crate_graph.add_crate_root(
- file_id,
- Edition::CURRENT_FIXME,
- Some(display_name),
- None,
- cfg_options.clone(),
- None,
- Env::default(),
- CrateOrigin::Lang(LangCrateOrigin::from(&*stitched[krate].name)),
- false,
- None,
- );
- Some((krate, crate_id))
- })
- .collect();
-
- for from in stitched.crates() {
- for &to in stitched[from].deps.iter() {
- let name = CrateName::new(&stitched[to].name).unwrap();
- if let (Some(&from), Some(&to)) =
- (sysroot_crates.get(&from), sysroot_crates.get(&to))
- {
- add_dep(crate_graph, from, name, to);
- }
- }
- }
- let public_deps = SysrootPublicDeps {
- deps: stitched
- .public_deps()
- .filter_map(|(name, idx, prelude)| {
- Some((name, *sysroot_crates.get(&idx)?, prelude))
- })
- .collect::<Vec<_>>(),
- };
-
- let libproc_macro =
- stitched.proc_macro().and_then(|it| sysroot_crates.get(&it).copied());
- (public_deps, libproc_macro)
- }
RustLibSrcWorkspace::Empty => (SysrootPublicDeps { deps: vec![] }, None),
}
}