Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir-def/src/expr_store/lower.rs10
-rw-r--r--crates/hir-def/src/expr_store/tests/body.rs21
2 files changed, 30 insertions, 1 deletions
diff --git a/crates/hir-def/src/expr_store/lower.rs b/crates/hir-def/src/expr_store/lower.rs
index 74006c6037..7fe91a3d02 100644
--- a/crates/hir-def/src/expr_store/lower.rs
+++ b/crates/hir-def/src/expr_store/lower.rs
@@ -1465,7 +1465,15 @@ impl<'db> ExprCollector<'db> {
match kind {
ArrayExprKind::ElementList(e) => {
- let elements = e.map(|expr| self.collect_expr(expr)).collect();
+ let elements = e
+ .filter_map(|expr| {
+ if self.check_cfg(&expr) {
+ Some(self.collect_expr(expr))
+ } else {
+ None
+ }
+ })
+ .collect();
self.alloc_expr(Expr::Array(Array::ElementList { elements }), syntax_ptr)
}
ArrayExprKind::Repeat { initializer, repeat } => {
diff --git a/crates/hir-def/src/expr_store/tests/body.rs b/crates/hir-def/src/expr_store/tests/body.rs
index 985cd96662..4e5f2ca893 100644
--- a/crates/hir-def/src/expr_store/tests/body.rs
+++ b/crates/hir-def/src/expr_store/tests/body.rs
@@ -660,3 +660,24 @@ async fn main(&self, param1: i32, ref mut param2: i32, _: i32, param4 @ _: i32,
}"#]],
)
}
+
+#[test]
+fn array_element_cfg() {
+ pretty_print(
+ r#"
+fn foo() {
+ [
+ (),
+ #[cfg(false)]
+ ()
+ ];
+}
+ "#,
+ expect![[r#"
+ fn foo() {
+ [
+ (),
+ ];
+ }"#]],
+ );
+}