]> git.proxmox.com Git - rustc.git/blob - src/test/compile-fail/float-int-invalid-const-cast.rs
New upstream version 1.23.0+dfsg1
[rustc.git] / src / test / compile-fail / float-int-invalid-const-cast.rs
1 // Copyright 2017 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.
4 //
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.
10
11 #![feature(i128_type)]
12 #![allow(const_err)] // this test is only about hard errors
13
14 use std::{f32, f64};
15
16 // Forces evaluation of constants, triggering hard error
17 fn force<T>(_: T) {}
18
19 fn main() {
20 { const X: u16 = -1. as u16; force(X); } //~ ERROR constant evaluation error
21 { const X: u128 = -100. as u128; force(X); } //~ ERROR constant evaluation error
22
23 { const X: i8 = f32::NAN as i8; force(X); } //~ ERROR constant evaluation error
24 { const X: i32 = f32::NAN as i32; force(X); } //~ ERROR constant evaluation error
25 { const X: u64 = f32::NAN as u64; force(X); } //~ ERROR constant evaluation error
26 { const X: u128 = f32::NAN as u128; force(X); } //~ ERROR constant evaluation error
27
28 { const X: i8 = f32::INFINITY as i8; force(X); } //~ ERROR constant evaluation error
29 { const X: u32 = f32::INFINITY as u32; force(X); } //~ ERROR constant evaluation error
30 { const X: i128 = f32::INFINITY as i128; force(X); } //~ ERROR constant evaluation error
31 { const X: u128 = f32::INFINITY as u128; force(X); } //~ ERROR constant evaluation error
32
33 { const X: u8 = f32::NEG_INFINITY as u8; force(X); } //~ ERROR constant evaluation error
34 { const X: u16 = f32::NEG_INFINITY as u16; force(X); } //~ ERROR constant evaluation error
35 { const X: i64 = f32::NEG_INFINITY as i64; force(X); } //~ ERROR constant evaluation error
36 { const X: i128 = f32::NEG_INFINITY as i128; force(X); } //~ ERROR constant evaluation error
37
38 { const X: i8 = f64::NAN as i8; force(X); } //~ ERROR constant evaluation error
39 { const X: i32 = f64::NAN as i32; force(X); } //~ ERROR constant evaluation error
40 { const X: u64 = f64::NAN as u64; force(X); } //~ ERROR constant evaluation error
41 { const X: u128 = f64::NAN as u128; force(X); } //~ ERROR constant evaluation error
42
43 { const X: i8 = f64::INFINITY as i8; force(X); } //~ ERROR constant evaluation error
44 { const X: u32 = f64::INFINITY as u32; force(X); } //~ ERROR constant evaluation error
45 { const X: i128 = f64::INFINITY as i128; force(X); } //~ ERROR constant evaluation error
46 { const X: u128 = f64::INFINITY as u128; force(X); } //~ ERROR constant evaluation error
47
48 { const X: u8 = f64::NEG_INFINITY as u8; force(X); } //~ ERROR constant evaluation error
49 { const X: u16 = f64::NEG_INFINITY as u16; force(X); } //~ ERROR constant evaluation error
50 { const X: i64 = f64::NEG_INFINITY as i64; force(X); } //~ ERROR constant evaluation error
51 { const X: i128 = f64::NEG_INFINITY as i128; force(X); } //~ ERROR constant evaluation error
52
53 { const X: u8 = 256. as u8; force(X); } //~ ERROR constant evaluation error
54 { const X: i8 = -129. as i8; force(X); } //~ ERROR constant evaluation error
55 { const X: i8 = 128. as i8; force(X); } //~ ERROR constant evaluation error
56 { const X: i32 = 2147483648. as i32; force(X); } //~ ERROR constant evaluation error
57 { const X: i32 = -2147483904. as i32; force(X); } //~ ERROR constant evaluation error
58 { const X: u32 = 4294967296. as u32; force(X); } //~ ERROR constant evaluation error
59 { const X: u128 = 1e40 as u128; force(X); } //~ ERROR constant evaluation error
60 { const X: i128 = 1e40 as i128; force(X); } //~ ERROR constant evaluation error
61 }