30 lines
476 B
Rust
30 lines
476 B
Rust
// Check that we do not allow coercions to object
|
|
// unsafe trait objects in match arms
|
|
|
|
#![feature(object_safe_for_dispatch)]
|
|
|
|
trait Trait: Sized {}
|
|
|
|
struct S;
|
|
|
|
impl Trait for S {}
|
|
|
|
struct R;
|
|
|
|
impl Trait for R {}
|
|
|
|
fn opt() -> Option<()> {
|
|
Some(())
|
|
}
|
|
|
|
fn main() {
|
|
match opt() {
|
|
Some(()) => &S,
|
|
None => &R, //~ ERROR E0308
|
|
}
|
|
let t: &dyn Trait = match opt() { //~ ERROR E0038
|
|
Some(()) => &S, //~ ERROR E0038
|
|
None => &R,
|
|
};
|
|
}
|