// compile-pass | |
// Tests for nested self-reference which caused a stack overflow. | |
use std::fmt::Debug; | |
use std::ops::*; | |
fn gen() -> impl PartialOrd + PartialEq + Debug { } | |
struct Bar {} | |
trait Foo<T = Self> {} | |
trait FooNested<T = Option<Self>> {} | |
impl Foo for Bar {} | |
impl FooNested for Bar {} | |
fn foo() -> impl Foo + FooNested { | |
Bar {} | |
} | |
fn test_impl_ops() -> impl Add + Sub + Mul + Div { 1 } | |
fn test_impl_assign_ops() -> impl AddAssign + SubAssign + MulAssign + DivAssign { 1 } | |
fn main() {} |