about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Huss <eric@huss.org>2021-02-08 10:03:57 -0800
committerEric Huss <eric@huss.org>2021-02-08 12:08:27 -0800
commitcadffa74df1589011cc7e9c3a19e196e2c73b46c (patch)
tree5e2fd6610d5f824a264a5f3984687c5844755108
parent921ec4b3fca17cc777766c240038d7d50ba98e0d (diff)
downloadrust-cadffa74df1589011cc7e9c3a19e196e2c73b46c.tar.gz
rust-cadffa74df1589011cc7e9c3a19e196e2c73b46c.zip
Fix pretty printer macro_rules with semicolon.
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state.rs3
-rw-r--r--src/test/pretty/macro_rules.rs19
2 files changed, 22 insertions, 0 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index 7f4775bf41a..01e234c9be9 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -1311,6 +1311,9 @@ impl<'a> State<'a> {
                     true,
                     item.span,
                 );
+                if macro_def.body.need_semicolon() {
+                    self.word(";");
+                }
             }
         }
         self.ann.post(self, AnnNode::Item(item))
diff --git a/src/test/pretty/macro_rules.rs b/src/test/pretty/macro_rules.rs
new file mode 100644
index 00000000000..da223d164f9
--- /dev/null
+++ b/src/test/pretty/macro_rules.rs
@@ -0,0 +1,19 @@
+// pp-exact
+
+macro_rules! brace { () => { } ; }
+
+macro_rules! bracket[() => { } ;];
+
+macro_rules! paren(() => { } ;);
+
+macro_rules! matcher_brackets {
+    (paren) => { } ; (bracket) => { } ; (brace) => { } ;
+}
+
+macro_rules! all_fragments {
+    ($ b : block, $ e : expr, $ i : ident, $ it : item, $ l : lifetime, $ lit
+     : literal, $ m : meta, $ p : pat, $ pth : path, $ s : stmt, $ tt : tt, $
+     ty : ty, $ vis : vis) => { } ;
+}
+
+fn main() { }