mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 22:31:43 +00:00
Simplify
This commit is contained in:
parent
d9f5709609
commit
a6c067c06d
14 changed files with 89 additions and 88 deletions
|
@ -156,7 +156,11 @@ impl ProjectWorkspace {
|
|||
})?;
|
||||
let project_location = project_json.parent().to_path_buf();
|
||||
let project_json = ProjectJson::new(&project_location, data);
|
||||
ProjectWorkspace::load_inline(project_json, config.target.as_deref(), config)?
|
||||
ProjectWorkspace::load_inline(
|
||||
project_json,
|
||||
config.target.as_deref(),
|
||||
&config.extra_env,
|
||||
)?
|
||||
}
|
||||
ProjectManifest::CargoToml(cargo_toml) => {
|
||||
let cargo_version = utf8_stdout({
|
||||
|
@ -187,17 +191,21 @@ impl ProjectWorkspace {
|
|||
let sysroot = if config.no_sysroot {
|
||||
None
|
||||
} else {
|
||||
Some(Sysroot::discover(cargo_toml.parent(), config).with_context(|| {
|
||||
format!(
|
||||
Some(Sysroot::discover(cargo_toml.parent(), &config.extra_env).with_context(
|
||||
|| {
|
||||
format!(
|
||||
"Failed to find sysroot for Cargo.toml file {}. Is rust-src installed?",
|
||||
cargo_toml.display()
|
||||
)
|
||||
})?)
|
||||
},
|
||||
)?)
|
||||
};
|
||||
|
||||
let rustc_dir = match &config.rustc_source {
|
||||
Some(RustcSource::Path(path)) => ManifestPath::try_from(path.clone()).ok(),
|
||||
Some(RustcSource::Discover) => Sysroot::discover_rustc(&cargo_toml, config),
|
||||
Some(RustcSource::Discover) => {
|
||||
Sysroot::discover_rustc(&cargo_toml, &config.extra_env)
|
||||
}
|
||||
None => None,
|
||||
};
|
||||
|
||||
|
@ -217,7 +225,8 @@ impl ProjectWorkspace {
|
|||
None => None,
|
||||
};
|
||||
|
||||
let rustc_cfg = rustc_cfg::get(Some(&cargo_toml), config.target.as_deref(), config);
|
||||
let rustc_cfg =
|
||||
rustc_cfg::get(Some(&cargo_toml), config.target.as_deref(), &config.extra_env);
|
||||
|
||||
let cfg_overrides = config.cfg_overrides();
|
||||
ProjectWorkspace::Cargo {
|
||||
|
@ -238,7 +247,7 @@ impl ProjectWorkspace {
|
|||
pub fn load_inline(
|
||||
project_json: ProjectJson,
|
||||
target: Option<&str>,
|
||||
config: &CargoConfig,
|
||||
extra_env: &FxHashMap<String, String>,
|
||||
) -> Result<ProjectWorkspace> {
|
||||
let sysroot = match (project_json.sysroot.clone(), project_json.sysroot_src.clone()) {
|
||||
(Some(sysroot), Some(sysroot_src)) => Some(Sysroot::load(sysroot, sysroot_src)?),
|
||||
|
@ -260,7 +269,7 @@ impl ProjectWorkspace {
|
|||
(None, None) => None,
|
||||
};
|
||||
|
||||
let rustc_cfg = rustc_cfg::get(None, target, config);
|
||||
let rustc_cfg = rustc_cfg::get(None, target, extra_env);
|
||||
Ok(ProjectWorkspace::Json { project: project_json, sysroot, rustc_cfg })
|
||||
}
|
||||
|
||||
|
@ -270,9 +279,9 @@ impl ProjectWorkspace {
|
|||
.first()
|
||||
.and_then(|it| it.parent())
|
||||
.ok_or_else(|| format_err!("No detached files to load"))?,
|
||||
&CargoConfig::default(),
|
||||
&Default::default(),
|
||||
)?;
|
||||
let rustc_cfg = rustc_cfg::get(None, None, &CargoConfig::default());
|
||||
let rustc_cfg = rustc_cfg::get(None, None, &Default::default());
|
||||
Ok(ProjectWorkspace::DetachedFiles { files: detached_files, sysroot, rustc_cfg })
|
||||
}
|
||||
|
||||
|
@ -419,7 +428,7 @@ impl ProjectWorkspace {
|
|||
&self,
|
||||
load_proc_macro: &mut dyn FnMut(&str, &AbsPath) -> ProcMacroLoadResult,
|
||||
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
|
||||
config: &CargoConfig,
|
||||
extra_env: &FxHashMap<String, String>,
|
||||
) -> CrateGraph {
|
||||
let _p = profile::span("ProjectWorkspace::to_crate_graph");
|
||||
|
||||
|
@ -430,7 +439,7 @@ impl ProjectWorkspace {
|
|||
load,
|
||||
project,
|
||||
sysroot,
|
||||
config,
|
||||
extra_env,
|
||||
),
|
||||
ProjectWorkspace::Cargo {
|
||||
cargo,
|
||||
|
@ -469,7 +478,7 @@ fn project_json_to_crate_graph(
|
|||
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
|
||||
project: &ProjectJson,
|
||||
sysroot: &Option<Sysroot>,
|
||||
config: &CargoConfig,
|
||||
extra_env: &FxHashMap<String, String>,
|
||||
) -> CrateGraph {
|
||||
let mut crate_graph = CrateGraph::default();
|
||||
let sysroot_deps = sysroot
|
||||
|
@ -497,7 +506,7 @@ fn project_json_to_crate_graph(
|
|||
let target_cfgs = match krate.target.as_deref() {
|
||||
Some(target) => cfg_cache
|
||||
.entry(target)
|
||||
.or_insert_with(|| rustc_cfg::get(None, Some(target), config)),
|
||||
.or_insert_with(|| rustc_cfg::get(None, Some(target), extra_env)),
|
||||
None => &rustc_cfg,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue