granite-rust/tests/ui/traits/issue-23003.rs
许杰友 Jieyou Xu (Joe) 95ff642797 tests: remove //@ pretty-expanded usages
Done with

```bash
sd '//@ pretty-expanded.*\n' '' tests/ui/**/*.rs
```

and

```
sd '//@pretty-expanded.*\n' '' tests/ui/**/*.rs
```
2024-11-26 02:50:48 +08:00

31 lines
603 B
Rust

//@ run-pass
// Test stack overflow triggered by evaluating the implications. To be
// WF, the type `Receipt<Complete>` would require that `<Complete as
// Async>::Cancel` be WF. This normalizes to `Receipt<Complete>`
// again, leading to an infinite cycle. Issue #23003.
#![allow(dead_code)]
#![allow(unused_variables)]
use std::marker::PhantomData;
trait Async {
type Cancel;
}
struct Receipt<A:Async> {
marker: PhantomData<A>,
}
struct Complete {
core: Option<()>,
}
impl Async for Complete {
type Cancel = Receipt<Complete>;
}
fn foo(r: Receipt<Complete>) { }
fn main() { }