OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Go Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style |
| 3 // license that can be found in the LICENSE file. |
| 4 |
| 5 // This file contains tests for the suspicious shift checker. |
| 6 |
| 7 package testdata |
| 8 |
| 9 func ShiftTest() { |
| 10 var i8 int8 |
| 11 i8 << 7 |
| 12 i8 << (7 + 1) // ERROR "shift of i8 by 8 will always be 0" |
| 13 i8 >> 8 // ERROR "shift of i8 by 8 will always be 0" |
| 14 i8 <<= 8 // ERROR "shift of i8 by 8 will always be 0" |
| 15 i8 >>= 8 // ERROR "shift of i8 by 8 will always be 0" |
| 16 var i16 int16 |
| 17 i16 << 15 |
| 18 i16 << 16 // ERROR "shift of i16 by 16 will always be 0" |
| 19 i16 >> 16 // ERROR "shift of i16 by 16 will always be 0" |
| 20 i16 <<= 16 // ERROR "shift of i16 by 16 will always be 0" |
| 21 i16 >>= 16 // ERROR "shift of i16 by 16 will always be 0" |
| 22 var i32 int32 |
| 23 i32 << 31 |
| 24 i32 << 32 // ERROR "shift of i32 by 32 will always be 0" |
| 25 i32 >> 32 // ERROR "shift of i32 by 32 will always be 0" |
| 26 i32 <<= 32 // ERROR "shift of i32 by 32 will always be 0" |
| 27 i32 >>= 32 // ERROR "shift of i32 by 32 will always be 0" |
| 28 var i64 int64 |
| 29 i64 << 63 |
| 30 i64 << 64 // ERROR "shift of i64 by 64 will always be 0" |
| 31 i64 >> 64 // ERROR "shift of i64 by 64 will always be 0" |
| 32 i64 <<= 64 // ERROR "shift of i64 by 64 will always be 0" |
| 33 i64 >>= 64 // ERROR "shift of i64 by 64 will always be 0" |
| 34 var u8 uint8 |
| 35 u8 << 7 |
| 36 u8 << 8 // ERROR "shift of u8 by 8 will always be 0" |
| 37 u8 >> 8 // ERROR "shift of u8 by 8 will always be 0" |
| 38 u8 <<= 8 // ERROR "shift of u8 by 8 will always be 0" |
| 39 u8 >>= 8 // ERROR "shift of u8 by 8 will always be 0" |
| 40 var u16 uint16 |
| 41 u16 << 15 |
| 42 u16 << 16 // ERROR "shift of u16 by 16 will always be 0" |
| 43 u16 >> 16 // ERROR "shift of u16 by 16 will always be 0" |
| 44 u16 <<= 16 // ERROR "shift of u16 by 16 will always be 0" |
| 45 u16 >>= 16 // ERROR "shift of u16 by 16 will always be 0" |
| 46 var u32 uint32 |
| 47 u32 << 31 |
| 48 u32 << 32 // ERROR "shift of u32 by 32 will always be 0" |
| 49 u32 >> 32 // ERROR "shift of u32 by 32 will always be 0" |
| 50 u32 <<= 32 // ERROR "shift of u32 by 32 will always be 0" |
| 51 u32 >>= 32 // ERROR "shift of u32 by 32 will always be 0" |
| 52 var u64 uint64 |
| 53 u64 << 63 |
| 54 u64 << 64 // ERROR "shift of u64 by 64 will always be 0" |
| 55 u64 >> 64 // ERROR "shift of u64 by 64 will always be 0" |
| 56 u64 <<= 64 // ERROR "shift of u64 by 64 will always be 0" |
| 57 u64 >>= 64 // ERROR "shift of u64 by 64 will always be 0" |
| 58 } |
OLD | NEW |