//@ run-pass | |
// The const-evaluator was at one point ICE'ing while trying to | |
// evaluate the body of `fn id` during the `s.id()` call in main. | |
struct S<T>(T); | |
impl<T> S<T> { | |
const ID: fn(&S<T>) -> &S<T> = |s| s; | |
pub fn id(&self) -> &Self { | |
Self::ID(self) // This, plus call below ... | |
} | |
} | |
fn main() { | |
let s = S(10u32); | |
assert!(S::<u32>::ID(&s).0 == 10); // Works fine | |
assert!(s.id().0 == 10); // ... causes compiler to panic | |
} |