From 624ee2314798573d9df93be860cf10aa629a0e0e Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Wed, 29 Sep 2021 21:06:37 +0200 Subject: [PATCH 1/2] Use the right HirFileId for LowerCtx when expanding macros in fn parameter types --- crates/hir_def/src/generics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/hir_def/src/generics.rs b/crates/hir_def/src/generics.rs index 8c5313fa45..8622357cd4 100644 --- a/crates/hir_def/src/generics.rs +++ b/crates/hir_def/src/generics.rs @@ -299,7 +299,7 @@ impl GenericParams { let macro_call = mc.to_node(db.upcast()); match expander.enter_expand::(db, macro_call) { Ok(ExpandResult { value: Some((mark, expanded)), .. }) => { - let ctx = LowerCtx::new(db, mc.file_id); + let ctx = LowerCtx::new(db, expander.current_file_id()); let type_ref = TypeRef::from_ast(&ctx, expanded); self.fill_implicit_impl_trait_args(db, expander, &type_ref); expander.exit(db, mark); From 034dd41ea81264a6cb3f4e84d49a99ecd4a96406 Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Wed, 29 Sep 2021 21:06:44 +0200 Subject: [PATCH 2/2] Add regression test --- crates/hir_ty/src/tests/regression.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index 2f38d584a1..67952edca3 100644 --- a/crates/hir_ty/src/tests/regression.rs +++ b/crates/hir_ty/src/tests/regression.rs @@ -1198,3 +1198,26 @@ fn bar() { "#, ) } + +#[test] +fn nested_macro_in_fn_params() { + check_no_mismatches( + r#" +macro_rules! U32Inner { + () => { + u32 + }; +} + +macro_rules! U32 { + () => { + U32Inner!() + }; +} + +fn mamba(a: U32!(), p: u32) -> u32 { + a +} + "#, + ) +}