From 2361904212f1701e19138deafb9121ca4152eaf2 Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Fri, 14 Oct 2022 01:26:40 +0200 Subject: [PATCH] add test of the new attr and fix the breaking test Signed-off-by: Vincenzo Palazzo --- compiler/rustc_expand/src/expand.rs | 2 +- compiler/rustc_middle/src/middle/limits.rs | 2 +- compiler/rustc_session/src/session.rs | 5 ++++- tests/ui/limits/issue-95698.rs | 25 ++++++++++++++++++++++ tests/ui/limits/issue-95698.stderr | 19 ++++++++++++++++ tests/ui/mir/issue-29227.rs | 1 + 6 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 tests/ui/limits/issue-95698.rs create mode 100644 tests/ui/limits/issue-95698.stderr diff --git a/compiler/rustc_expand/src/expand.rs b/compiler/rustc_expand/src/expand.rs index eb70939335ee9..4e57c32554aff 100644 --- a/compiler/rustc_expand/src/expand.rs +++ b/compiler/rustc_expand/src/expand.rs @@ -2027,7 +2027,7 @@ impl<'feat> ExpansionConfig<'feat> { crate_name, features: None, recursion_limit: Limit::new(1024), - expansion_growth_limit: Limit::new(1500), + expansion_growth_limit: Limit::new(6000), trace_mac: false, should_test: false, span_debug: false, diff --git a/compiler/rustc_middle/src/middle/limits.rs b/compiler/rustc_middle/src/middle/limits.rs index 2a002a3020fa4..9e8f3ff347889 100644 --- a/compiler/rustc_middle/src/middle/limits.rs +++ b/compiler/rustc_middle/src/middle/limits.rs @@ -42,7 +42,7 @@ pub fn get_recursion_limit(krate_attrs: &[Attribute], sess: &Session) -> Limit { } pub fn get_expansion_growth_limit(krate_attrs: &[Attribute], sess: &Session) -> Limit { - get_limit(krate_attrs, sess, sym::expansion_growth_limit, 1500) + get_limit(krate_attrs, sess, sym::expansion_growth_limit, 6000) } fn get_limit(krate_attrs: &[Attribute], sess: &Session, name: Symbol, default: usize) -> Limit { diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index dd52141f674b9..9aeca7bdaff7b 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -128,7 +128,10 @@ pub struct Limits { pub move_size_limit: Limit, /// The maximum length of types during monomorphization. pub type_length_limit: Limit, - /// FIXME(vincenzopalazzo) add docs + /// The maximum blocks a const expression can evaluate. + pub const_eval_limit: Limit, + /// The maximum tokens limit for potentially infinitely resolving + /// a macros that add infinite tokens inside the buffer. pub expansion_growth_limit: Limit, } diff --git a/tests/ui/limits/issue-95698.rs b/tests/ui/limits/issue-95698.rs new file mode 100644 index 0000000000000..20c86a48434db --- /dev/null +++ b/tests/ui/limits/issue-95698.rs @@ -0,0 +1,25 @@ +// check-fail + +/// issue #95698 +macro_rules! from_cow_impls { + ($( $from: ty ),+ $(,)? ) => { + // recursion call + from_cow_impls!( + $( $from, Cow::from ),+ + ); + //~^^^ ERROR expansion grow limit reached while expanding `from_cow_impls!` + }; + + ($( $from: ty, $normalizer: expr ),+ $(,)? ) => { + $( impl<'a> From<$from> for LhsValue<'a> { + fn from(val: $from) -> Self { + LhsValue::Bytes($normalizer(val)) + } + } )+ + }; +} + +from_cow_impls!( + &'a [u8], /*callback,*/ + Vec, /*callback,*/ +); diff --git a/tests/ui/limits/issue-95698.stderr b/tests/ui/limits/issue-95698.stderr new file mode 100644 index 0000000000000..a1ea8562cef98 --- /dev/null +++ b/tests/ui/limits/issue-95698.stderr @@ -0,0 +1,19 @@ +error: expansion grow limit reached while expanding `from_cow_impls!` + --> $DIR/issue-95698.rs:7:9 + | +LL | / from_cow_impls!( +LL | | $( $from, Cow::from ),+ +LL | | ); + | |_________^ +... +LL | / from_cow_impls!( +LL | | &'a [u8], /*callback,*/ +LL | | Vec, /*callback,*/ +LL | | ); + | |_- in this macro invocation + | + = help: consider increasing the expansion grow limit by adding a `#![expansion_growth_limit = "12000"]` attribute to your crate (`issue_95698`) + = note: this error originates in the macro `from_cow_impls` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: aborting due to previous error + diff --git a/tests/ui/mir/issue-29227.rs b/tests/ui/mir/issue-29227.rs index e9dfc2840e599..cc30c4b5d9cb9 100644 --- a/tests/ui/mir/issue-29227.rs +++ b/tests/ui/mir/issue-29227.rs @@ -1,3 +1,4 @@ +#![expansion_growth_limit = "16000"] // run-pass // ignore-tidy-linelength