1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 #![feature(negate_unsigned)]
13 #[repr(u8)] //~ NOTE discriminant type specified here
17 Cu8 = -23, //~ ERROR discriminant value outside specified type
20 #[repr(i8)] //~ NOTE discriminant type specified here
24 Ci8 = 223, //~ ERROR discriminant value outside specified type
27 #[repr(u16)] //~ NOTE discriminant type specified here
31 Cu16 = -22333, //~ ERROR discriminant value outside specified type
34 #[repr(i16)] //~ NOTE discriminant type specified here
38 Ci16 = 55555, //~ ERROR discriminant value outside specified type
41 #[repr(u32)] //~ NOTE discriminant type specified here
45 Cu32 = -2_000_000_000, //~ ERROR discriminant value outside specified type
48 #[repr(i32)] //~ NOTE discriminant type specified here
51 Bi32 = -2_000_000_000,
52 Ci32 = 3_000_000_000, //~ ERROR discriminant value outside specified type
55 // u64 currently allows negative numbers, and i64 allows numbers greater than `1<<63`. This is a
56 // little counterintuitive, but since the discriminant can store all the bits, and extracting it
57 // with a cast requires specifying the signedness, there is no loss of information in those cases.
58 // This also applies to isize and usize on 64-bit targets.