Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/item_tree/pretty.rs')
-rw-r--r--crates/hir-def/src/item_tree/pretty.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/crates/hir-def/src/item_tree/pretty.rs b/crates/hir-def/src/item_tree/pretty.rs
index 94a6cce3ce..c89299e6d8 100644
--- a/crates/hir-def/src/item_tree/pretty.rs
+++ b/crates/hir-def/src/item_tree/pretty.rs
@@ -7,8 +7,8 @@ use span::{Edition, ErasedFileAstId};
use crate::{
item_tree::{
Const, DefDatabase, Enum, ExternBlock, ExternCrate, FieldsShape, Function, Impl, ItemTree,
- Macro2, MacroCall, MacroRules, Mod, ModItemId, ModKind, RawAttrs, RawVisibilityId, Static,
- Struct, Trait, TypeAlias, Union, Use, UseTree, UseTreeKind,
+ Macro2, MacroCall, MacroRules, Mod, ModItemId, ModKind, RawVisibilityId, Static, Struct,
+ Trait, TypeAlias, Union, Use, UseTree, UseTreeKind, attrs::AttrsOrCfg,
},
visibility::RawVisibility,
};
@@ -85,9 +85,13 @@ impl Printer<'_> {
}
}
- fn print_attrs(&mut self, attrs: &RawAttrs, inner: bool, separated_by: &str) {
+ fn print_attrs(&mut self, attrs: &AttrsOrCfg, inner: bool, separated_by: &str) {
+ let (cfg_disabled_expr, attrs) = match attrs {
+ AttrsOrCfg::Enabled { attrs } => (None, attrs),
+ AttrsOrCfg::CfgDisabled(inner_box) => (Some(&inner_box.0), &inner_box.1),
+ };
let inner = if inner { "!" } else { "" };
- for attr in &**attrs {
+ for attr in &*attrs.as_ref() {
w!(
self,
"#{}[{}{}]{}",
@@ -97,6 +101,9 @@ impl Printer<'_> {
separated_by,
);
}
+ if let Some(expr) = cfg_disabled_expr {
+ w!(self, "#{inner}[cfg({expr})]{separated_by}");
+ }
}
fn print_attrs_of(&mut self, of: ModItemId, separated_by: &str) {