Skip to content

Commit

Permalink
Cleanup crate_graph construction
Browse files Browse the repository at this point in the history
  • Loading branch information
Veykril committed Mar 31, 2023
1 parent 31db1fc commit b3919ea
Show file tree
Hide file tree
Showing 7 changed files with 335 additions and 333 deletions.
12 changes: 6 additions & 6 deletions crates/base-db/src/fixture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ impl ChangeFixture {
meta.edition,
Some(crate_name.clone().into()),
version,
meta.cfg.clone(),
meta.cfg,
Default::default(),
meta.env,
false,
origin,
Expand Down Expand Up @@ -197,8 +197,8 @@ impl ChangeFixture {
Edition::CURRENT,
Some(CrateName::new("test").unwrap().into()),
None,
default_cfg.clone(),
default_cfg,
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand Down Expand Up @@ -241,8 +241,8 @@ impl ChangeFixture {
Edition::Edition2021,
Some(CrateDisplayName::from_canonical_name("core".to_string())),
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Lang(LangCrateOrigin::Core),
Expand Down Expand Up @@ -280,8 +280,8 @@ impl ChangeFixture {
Edition::Edition2021,
Some(CrateDisplayName::from_canonical_name("proc_macros".to_string())),
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
true,
CrateOrigin::Local { repo: None, name: None },
Expand Down
47 changes: 24 additions & 23 deletions crates/base-db/src/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ pub struct CrateData {
/// `Dependency` matters), this name should only be used for UI.
pub display_name: Option<CrateDisplayName>,
pub cfg_options: CfgOptions,
pub potential_cfg_options: CfgOptions,
/// The cfg options that could be used by the crate
pub potential_cfg_options: Option<CfgOptions>,
pub env: Env,
pub dependencies: Vec<Dependency>,
pub origin: CrateOrigin,
Expand Down Expand Up @@ -356,7 +357,7 @@ impl CrateGraph {
display_name: Option<CrateDisplayName>,
version: Option<String>,
cfg_options: CfgOptions,
potential_cfg_options: CfgOptions,
potential_cfg_options: Option<CfgOptions>,
env: Env,
is_proc_macro: bool,
origin: CrateOrigin,
Expand Down Expand Up @@ -673,7 +674,7 @@ impl fmt::Display for CyclicDependenciesError {
mod tests {
use crate::CrateOrigin;

use super::{CfgOptions, CrateGraph, CrateName, Dependency, Edition::Edition2018, Env, FileId};
use super::{CrateGraph, CrateName, Dependency, Edition::Edition2018, Env, FileId};

#[test]
fn detect_cyclic_dependency_indirect() {
Expand All @@ -683,8 +684,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -696,8 +697,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -709,8 +710,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -736,8 +737,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -749,8 +750,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -773,8 +774,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -786,8 +787,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -799,8 +800,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -823,8 +824,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand All @@ -836,8 +837,8 @@ mod tests {
Edition2018,
None,
None,
CfgOptions::default(),
CfgOptions::default(),
Default::default(),
Default::default(),
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand Down
3 changes: 2 additions & 1 deletion crates/hir/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ impl Crate {
}

pub fn potential_cfg(&self, db: &dyn HirDatabase) -> CfgOptions {
db.crate_graph()[self.id].potential_cfg_options.clone()
let data = &db.crate_graph()[self.id];
data.potential_cfg_options.clone().unwrap_or_else(|| data.cfg_options.clone())
}
}

Expand Down
2 changes: 1 addition & 1 deletion crates/ide/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ impl Analysis {
None,
None,
cfg_options.clone(),
cfg_options,
None,
Env::default(),
false,
CrateOrigin::Local { repo: None, name: None },
Expand Down
8 changes: 8 additions & 0 deletions crates/project-model/src/cfg_flag.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ impl Extend<CfgFlag> for CfgOptions {
}
}

impl FromIterator<CfgFlag> for CfgOptions {
fn from_iter<T: IntoIterator<Item = CfgFlag>>(iter: T) -> Self {
let mut this = CfgOptions::default();
this.extend(iter);
this
}
}

impl fmt::Display for CfgFlag {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Expand Down
Loading

0 comments on commit b3919ea

Please sign in to comment.