about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorTim Neumann <mail@timnn.me>2017-09-17 13:19:00 +0200
committerGitHub <noreply@github.com>2017-09-17 13:19:00 +0200
commitbc638b8635a1a6183d891f28d1edb573efb8e4d0 (patch)
tree488e67b2b8b68b5eda38f6f24bbce557388493c6 /src/test/ui
parenta0edcb4b0384db91f159a9f8c77db3fbd098b2db (diff)
parent0a2c95b6eb4ef40be166cc690bf2f4f00e37d7c5 (diff)
Rollup merge of #44088 - bjorn3:better_trace_macros, r=jseyfried
Fix "new trace_macros doesn't work if there's an error during expansion"

Fixes #43493
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/macros/assert_eq_trailing_comma.stderr2
-rw-r--r--src/test/ui/macros/assert_ne_trailing_comma.stderr2
-rw-r--r--src/test/ui/macros/trace_faulty_macros.rs55
-rw-r--r--src/test/ui/macros/trace_faulty_macros.stderr47
4 files changed, 106 insertions, 0 deletions
diff --git a/src/test/ui/macros/assert_eq_trailing_comma.stderr b/src/test/ui/macros/assert_eq_trailing_comma.stderr
index ca590db90e4..1b46e94584e 100644
--- a/src/test/ui/macros/assert_eq_trailing_comma.stderr
+++ b/src/test/ui/macros/assert_eq_trailing_comma.stderr
@@ -4,3 +4,5 @@ error: unexpected end of macro invocation
 12 |     assert_eq!(1, 1,);
    |                    ^
 
+error: aborting due to previous error
+
diff --git a/src/test/ui/macros/assert_ne_trailing_comma.stderr b/src/test/ui/macros/assert_ne_trailing_comma.stderr
index ffabcaeb049..33d2cb0ed82 100644
--- a/src/test/ui/macros/assert_ne_trailing_comma.stderr
+++ b/src/test/ui/macros/assert_ne_trailing_comma.stderr
@@ -4,3 +4,5 @@ error: unexpected end of macro invocation
 12 |     assert_ne!(1, 2,);
    |                    ^
 
+error: aborting due to previous error
+
diff --git a/src/test/ui/macros/trace_faulty_macros.rs b/src/test/ui/macros/trace_faulty_macros.rs
new file mode 100644
index 00000000000..eb7292b0a65
--- /dev/null
+++ b/src/test/ui/macros/trace_faulty_macros.rs
@@ -0,0 +1,55 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// compile-flags: -Z trace-macros
+
+#![recursion_limit="4"]
+
+macro_rules! my_faulty_macro {
+    () => {
+        my_faulty_macro!(bcd);
+    };
+}
+
+macro_rules! pat_macro {
+    () => {
+        pat_macro!(A{a:a, b:0, c:_, ..});
+    };
+    ($a:pat) => {
+        $a
+    };
+}
+
+macro_rules! my_recursive_macro {
+    () => {
+        my_recursive_macro!();
+    };
+}
+
+macro_rules! my_macro {
+    () => {
+
+    };
+}
+
+fn main() {
+    my_faulty_macro!();
+    my_recursive_macro!();
+    test!();
+    non_exisiting!();
+    derive!(Debug);
+    let a = pat_macro!();
+}
+
+#[my_macro]
+fn use_bang_macro_as_attr(){}
+
+#[derive(Debug)]
+fn use_derive_macro_as_attr(){}
diff --git a/src/test/ui/macros/trace_faulty_macros.stderr b/src/test/ui/macros/trace_faulty_macros.stderr
new file mode 100644
index 00000000000..f4aeb8332f0
--- /dev/null
+++ b/src/test/ui/macros/trace_faulty_macros.stderr
@@ -0,0 +1,47 @@
+error: no rules expected the token `bcd`
+  --> $DIR/trace_faulty_macros.rs:17:26
+   |
+17 |         my_faulty_macro!(bcd);
+   |                          ^^^
+...
+43 |     my_faulty_macro!();
+   |     ------------------- in this macro invocation
+
+note: trace_macro
+  --> $DIR/trace_faulty_macros.rs:43:5
+   |
+43 |     my_faulty_macro!();
+   |     ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: expanding `my_faulty_macro! {  }`
+   = note: to `my_faulty_macro ! ( bcd ) ;`
+   = note: expanding `my_faulty_macro! { bcd }`
+
+error: recursion limit reached while expanding the macro `my_recursive_macro`
+  --> $DIR/trace_faulty_macros.rs:32:9
+   |
+32 |         my_recursive_macro!();
+   |         ^^^^^^^^^^^^^^^^^^^^^^
+...
+44 |     my_recursive_macro!();
+   |     ---------------------- in this macro invocation
+   |
+   = help: consider adding a `#![recursion_limit="8"]` attribute to your crate
+
+note: trace_macro
+  --> $DIR/trace_faulty_macros.rs:44:5
+   |
+44 |     my_recursive_macro!();
+   |     ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: expanding `my_recursive_macro! {  }`
+   = note: to `my_recursive_macro ! (  ) ;`
+   = note: expanding `my_recursive_macro! {  }`
+   = note: to `my_recursive_macro ! (  ) ;`
+   = note: expanding `my_recursive_macro! {  }`
+   = note: to `my_recursive_macro ! (  ) ;`
+   = note: expanding `my_recursive_macro! {  }`
+   = note: to `my_recursive_macro ! (  ) ;`
+   = note: expanding `my_recursive_macro! {  }`
+   = note: to `my_recursive_macro ! (  ) ;`
+