Skip to content

Commit

Permalink
Add tests for #41731
Browse files Browse the repository at this point in the history
Closes #41731
  • Loading branch information
YC committed Dec 7, 2022
1 parent ec28f53 commit cf312ae
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/test/ui/infinite/issue-41731-infinite-macro-print.rs
Original file line number Diff line number Diff line change
@@ -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");
}
38 changes: 38 additions & 0 deletions src/test/ui/infinite/issue-41731-infinite-macro-print.stderr
Original file line number Diff line number Diff line change
@@ -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

15 changes: 15 additions & 0 deletions src/test/ui/infinite/issue-41731-infinite-macro-println.rs
Original file line number Diff line number Diff line change
@@ -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");
}
38 changes: 38 additions & 0 deletions src/test/ui/infinite/issue-41731-infinite-macro-println.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit cf312ae

Please sign in to comment.