mirror of https://github.com/rust-lang/rust
45 lines
767 B
Rust
45 lines
767 B
Rust
//@ build-fail
|
|
//@ compile-flags: --crate-type lib -Cdebuginfo=2
|
|
//@ error-pattern: the type has an unknown layout
|
|
|
|
#![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() { }
|