From f749d97b8a1fdea250642f9f92d050452a081d37 Mon Sep 17 00:00:00 2001 From: Noah Lev Date: Sun, 13 Jun 2021 17:15:45 -0700 Subject: [PATCH] Add regression test for #86208 This test does not test the output as well as I would like, but I think I am limited by htmldocck. I would really just like to strip all the HTML tags from the output for the sake of the different `@has` checks, but that doesn't seem to be currently possible. --- src/test/rustdoc/macro_rules-matchers.rs | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/test/rustdoc/macro_rules-matchers.rs diff --git a/src/test/rustdoc/macro_rules-matchers.rs b/src/test/rustdoc/macro_rules-matchers.rs new file mode 100644 index 00000000000..e3550aea472 --- /dev/null +++ b/src/test/rustdoc/macro_rules-matchers.rs @@ -0,0 +1,42 @@ +// 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 - '//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 - '//span[@class="op"]' '+' +// @has - ')' +pub use std::todo; + +mod mod1 { + // @has 'foo/macro.macro1.html' + // @has - 'macro_rules!' + // @has - 'macro1' + // @has - '{ ()' + // @has - '($(' + // @has - 'arg' + // @has - 'expr' + // @has - ',' + // @has - '+' + // @has - ')' + #[macro_export] + macro_rules! macro1 { + () => {}; + ($($arg:expr),+) => { stringify!($($arg),+) }; + } +}