| //~ ERROR reached the recursion limit finding the struct tail for `Bottom` |
| //@ check-fail |
| //@ compile-flags: --crate-type lib -Cdebuginfo=2 |
| |
| #![recursion_limit = "10"] |
| macro_rules! link { |
| ($outer:ident, $inner:ident) => { |
| struct $outer($inner); |
| impl $outer { |
| fn new() -> $outer { |
| $outer($inner::new()) |
| } |
| } |
| impl std::ops::Deref for $outer { |
| type Target = $inner; |
| fn deref(&self) -> &$inner { |
| &self.0 |
| } |
| } |
| }; |
| } |
| |
| struct Bottom; |
| |
| impl Bottom { |
| fn new() -> Bottom { |
| Bottom |
| } |
| } |
| |
| link!(A, B); |
| link!(B, C); |
| link!(C, D); |
| link!(D, E); |
| link!(E, F); |
| link!(F, G); |
| link!(G, H); |
| link!(H, I); |
| link!(I, J); |
| link!(J, K); |
| link!(K, Bottom); |
| |
| fn main() {} |