Make code more readable

This commit is contained in:
Aleksey Kladov 2020-11-17 13:35:25 +01:00
parent a0c4dbc399
commit bd4d375a64

View file

@ -197,9 +197,31 @@ impl ProjectWorkspace {
proc_macro_client: &ProcMacroClient,
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
) -> CrateGraph {
let mut crate_graph = CrateGraph::default();
match self {
let mut crate_graph = match self {
ProjectWorkspace::Json { project, sysroot } => {
project_json_to_crate_graph(target, proc_macro_client, load, project, sysroot)
}
ProjectWorkspace::Cargo { cargo, sysroot, rustc } => {
cargo_to_crate_graph(target, proc_macro_client, load, cargo, sysroot, rustc)
}
};
if crate_graph.patch_cfg_if() {
log::debug!("Patched std to depend on cfg-if")
} else {
log::debug!("Did not patch std to depend on cfg-if")
}
crate_graph
}
}
fn project_json_to_crate_graph(
target: Option<&str>,
proc_macro_client: &ProcMacroClient,
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
project: &ProjectJson,
sysroot: &Option<Sysroot>,
) -> CrateGraph {
let mut crate_graph = CrateGraph::default();
let sysroot_deps = sysroot
.as_ref()
.map(|sysroot| sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load));
@ -214,15 +236,12 @@ impl ProjectWorkspace {
})
.map(|(crate_id, krate, file_id)| {
let env = krate.env.clone().into_iter().collect();
let proc_macro = krate
.proc_macro_dylib_path
.clone()
.map(|it| proc_macro_client.by_dylib_path(&it));
let proc_macro =
krate.proc_macro_dylib_path.clone().map(|it| proc_macro_client.by_dylib_path(&it));
let target = krate.target.as_deref().or(target);
let target_cfgs = cfg_cache
.entry(target)
.or_insert_with(|| get_rustc_cfg_options(target));
let target_cfgs =
cfg_cache.entry(target).or_insert_with(|| get_rustc_cfg_options(target));
let mut cfg_options = CfgOptions::default();
cfg_options.extend(target_cfgs.iter().chain(krate.cfg.iter()).cloned());
@ -255,8 +274,18 @@ impl ProjectWorkspace {
}
}
}
}
ProjectWorkspace::Cargo { cargo, sysroot, rustc } => {
crate_graph
}
fn cargo_to_crate_graph(
target: Option<&str>,
proc_macro_client: &ProcMacroClient,
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
cargo: &CargoWorkspace,
sysroot: &Sysroot,
rustc: &Option<CargoWorkspace>,
) -> CrateGraph {
let mut crate_graph = CrateGraph::default();
let (public_deps, libproc_macro) =
sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load);
@ -397,15 +426,7 @@ impl ProjectWorkspace {
}
}
}
}
}
if crate_graph.patch_cfg_if() {
log::debug!("Patched std to depend on cfg-if")
} else {
log::debug!("Did not patch std to depend on cfg-if")
}
crate_graph
}
}
fn add_target_crate_root(