]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/shift.rs
Imported Upstream version 1.0.0~beta
[rustc.git] / src / test / run-pass / shift.rs
CommitLineData
223e47cc
LB
1// Copyright 2012 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// Testing shifts for various combinations of integers
12// Issue #1570
13
c34b1796
AL
14// pretty-expanded FIXME #23616
15
223e47cc
LB
16pub fn main() {
17 test_misc();
18 test_expr();
19 test_const();
20}
21
22fn test_misc() {
85aaf69f 23 assert_eq!(1 << 1 << 1 << 1 << 1 << 1, 32);
223e47cc
LB
24}
25
26fn test_expr() {
c34b1796 27 let v10 = 10 as usize;
223e47cc
LB
28 let v4 = 4 as u8;
29 let v2 = 2 as u8;
c34b1796
AL
30 assert_eq!(v10 >> v2 as usize, v2 as usize);
31 assert_eq!(v10 << v4 as usize, 160 as usize);
223e47cc
LB
32
33 let v10 = 10 as u8;
c34b1796
AL
34 let v4 = 4 as usize;
35 let v2 = 2 as usize;
36 assert_eq!(v10 >> v2 as usize, v2 as u8);
37 assert_eq!(v10 << v4 as usize, 160 as u8);
223e47cc 38
c34b1796 39 let v10 = 10 as isize;
223e47cc
LB
40 let v4 = 4 as i8;
41 let v2 = 2 as i8;
c34b1796
AL
42 assert_eq!(v10 >> v2 as usize, v2 as isize);
43 assert_eq!(v10 << v4 as usize, 160 as isize);
223e47cc
LB
44
45 let v10 = 10 as i8;
c34b1796
AL
46 let v4 = 4 as isize;
47 let v2 = 2 as isize;
48 assert_eq!(v10 >> v2 as usize, v2 as i8);
49 assert_eq!(v10 << v4 as usize, 160 as i8);
223e47cc 50
c34b1796
AL
51 let v10 = 10 as usize;
52 let v4 = 4 as isize;
53 let v2 = 2 as isize;
54 assert_eq!(v10 >> v2 as usize, v2 as usize);
55 assert_eq!(v10 << v4 as usize, 160 as usize);
223e47cc
LB
56}
57
58fn test_const() {
c34b1796
AL
59 static r1_1: usize = 10_usize >> 2_usize;
60 static r2_1: usize = 10_usize << 4_usize;
61 assert_eq!(r1_1, 2 as usize);
62 assert_eq!(r2_1, 160 as usize);
223e47cc 63
85aaf69f
SL
64 static r1_2: u8 = 10u8 >> 2_usize;
65 static r2_2: u8 = 10u8 << 4_usize;
970d7e83
LB
66 assert_eq!(r1_2, 2 as u8);
67 assert_eq!(r2_2, 160 as u8);
223e47cc 68
c34b1796
AL
69 static r1_3: isize = 10 >> 2_usize;
70 static r2_3: isize = 10 << 4_usize;
71 assert_eq!(r1_3, 2 as isize);
72 assert_eq!(r2_3, 160 as isize);
223e47cc 73
85aaf69f
SL
74 static r1_4: i8 = 10i8 >> 2_usize;
75 static r2_4: i8 = 10i8 << 4_usize;
970d7e83
LB
76 assert_eq!(r1_4, 2 as i8);
77 assert_eq!(r2_4, 160 as i8);
223e47cc 78
c34b1796
AL
79 static r1_5: usize = 10_usize >> 2_usize;
80 static r2_5: usize = 10_usize << 4_usize;
81 assert_eq!(r1_5, 2 as usize);
82 assert_eq!(r2_5, 160 as usize);
223e47cc 83}