diff options
Diffstat (limited to 'crates/ra_hir_def/src/adt.rs')
-rw-r--r-- | crates/ra_hir_def/src/adt.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/crates/ra_hir_def/src/adt.rs b/crates/ra_hir_def/src/adt.rs index 8eef51828..2bc34d449 100644 --- a/crates/ra_hir_def/src/adt.rs +++ b/crates/ra_hir_def/src/adt.rs | |||
@@ -117,7 +117,14 @@ fn lower_enum( | |||
117 | ast: &InFile<ast::EnumDef>, | 117 | ast: &InFile<ast::EnumDef>, |
118 | module_id: ModuleId, | 118 | module_id: ModuleId, |
119 | ) { | 119 | ) { |
120 | for var in ast.value.variant_list().into_iter().flat_map(|it| it.variants()) { | 120 | let expander = CfgExpander::new(db, ast.file_id, module_id.krate); |
121 | let variants = ast | ||
122 | .value | ||
123 | .variant_list() | ||
124 | .into_iter() | ||
125 | .flat_map(|it| it.variants()) | ||
126 | .filter(|var| expander.is_cfg_enabled(var)); | ||
127 | for var in variants { | ||
121 | trace.alloc( | 128 | trace.alloc( |
122 | || var.clone(), | 129 | || var.clone(), |
123 | || EnumVariantData { | 130 | || EnumVariantData { |
@@ -209,8 +216,7 @@ fn lower_struct( | |||
209 | match &ast.value { | 216 | match &ast.value { |
210 | ast::StructKind::Tuple(fl) => { | 217 | ast::StructKind::Tuple(fl) => { |
211 | for (i, fd) in fl.fields().enumerate() { | 218 | for (i, fd) in fl.fields().enumerate() { |
212 | let attrs = expander.parse_attrs(&fd); | 219 | if !expander.is_cfg_enabled(&fd) { |
213 | if !expander.is_cfg_enabled(&attrs) { | ||
214 | continue; | 220 | continue; |
215 | } | 221 | } |
216 | 222 | ||
@@ -227,8 +233,7 @@ fn lower_struct( | |||
227 | } | 233 | } |
228 | ast::StructKind::Record(fl) => { | 234 | ast::StructKind::Record(fl) => { |
229 | for fd in fl.fields() { | 235 | for fd in fl.fields() { |
230 | let attrs = expander.parse_attrs(&fd); | 236 | if !expander.is_cfg_enabled(&fd) { |
231 | if !expander.is_cfg_enabled(&attrs) { | ||
232 | continue; | 237 | continue; |
233 | } | 238 | } |
234 | 239 | ||