rust/tests/ui/macros/issue-57597.rs

81 lines
1.6 KiB
Rust

// Regression test for #57597.
//
// Make sure that nested matchers work correctly rather than causing an infinite loop or crash.
//@ edition:2018
macro_rules! foo1 {
($($($i:ident)?)+) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo2 {
($($($i:ident)?)*) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo3 {
($($($i:ident)?)?) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo4 {
($($($($i:ident)?)?)?) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo5 {
($($($($i:ident)*)?)?) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo6 {
($($($($i:ident)?)*)?) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo7 {
($($($($i:ident)?)?)*) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo8 {
($($($($i:ident)*)*)?) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo9 {
($($($($i:ident)?)*)*) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo10 {
($($($($i:ident)?)*)+) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo11 {
($($($($i:ident)+)?)*) => {};
//~^ ERROR repetition matches empty token tree
}
macro_rules! foo12 {
($($($($i:ident)+)*)?) => {};
//~^ ERROR repetition matches empty token tree
}
fn main() {
foo1!();
foo2!();
foo3!();
foo4!();
foo5!();
foo6!();
foo7!();
foo8!();
foo9!();
foo10!();
foo11!();
foo12!();
}