| //! This test verifies that a direct non-primitive cast from an enum to an integer type |
| //! is correctly disallowed, even when a `From` implementation exists for that enum. |
| |
| //@ run-rustfix |
| |
| #![allow(dead_code, unused_variables)] |
| |
| enum NonNullary { |
| Nullary, |
| Other(isize), |
| } |
| |
| impl From<NonNullary> for isize { |
| fn from(val: NonNullary) -> isize { |
| match val { |
| NonNullary::Nullary => 0, |
| NonNullary::Other(i) => i, |
| } |
| } |
| } |
| |
| fn main() { |
| let v = NonNullary::Nullary; |
| let val = isize::from(v); |
| //~^ ERROR non-primitive cast: `NonNullary` as `isize` [E0605] |
| //~| HELP consider using the `From` trait instead |
| } |