mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Make code more readable
This commit is contained in:
parent
a0c4dbc399
commit
bd4d375a64
1 changed files with 219 additions and 198 deletions
|
@ -197,9 +197,31 @@ impl ProjectWorkspace {
|
||||||
proc_macro_client: &ProcMacroClient,
|
proc_macro_client: &ProcMacroClient,
|
||||||
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
|
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
|
||||||
) -> CrateGraph {
|
) -> CrateGraph {
|
||||||
let mut crate_graph = CrateGraph::default();
|
let mut crate_graph = match self {
|
||||||
match self {
|
|
||||||
ProjectWorkspace::Json { project, sysroot } => {
|
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
|
let sysroot_deps = sysroot
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|sysroot| sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load));
|
.map(|sysroot| sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load));
|
||||||
|
@ -214,15 +236,12 @@ impl ProjectWorkspace {
|
||||||
})
|
})
|
||||||
.map(|(crate_id, krate, file_id)| {
|
.map(|(crate_id, krate, file_id)| {
|
||||||
let env = krate.env.clone().into_iter().collect();
|
let env = krate.env.clone().into_iter().collect();
|
||||||
let proc_macro = krate
|
let proc_macro =
|
||||||
.proc_macro_dylib_path
|
krate.proc_macro_dylib_path.clone().map(|it| proc_macro_client.by_dylib_path(&it));
|
||||||
.clone()
|
|
||||||
.map(|it| proc_macro_client.by_dylib_path(&it));
|
|
||||||
|
|
||||||
let target = krate.target.as_deref().or(target);
|
let target = krate.target.as_deref().or(target);
|
||||||
let target_cfgs = cfg_cache
|
let target_cfgs =
|
||||||
.entry(target)
|
cfg_cache.entry(target).or_insert_with(|| get_rustc_cfg_options(target));
|
||||||
.or_insert_with(|| get_rustc_cfg_options(target));
|
|
||||||
|
|
||||||
let mut cfg_options = CfgOptions::default();
|
let mut cfg_options = CfgOptions::default();
|
||||||
cfg_options.extend(target_cfgs.iter().chain(krate.cfg.iter()).cloned());
|
cfg_options.extend(target_cfgs.iter().chain(krate.cfg.iter()).cloned());
|
||||||
|
@ -255,8 +274,18 @@ impl ProjectWorkspace {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
crate_graph
|
||||||
}
|
}
|
||||||
ProjectWorkspace::Cargo { cargo, sysroot, rustc } => {
|
|
||||||
|
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) =
|
let (public_deps, libproc_macro) =
|
||||||
sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load);
|
sysroot_to_crate_graph(&mut crate_graph, sysroot, target, load);
|
||||||
|
|
||||||
|
@ -397,16 +426,8 @@ 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
|
crate_graph
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fn add_target_crate_root(
|
fn add_target_crate_root(
|
||||||
crate_graph: &mut CrateGraph,
|
crate_graph: &mut CrateGraph,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue