internal: expose cfg attrs from hir::Crate

This commit is contained in:
Aleksey Kladov 2021-05-07 23:35:43 +03:00
parent ba86203987
commit 53f7149d45
4 changed files with 8 additions and 1 deletions

1
Cargo.lock generated
View File

@ -480,6 +480,7 @@ version = "0.0.0"
dependencies = [
"arrayvec",
"base_db",
"cfg",
"either",
"hir_def",
"hir_expand",

View File

@ -13,7 +13,7 @@ use tt::SmolStr;
pub use cfg_expr::{CfgAtom, CfgExpr};
pub use dnf::DnfExpr;
/// Configuration options used for conditional compilition on items with `cfg` attributes.
/// Configuration options used for conditional compilation on items with `cfg` attributes.
/// We have two kind of options in different namespaces: atomic options like `unix`, and
/// key-value options like `target_arch="x86"`.
///

View File

@ -25,3 +25,4 @@ hir_expand = { path = "../hir_expand", version = "0.0.0" }
hir_def = { path = "../hir_def", version = "0.0.0" }
hir_ty = { path = "../hir_ty", version = "0.0.0" }
tt = { path = "../tt", version = "0.0.0" }
cfg = { path = "../cfg", version = "0.0.0" }

View File

@ -89,6 +89,7 @@ pub use crate::{
// Generally, a refactoring which *removes* a name from this list is a good
// idea!
pub use {
cfg::{CfgAtom, CfgExpr, CfgOptions},
hir_def::{
adt::StructKind,
attr::{Attr, Attrs, AttrsWithOwner, Documentation},
@ -215,6 +216,10 @@ impl Crate {
doc_url.map(|s| s.trim_matches('"').trim_end_matches('/').to_owned() + "/")
}
pub fn cfg(&self, db: &dyn HirDatabase) -> CfgOptions {
db.crate_graph()[self.id].cfg_options.clone()
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]