From 63e330f402136a3a447f497f800752314bdb5a50 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Sat, 2 Jan 2021 22:06:59 +0800 Subject: [PATCH] Fix infer error of macro invocation in array expr --- crates/hir_expand/src/db.rs | 2 +- crates/hir_ty/src/tests/regression.rs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index 06f0a3ed9cc..0a0d021e055 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs @@ -404,7 +404,7 @@ fn to_fragment_kind(db: &dyn AstDatabase, id: MacroCallId) -> FragmentKind { TRY_EXPR => FragmentKind::Expr, TUPLE_EXPR => FragmentKind::Expr, PAREN_EXPR => FragmentKind::Expr, - + ARRAY_EXPR => FragmentKind::Expr, FOR_EXPR => FragmentKind::Expr, PATH_EXPR => FragmentKind::Expr, CLOSURE_EXPR => FragmentKind::Expr, diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index 307a257b177..cffe8630b47 100644 --- a/crates/hir_ty/src/tests/regression.rs +++ b/crates/hir_ty/src/tests/regression.rs @@ -325,6 +325,24 @@ fn test() { ); } +#[test] +fn infer_array_macro_call() { + check_infer( + r#" + macro_rules! bar { () => {0u32} } + fn test() { + let a = [bar!()]; + } + "#, + expect![[r#" + !0..4 '0u32': u32 + 44..69 '{ ...()]; }': () + 54..55 'a': [u32; _] + 58..66 '[bar!()]': [u32; _] + "#]], + ); +} + #[test] fn bug_1030() { check_infer(