File tree Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Original file line number Diff line number Diff line change
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
+ // compile-flags: -C debug_assertions=yes
12
+
13
+ #![ feature( i128_type) ]
14
+
15
+ use std:: panic;
16
+
17
+ fn main ( ) {
18
+ macro_rules! overflow_test {
19
+ ( $t: ident) => (
20
+ let r = panic:: catch_unwind( || {
21
+ ( $t:: max_value( ) ) . next_power_of_two( )
22
+ } ) ;
23
+ assert!( r. is_err( ) ) ;
24
+
25
+ let r = panic:: catch_unwind( || {
26
+ ( ( $t:: max_value( ) >> 1 ) + 2 ) . next_power_of_two( )
27
+ } ) ;
28
+ assert!( r. is_err( ) ) ;
29
+ )
30
+ }
31
+ overflow_test ! ( u8 ) ;
32
+ overflow_test ! ( u16 ) ;
33
+ overflow_test ! ( u32 ) ;
34
+ overflow_test ! ( u64 ) ;
35
+ overflow_test ! ( u128 ) ;
36
+ }
Original file line number Diff line number Diff line change
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
+ // compile-flags: -C debug_assertions=no
12
+
13
+ #![ feature( i128_type) ]
14
+
15
+ fn main ( ) {
16
+ for i in 129 ..256 {
17
+ assert_eq ! ( ( i as u8 ) . next_power_of_two( ) , 0 ) ;
18
+ }
19
+
20
+ assert_eq ! ( ( ( 1u16 << 15 ) + 1 ) . next_power_of_two( ) , 0 ) ;
21
+ assert_eq ! ( ( ( 1u32 << 31 ) + 1 ) . next_power_of_two( ) , 0 ) ;
22
+ assert_eq ! ( ( ( 1u64 << 63 ) + 1 ) . next_power_of_two( ) , 0 ) ;
23
+ assert_eq ! ( ( ( 1u128 << 127 ) + 1 ) . next_power_of_two( ) , 0 ) ;
24
+ }
You can’t perform that action at this time.
0 commit comments