Do not set depth to 0 in fully_expand_fragment
This commit is contained in:
parent
192920c22b
commit
37d0d2705d
3 changed files with 31 additions and 1 deletions
|
@ -427,7 +427,6 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
|
|||
pub fn fully_expand_fragment(&mut self, input_fragment: AstFragment) -> AstFragment {
|
||||
let orig_expansion_data = self.cx.current_expansion.clone();
|
||||
let orig_force_mode = self.cx.force_mode;
|
||||
self.cx.current_expansion.depth = 0;
|
||||
|
||||
// Collect all macro invocations and replace them with placeholders.
|
||||
let (mut fragment_with_placeholders, mut invocations) =
|
||||
|
@ -488,6 +487,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
|
|||
};
|
||||
|
||||
let ExpansionData { depth, id: expn_id, .. } = invoc.expansion_data;
|
||||
let depth = depth - orig_expansion_data.depth;
|
||||
self.cx.current_expansion = invoc.expansion_data.clone();
|
||||
self.cx.force_mode = force;
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
// Regression test for #84632: Recursion limit is ignored
|
||||
// for builtin macros that eagerly expands.
|
||||
|
||||
#![recursion_limit = "15"]
|
||||
macro_rules! a {
|
||||
() => ("");
|
||||
(A) => (concat!("", a!()));
|
||||
(A, $($A:ident),*) => (concat!("", a!($($A),*)))
|
||||
//~^ ERROR recursion limit reached
|
||||
//~| HELP consider adding
|
||||
}
|
||||
|
||||
fn main() {
|
||||
a!(A, A, A, A, A);
|
||||
a!(A, A, A, A, A, A, A, A, A, A, A);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
error: recursion limit reached while expanding `concat!`
|
||||
--> $DIR/issue-84632-eager-expansion-recursion-limit.rs:8:28
|
||||
|
|
||||
LL | (A, $($A:ident),*) => (concat!("", a!($($A),*)))
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | a!(A, A, A, A, A, A, A, A, A, A, A);
|
||||
| ------------------------------------ in this macro invocation
|
||||
|
|
||||
= help: consider adding a `#![recursion_limit="30"]` attribute to your crate (`issue_84632_eager_expansion_recursion_limit`)
|
||||
= note: this error originates in the macro `a` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Add table
Reference in a new issue