| // build-pass (FIXME(62277): could be check-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() {} |