diff options
| author | bors <bors@rust-lang.org> | 2021-07-05 05:09:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-07-05 05:09:35 +0000 |
| commit | 09d9b608d647fdc19a933c661f943a010c8d84a5 (patch) | |
| tree | 7359a589e6c9ddae2b858fb1ef13b9c5ede1f697 /src/test | |
| parent | 44860d13fa866d002a5f29a4684dad29ff268af9 (diff) | |
| parent | 7ffec7028a54aeed6076f7043734b682fdf68f6e (diff) | |
| download | rust-09d9b608d647fdc19a933c661f943a010c8d84a5.tar.gz rust-09d9b608d647fdc19a933c661f943a010c8d84a5.zip | |
Auto merge of #86282 - camelid:macro_rules-matchers, r=jyn514
Pretty-print macro matchers instead of using source code Fixes #86208.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/pretty/cast-lt.pp | 2 | ||||
| -rw-r--r-- | src/test/pretty/delimited-token-groups.rs | 2 | ||||
| -rw-r--r-- | src/test/pretty/macro.rs | 2 | ||||
| -rw-r--r-- | src/test/pretty/macro_rules.rs | 6 | ||||
| -rw-r--r-- | src/test/rustdoc/decl_macro.rs | 12 | ||||
| -rw-r--r-- | src/test/rustdoc/macro_rules-matchers.rs | 45 | ||||
| -rw-r--r-- | src/test/rustdoc/macros.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/hygiene/unpretty-debug.stdout | 2 | ||||
| -rw-r--r-- | src/test/ui/proc-macro/meta-macro-hygiene.stdout | 2 | ||||
| -rw-r--r-- | src/test/ui/proc-macro/nonterminal-token-hygiene.stdout | 4 |
10 files changed, 65 insertions, 20 deletions
diff --git a/src/test/pretty/cast-lt.pp b/src/test/pretty/cast-lt.pp index 4f6a9249090..e6c4d195691 100644 --- a/src/test/pretty/cast-lt.pp +++ b/src/test/pretty/cast-lt.pp @@ -8,6 +8,6 @@ extern crate std; // pretty-mode:expanded // pp-exact:cast-lt.pp -macro_rules! negative { ($ e : expr) => { $ e < 0 } } +macro_rules! negative { ($e : expr) => { $e < 0 } } fn main() { (1 as i32) < 0; } diff --git a/src/test/pretty/delimited-token-groups.rs b/src/test/pretty/delimited-token-groups.rs index 125f2b0fa16..257c032b536 100644 --- a/src/test/pretty/delimited-token-groups.rs +++ b/src/test/pretty/delimited-token-groups.rs @@ -2,7 +2,7 @@ #![feature(rustc_attrs)] -macro_rules! mac { ($ ($ tt : tt) *) => () } +macro_rules! mac { ($($tt : tt) *) => () } mac! { struct S { field1 : u8, field2 : u16, } impl Clone for S diff --git a/src/test/pretty/macro.rs b/src/test/pretty/macro.rs index 1e1e1dbfb3e..d3865d93a30 100644 --- a/src/test/pretty/macro.rs +++ b/src/test/pretty/macro.rs @@ -2,6 +2,6 @@ #![feature(decl_macro)] -pub(crate) macro mac { ($ arg : expr) => { $ arg + $ arg } } +pub(crate) macro mac { ($arg : expr) => { $arg + $arg } } fn main() { } diff --git a/src/test/pretty/macro_rules.rs b/src/test/pretty/macro_rules.rs index da223d164f9..3b13f2530dd 100644 --- a/src/test/pretty/macro_rules.rs +++ b/src/test/pretty/macro_rules.rs @@ -11,9 +11,9 @@ macro_rules! matcher_brackets { } 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) => { } ; + ($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() { } diff --git a/src/test/rustdoc/decl_macro.rs b/src/test/rustdoc/decl_macro.rs index ede3f455a20..fe19dadbe02 100644 --- a/src/test/rustdoc/decl_macro.rs +++ b/src/test/rustdoc/decl_macro.rs @@ -9,7 +9,7 @@ pub macro my_macro() { } -// @has decl_macro/macro.my_macro_2.html //pre 'pub macro my_macro_2($($tok:tt)*) {' +// @has decl_macro/macro.my_macro_2.html //pre 'pub macro my_macro_2($($tok : tt) *) {' // @has - //pre '...' // @has - //pre '}' pub macro my_macro_2($($tok:tt)*) { @@ -18,8 +18,8 @@ pub macro my_macro_2($($tok:tt)*) { // @has decl_macro/macro.my_macro_multi.html //pre 'pub macro my_macro_multi {' // @has - //pre '(_) => { ... },' -// @has - //pre '($foo:ident . $bar:expr) => { ... },' -// @has - //pre '($($foo:literal),+) => { ... }' +// @has - //pre '($foo : ident.$bar : expr) => { ... },' +// @has - //pre '($($foo : literal), +) => { ... },' // @has - //pre '}' pub macro my_macro_multi { (_) => { @@ -33,7 +33,7 @@ pub macro my_macro_multi { } } -// @has decl_macro/macro.by_example_single.html //pre 'pub macro by_example_single($foo:expr) {' +// @has decl_macro/macro.by_example_single.html //pre 'pub macro by_example_single($foo : expr) {' // @has - //pre '...' // @has - //pre '}' pub macro by_example_single { @@ -42,12 +42,12 @@ pub macro by_example_single { mod a { mod b { - // @has decl_macro/a/b/macro.by_example_vis.html //pre 'pub(super) macro by_example_vis($foo:expr) {' + // @has decl_macro/a/b/macro.by_example_vis.html //pre 'pub(super) macro by_example_vis($foo : expr) {' pub(in super) macro by_example_vis { ($foo:expr) => {} } mod c { - // @has decl_macro/a/b/c/macro.by_example_vis_named.html //pre 'pub(in a) macro by_example_vis_named($foo:expr) {' + // @has decl_macro/a/b/c/macro.by_example_vis_named.html //pre 'pub(in a) macro by_example_vis_named($foo : expr) {' pub(in a) macro by_example_vis_named { ($foo:expr) => {} } diff --git a/src/test/rustdoc/macro_rules-matchers.rs b/src/test/rustdoc/macro_rules-matchers.rs new file mode 100644 index 00000000000..5f8340e7312 --- /dev/null +++ b/src/test/rustdoc/macro_rules-matchers.rs @@ -0,0 +1,45 @@ +// This is a regression test for issue #86208. +// It is also a general test of macro_rules! display. + +#![crate_name = "foo"] + +// @has 'foo/macro.todo.html' +// @has - '//span[@class="macro"]' 'macro_rules!' +// @has - '//span[@class="ident"]' 'todo' +// Note: count = 2 * ('=' + '>') + '+' = 2 * (1 + 1) + 1 = 5 +// @count - '//pre[@class="rust macro"]//span[@class="op"]' 5 + +// @has - '{ ()' +// @has - '//span[@class="op"]' '=' +// @has - '//span[@class="op"]' '>' +// @has - '{ ... };' + +// @has - '($(' +// @has - '//span[@class="macro-nonterminal"]' '$' +// @has - '//span[@class="macro-nonterminal"]' 'arg' +// @has - ':' +// @has - '//span[@class="ident"]' 'tt' +// @has - '),' +// @has - '//span[@class="op"]' '+' +// @has - ')' +pub use std::todo; + +mod mod1 { + // @has 'foo/macro.macro1.html' + // @has - 'macro_rules!' + // @has - 'macro1' + // @has - '{ ()' + // @has - '($(' + // @has - '//span[@class="macro-nonterminal"]' '$' + // @has - '//span[@class="macro-nonterminal"]' 'arg' + // @has - ':' + // @has - 'expr' + // @has - '),' + // @has - '+' + // @has - ')' + #[macro_export] + macro_rules! macro1 { + () => {}; + ($($arg:expr),+) => { stringify!($($arg),+) }; + } +} diff --git a/src/test/rustdoc/macros.rs b/src/test/rustdoc/macros.rs index ae0cf7a1478..1cd454720e7 100644 --- a/src/test/rustdoc/macros.rs +++ b/src/test/rustdoc/macros.rs @@ -1,7 +1,7 @@ // @has macros/macro.my_macro.html //pre 'macro_rules! my_macro {' // @has - //pre '() => { ... };' -// @has - //pre '($a:tt) => { ... };' -// @has - //pre '($e:expr) => { ... };' +// @has - //pre '($a : tt) => { ... };' +// @has - //pre '($e : expr) => { ... };' #[macro_export] macro_rules! my_macro { () => []; @@ -12,8 +12,8 @@ macro_rules! my_macro { // Check that exported macro defined in a module are shown at crate root. // @has macros/macro.my_sub_macro.html //pre 'macro_rules! my_sub_macro {' // @has - //pre '() => { ... };' -// @has - //pre '($a:tt) => { ... };' -// @has - //pre '($e:expr) => { ... };' +// @has - //pre '($a : tt) => { ... };' +// @has - //pre '($e : expr) => { ... };' mod sub { #[macro_export] macro_rules! my_sub_macro { diff --git a/src/test/ui/hygiene/unpretty-debug.stdout b/src/test/ui/hygiene/unpretty-debug.stdout index e3445a4b80f..ae2857d505e 100644 --- a/src/test/ui/hygiene/unpretty-debug.stdout +++ b/src/test/ui/hygiene/unpretty-debug.stdout @@ -8,7 +8,7 @@ #![feature /* 0#0 */(no_core)] #![no_core /* 0#0 */] -macro_rules! foo /* 0#0 */ { ($ x : ident) => { y + $ x } } +macro_rules! foo /* 0#0 */ { ($x : ident) => { y + $x } } fn bar /* 0#0 */() { let x /* 0#0 */ = 1; diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.stdout b/src/test/ui/proc-macro/meta-macro-hygiene.stdout index 95ef260537a..368326e0216 100644 --- a/src/test/ui/proc-macro/meta-macro-hygiene.stdout +++ b/src/test/ui/proc-macro/meta-macro-hygiene.stdout @@ -30,7 +30,7 @@ macro_rules! produce_it */ { () => { - meta_macro :: print_def_site! ($ crate :: dummy! ()) ; + meta_macro :: print_def_site! ($crate :: dummy! ()) ; // `print_def_site!` will respan the `$crate` identifier // with `Span::def_site()`. This should cause it to resolve // relative to `meta_macro`, *not* `make_macro` (despite diff --git a/src/test/ui/proc-macro/nonterminal-token-hygiene.stdout b/src/test/ui/proc-macro/nonterminal-token-hygiene.stdout index ac020cddf08..2911707fdb0 100644 --- a/src/test/ui/proc-macro/nonterminal-token-hygiene.stdout +++ b/src/test/ui/proc-macro/nonterminal-token-hygiene.stdout @@ -50,9 +50,9 @@ macro_rules! outer /* 0#0 */ { - ($ item : item) => + ($item : item) => { - macro inner() { print_bang! { $ item } } inner! () ; + macro inner() { print_bang! { $item } } inner! () ; } ; } |
