diff options
| author | Falco Hirschenberger <falco.hirschenberger@gmail.com> | 2014-11-01 09:10:02 +0100 |
|---|---|---|
| committer | Falco Hirschenberger <falco.hirschenberger@gmail.com> | 2014-11-01 09:10:10 +0100 |
| commit | e5058a8f0c8b9ad6dbfe53fb8b84e636db501ae2 (patch) | |
| tree | 9b9a6e0125ac8c174ed95419db9ebb67130fe4e5 /src/test | |
| parent | 51a25c7f96ad0d00836314d705e3f0a477562a2c (diff) | |
| download | rust-e5058a8f0c8b9ad6dbfe53fb8b84e636db501ae2.tar.gz rust-e5058a8f0c8b9ad6dbfe53fb8b84e636db501ae2.zip | |
Add lint for checking exceeding bitshifts #17713
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/huge-array-simple.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/lint-exceeding-bitshifts.rs | 58 |
2 files changed, 59 insertions, 1 deletions
diff --git a/src/test/compile-fail/huge-array-simple.rs b/src/test/compile-fail/huge-array-simple.rs index b23d0716e6d..17f85c7bd2b 100644 --- a/src/test/compile-fail/huge-array-simple.rs +++ b/src/test/compile-fail/huge-array-simple.rs @@ -11,5 +11,5 @@ // error-pattern: too big for the current fn main() { - let fat : [u8, ..(1<<61)+(1<<31)] = [0, ..(1<<61)+(1<<31)]; + let fat : [u8, ..(1<<61)+(1<<31)] = [0, ..(1u64<<61) as uint +(1u64<<31) as uint]; } diff --git a/src/test/compile-fail/lint-exceeding-bitshifts.rs b/src/test/compile-fail/lint-exceeding-bitshifts.rs new file mode 100644 index 00000000000..f270994bd38 --- /dev/null +++ b/src/test/compile-fail/lint-exceeding-bitshifts.rs @@ -0,0 +1,58 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![deny(exceeding_bitshifts)] +#![allow(unused_variables)] + +fn main() { + let n = 1u8 << 8; + let n = 1u8 << 9; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u16 << 16; + let n = 1u16 << 17; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u32 << 32; + let n = 1u32 << 33; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u64 << 64; + let n = 1u64 << 65; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i8 << 8; + let n = 1i8 << 9; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i16 << 16; + let n = 1i16 << 17; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i32 << 32; + let n = 1i32 << 33; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i64 << 64; + let n = 1i64 << 65; //~ ERROR: bitshift exceeds the type's number of bits + + let n = 1u8 >> 8; + let n = 1u8 >> 9; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u16 >> 16; + let n = 1u16 >> 17; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u32 >> 32; + let n = 1u32 >> 33; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1u64 >> 64; + let n = 1u64 >> 65; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i8 >> 8; + let n = 1i8 >> 9; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i16 >> 16; + let n = 1i16 >> 17; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i32 >> 32; + let n = 1i32 >> 33; //~ ERROR: bitshift exceeds the type's number of bits + let n = 1i64 >> 64; + let n = 1i64 >> 65; //~ ERROR: bitshift exceeds the type's number of bits + + let n = 1u8; + let n = n << 8; + let n = n << 9; //~ ERROR: bitshift exceeds the type's number of bits + + let n = 1u8 << -9; //~ ERROR: bitshift exceeds the type's number of bits + + let n = 1u8 << (4+4); + let n = 1u8 << (4+5); //~ ERROR: bitshift exceeds the type's number of bits +} + |
