Add tests for #41731

Closes #41731
This commit is contained in:
Steven Tang 2022-12-07 21:45:49 +11:00
parent ec28f5338b
commit cf312ae1f2
No known key found for this signature in database
GPG Key ID: 1597520C734BAE66
4 changed files with 106 additions and 0 deletions

View File

@ -0,0 +1,15 @@
// compile-flags: -Z trace-macros
#![recursion_limit = "5"]
fn main() {
macro_rules! stack {
($overflow:expr) => {
print!(stack!($overflow));
//~^ ERROR recursion limit reached while expanding
//~| ERROR format argument must be a string literal
};
}
stack!("overflow");
}

View File

@ -0,0 +1,38 @@
error: recursion limit reached while expanding `$crate::format_args!`
--> $DIR/issue-41731-infinite-macro-print.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "10"]` attribute to your crate (`issue_41731_infinite_macro_print`)
= note: this error originates in the macro `print` which comes from the expansion of the macro `stack` (in Nightly builds, run with -Z macro-backtrace for more info)
note: trace_macro
--> $DIR/issue-41731-infinite-macro-print.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= note: expanding `stack! { "overflow" }`
= note: to `print! (stack! ("overflow")) ;`
= note: expanding `print! { stack! ("overflow") }`
= note: to `{ $crate :: io :: _print($crate :: format_args! (stack! ("overflow"))) ; }`
= note: expanding `stack! { "overflow" }`
= note: to `print! (stack! ("overflow")) ;`
= note: expanding `print! { stack! ("overflow") }`
= note: to `{ $crate :: io :: _print($crate :: format_args! (stack! ("overflow"))) ; }`
error: format argument must be a string literal
--> $DIR/issue-41731-infinite-macro-print.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `print` which comes from the expansion of the macro `stack` (in Nightly builds, run with -Z macro-backtrace for more info)
help: you might be missing a string literal to format with
|
LL | print!("{}", stack!($overflow));
| +++++
error: aborting due to 2 previous errors

View File

@ -0,0 +1,15 @@
// compile-flags: -Z trace-macros
#![recursion_limit = "5"]
fn main() {
macro_rules! stack {
($overflow:expr) => {
println!(stack!($overflow));
//~^ ERROR recursion limit reached while expanding
//~| ERROR format argument must be a string literal
};
}
stack!("overflow");
}

View File

@ -0,0 +1,38 @@
error: recursion limit reached while expanding `$crate::format_args_nl!`
--> $DIR/issue-41731-infinite-macro-println.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "10"]` attribute to your crate (`issue_41731_infinite_macro_println`)
= note: this error originates in the macro `println` which comes from the expansion of the macro `stack` (in Nightly builds, run with -Z macro-backtrace for more info)
note: trace_macro
--> $DIR/issue-41731-infinite-macro-println.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= note: expanding `stack! { "overflow" }`
= note: to `println! (stack! ("overflow")) ;`
= note: expanding `println! { stack! ("overflow") }`
= note: to `{ $crate :: io :: _print($crate :: format_args_nl! (stack! ("overflow"))) ; }`
= note: expanding `stack! { "overflow" }`
= note: to `println! (stack! ("overflow")) ;`
= note: expanding `println! { stack! ("overflow") }`
= note: to `{ $crate :: io :: _print($crate :: format_args_nl! (stack! ("overflow"))) ; }`
error: format argument must be a string literal
--> $DIR/issue-41731-infinite-macro-println.rs:14:5
|
LL | stack!("overflow");
| ^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `println` which comes from the expansion of the macro `stack` (in Nightly builds, run with -Z macro-backtrace for more info)
help: you might be missing a string literal to format with
|
LL | println!("{}", stack!($overflow));
| +++++
error: aborting due to 2 previous errors