diff options
| author | Paul Stansifer <paul.stansifer@gmail.com> | 2012-11-21 13:37:43 -0500 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-11-29 12:09:10 -0800 |
| commit | 0f707f42c847814f60776a3b608c3016b00d7457 (patch) | |
| tree | 8e8c4a8fc17bbef3054d732999cbcd785123ab03 /src/libsyntax/ext | |
| parent | e77491bd870d9b026ebfbda07caab103f111ce8f (diff) | |
| download | rust-0f707f42c847814f60776a3b608c3016b00d7457.tar.gz rust-0f707f42c847814f60776a3b608c3016b00d7457.zip | |
Distinguish `stmt_mac`s that are followed by semicolons and those that aren't.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 07290c9248b..0d5b0070d2f 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -272,12 +272,12 @@ fn expand_stmt(exts: HashMap<~str, syntax_extension>, cx: ext_ctxt, orig: fn@(&&s: stmt_, span, ast_fold) -> (stmt_, span)) -> (stmt_, span) { - let (mac, pth, tts) = biased_match! ( - (s) ~ (stmt_mac(mac)) else return orig(s, sp, fld); + let (mac, pth, tts, semi) = biased_match! ( + (s) ~ (stmt_mac(mac, semi)) else return orig(s, sp, fld); (mac.node) ~ (mac_invoc_tt(pth, tts)) else { cx.span_bug(mac.span, ~"naked syntactic bit") }; - => (mac, pth, tts)); + => (mac, pth, tts, semi)); assert(vec::len(pth.idents) == 1u); let extname = cx.parse_sess().interner.get(pth.idents[0]); @@ -287,8 +287,10 @@ fn expand_stmt(exts: HashMap<~str, syntax_extension>, cx: ext_ctxt, Some(normal_tt({expander: exp, span: exp_sp})) => { let expanded = match exp(cx, mac.span, tts) { - mr_expr(e) => + mr_expr(e) if !semi => @{node: ast::stmt_expr(e, cx.next_id()), span: e.span}, + mr_expr(e) if semi => + @{node: ast::stmt_semi(e, cx.next_id()), span: e.span}, mr_any(_,_,stmt_mkr) => stmt_mkr(), _ => cx.span_fatal( pth.span, |
