rust/tests/ui/traits/next-solver/normalize/normalize-allow-too-many-vars.rs
2024-10-21 16:25:42 +02:00

53 lines
1.1 KiB
Rust

//@ check-pass
// When canonicalizing a response in the trait solver, we bail with overflow
// if there are too many non-region inference variables. Doing so in normalizes-to
// goals ends up hiding inference constraints in cases which we want to support,
// see #131969. To prevent this issue we do not check for too many inference
// variables in normalizes-to goals.
#![recursion_limit = "8"]
trait Bound {}
trait Trait {
type Assoc;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7> Trait for (T0, T1, T2, T3, T4, T5, T6, T7)
where
T0: Trait,
T1: Trait,
T2: Trait,
T3: Trait,
T4: Trait,
T5: Trait,
T6: Trait,
T7: Trait,
(
T0::Assoc,
T1::Assoc,
T2::Assoc,
T3::Assoc,
T4::Assoc,
T5::Assoc,
T6::Assoc,
T7::Assoc,
): Clone,
{
type Assoc = (
T0::Assoc,
T1::Assoc,
T2::Assoc,
T3::Assoc,
T4::Assoc,
T5::Assoc,
T6::Assoc,
T7::Assoc,
);
}
trait Overlap {}
impl<T: Trait<Assoc = ()>> Overlap for T {}
impl<T0, T1, T2, T3, T4, T5, T6, T7> Overlap for (T0, T1, T2, T3, T4, T5, T6, T7) {}
fn main() {}