| // 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, | |
| }; | |
| } |