2024-09-15 14:47:42 +00:00
|
|
|
//@ check-pass
|
|
|
|
|
|
|
|
// This used to ICE, because the compiler confused a pointer-like to dyn* coercion
|
|
|
|
// with a c-like enum to integer cast.
|
|
|
|
|
2024-11-20 02:46:56 +00:00
|
|
|
#![feature(dyn_star, pointer_like_trait)]
|
2024-09-15 14:47:42 +00:00
|
|
|
#![expect(incomplete_features)]
|
|
|
|
|
2024-11-20 02:46:56 +00:00
|
|
|
use std::marker::PointerLike;
|
|
|
|
|
|
|
|
#[repr(transparent)]
|
2024-09-15 14:47:42 +00:00
|
|
|
enum E {
|
|
|
|
Num(usize),
|
|
|
|
}
|
|
|
|
|
2024-11-20 02:46:56 +00:00
|
|
|
impl PointerLike for E {}
|
|
|
|
|
2024-09-15 14:47:42 +00:00
|
|
|
trait Trait {}
|
|
|
|
impl Trait for E {}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let _ = E::Num(42) as dyn* Trait;
|
|
|
|
}
|