Allow macro-expanded macros in trailing expression positions to expand into statements:
```rust macro_rules! m { () => { let x = 1; x } } macro_rules! n { () => { m!() //< This can now expand into statements }} fn main() { n!(); } ``` and revert needless fallout fixes.
This commit is contained in:
parent
52d485fe0d
commit
759b8a8e7d
@ -4066,7 +4066,8 @@ impl<'a> Parser<'a> {
|
||||
/// (or the lack thereof) -- c.f. `parse_stmt`.
|
||||
pub fn finish_parsing_statement(&mut self, mut stmt: Stmt) -> PResult<'a, Stmt> {
|
||||
if let StmtKind::Mac(mac) = stmt.node {
|
||||
if mac.1 != MacStmtStyle::NoBraces || self.token == token::Semi {
|
||||
if mac.1 != MacStmtStyle::NoBraces ||
|
||||
self.token == token::Semi || self.token == token::Eof {
|
||||
stmt.node = StmtKind::Mac(mac);
|
||||
} else {
|
||||
let (mac, _style, attrs) = mac.unwrap();
|
||||
|
@ -113,7 +113,7 @@ fn main() {
|
||||
// product macro
|
||||
($from: ident $(, $from_: ident)*: $($to: ident),*) => {
|
||||
fn $from() { unsafe { $( test!($from, $to); )* } }
|
||||
tests!($($from_),*: $($to),*);
|
||||
tests!($($from_),*: $($to),*)
|
||||
};
|
||||
($($types: ident),*) => {{
|
||||
tests!($($types),* : $($types),*);
|
||||
|
Loading…
x
Reference in New Issue
Block a user