// ignore-x86 #![feature(plugin, associated_consts)] #![plugin(clippy)] #![deny(clippy)] #![allow(unused)] #[repr(usize)] enum NonPortable { X = 0x1_0000_0000, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets Y = 0, Z = 0x7FFF_FFFF, A = 0xFFFF_FFFF, } enum NonPortableNoHint { X = 0x1_0000_0000, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets Y = 0, Z = 0x7FFF_FFFF, A = 0xFFFF_FFFF, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets } #[repr(isize)] enum NonPortableSigned { X = -1, Y = 0x7FFF_FFFF, Z = 0xFFFF_FFFF, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets A = 0x1_0000_0000, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets B = std::i32::MIN as isize, C = (std::i32::MIN as isize) - 1, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets } enum NonPortableSignedNoHint { X = -1, Y = 0x7FFF_FFFF, Z = 0xFFFF_FFFF, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets A = 0x1_0000_0000, //~ ERROR: Clike enum variant discriminant is not portable to 32-bit targets } /* FIXME: uncomment once https://github.com/rust-lang/rust/issues/31910 is fixed #[repr(usize)] enum NonPortable2<T: Trait> { X = Trait::Number, Y = 0, } trait Trait { const Number: usize = 0x1_0000_0000; } */ fn main() { }