]> git.lizzy.rs Git - rust.git/blob - tests/mir-opt/inline/polymorphic_recursion.rs
Rollup merge of #106397 - compiler-errors:new-solver-impl-wc, r=lcnr
[rust.git] / tests / mir-opt / inline / polymorphic_recursion.rs
1 // Make sure that the MIR inliner does not loop indefinitely on polymorphic recursion.
2 // compile-flags: --crate-type lib
3
4 // Randomize `def_path_hash` by defining them under a module with different names
5 macro_rules! emit {
6     ($($m:ident)*) => {$(
7         pub mod $m {
8             pub trait Tr { type Next: Tr; }
9
10             pub fn hoge<const N: usize, T: Tr>() {
11                 inner::<N, T>();
12             }
13
14             #[inline(always)]
15             fn inner<const N: usize, T: Tr>()
16             {
17                 inner::<N, T::Next>();
18                 inner::<N, T::Next>();
19             }
20         }
21     )*};
22 }
23
24 // Increase the chance of triggering the bug
25 emit!(m00 m01 m02 m03 m04 m05 m06 m07 m08 m09 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19);