fix: Fix block defmap not looking into tail expressions for macro calls
This commit is contained in:
parent
b6e7cf3201
commit
d038892947
@ -395,3 +395,25 @@ fn foo() {
|
||||
"#]],
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn trailing_expr_macro_expands_stmts() {
|
||||
check_at(
|
||||
r#"
|
||||
macro_rules! foo {
|
||||
() => { const FOO: u32 = 0;const BAR: u32 = 0; };
|
||||
}
|
||||
fn f() {$0
|
||||
foo!{}
|
||||
};
|
||||
"#,
|
||||
expect![[r#"
|
||||
block scope
|
||||
BAR: v
|
||||
FOO: v
|
||||
|
||||
crate
|
||||
f: v
|
||||
"#]],
|
||||
)
|
||||
}
|
||||
|
@ -90,6 +90,13 @@ pub(super) fn lower_block(mut self, block: &ast::BlockExpr) -> ItemTree {
|
||||
_ => None,
|
||||
})
|
||||
.collect();
|
||||
if let Some(ast::Expr::MacroExpr(expr)) = block.tail_expr() {
|
||||
if let Some(call) = expr.macro_call() {
|
||||
if let Some(mod_item) = self.lower_mod_item(&call.into()) {
|
||||
self.tree.top_level.push(mod_item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.tree
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user