honnef.co/go/tools@v0.4.7/staticcheck/testdata/src/example.com/CheckStaticBitShift/CheckStaticBitShift.go (about) 1 package pkg 2 3 // Partially copied from go vet's test suite. 4 5 // Copyright 2014 The Go Authors. All rights reserved. 6 // Use of this source code is governed by a BSD-style 7 // license that can be found in the LICENSE-THIRD-PARTY file. 8 9 type Number int8 10 11 func fn() { 12 var n8 Number 13 n8 <<= 8 //@ diag(`will always clear it`) 14 15 var i8 int8 16 _ = i8 << 7 17 _ = (i8 + 1) << 8 //@ diag(`will always clear it`) 18 _ = i8 << (7 + 1) //@ diag(`will always clear it`) 19 _ = i8 >> 8 //@ diag(`will always clear it`) 20 i8 <<= 8 //@ diag(`will always clear it`) 21 i8 >>= 8 //@ diag(`will always clear it`) 22 i8 <<= 12 //@ diag(`will always clear it`) 23 24 var i16 int16 25 _ = i16 << 15 26 _ = i16 << 16 //@ diag(`will always clear it`) 27 _ = i16 >> 16 //@ diag(`will always clear it`) 28 i16 <<= 16 //@ diag(`will always clear it`) 29 i16 >>= 16 //@ diag(`will always clear it`) 30 i16 <<= 18 //@ diag(`will always clear it`) 31 32 var i32 int32 33 _ = i32 << 31 34 _ = i32 << 32 //@ diag(`will always clear it`) 35 _ = i32 >> 32 //@ diag(`will always clear it`) 36 i32 <<= 32 //@ diag(`will always clear it`) 37 i32 >>= 32 //@ diag(`will always clear it`) 38 i32 <<= 40 //@ diag(`will always clear it`) 39 40 var i64 int64 41 _ = i64 << 63 42 _ = i64 << 64 //@ diag(`will always clear it`) 43 _ = i64 >> 64 //@ diag(`will always clear it`) 44 i64 <<= 64 //@ diag(`will always clear it`) 45 i64 >>= 64 //@ diag(`will always clear it`) 46 i64 <<= 70 //@ diag(`will always clear it`) 47 48 var u8 uint8 49 _ = u8 << 7 50 _ = u8 << 8 //@ diag(`will always clear it`) 51 _ = u8 >> 8 //@ diag(`will always clear it`) 52 u8 <<= 8 //@ diag(`will always clear it`) 53 u8 >>= 8 //@ diag(`will always clear it`) 54 u8 <<= 12 //@ diag(`will always clear it`) 55 56 var u16 uint16 57 _ = u16 << 15 58 _ = u16 << 16 //@ diag(`will always clear it`) 59 _ = u16 >> 16 //@ diag(`will always clear it`) 60 u16 <<= 16 //@ diag(`will always clear it`) 61 u16 >>= 16 //@ diag(`will always clear it`) 62 u16 <<= 18 //@ diag(`will always clear it`) 63 64 var u32 uint32 65 _ = u32 << 31 66 _ = u32 << 32 //@ diag(`will always clear it`) 67 _ = u32 >> 32 //@ diag(`will always clear it`) 68 u32 <<= 32 //@ diag(`will always clear it`) 69 u32 >>= 32 //@ diag(`will always clear it`) 70 u32 <<= 40 //@ diag(`will always clear it`) 71 72 var u64 uint64 73 _ = u64 << 63 74 _ = u64 << 64 //@ diag(`will always clear it`) 75 _ = u64 >> 64 //@ diag(`will always clear it`) 76 u64 <<= 64 //@ diag(`will always clear it`) 77 u64 >>= 64 //@ diag(`will always clear it`) 78 u64 <<= 70 //@ diag(`will always clear it`) 79 _ = u64 << u64 80 } 81 82 func fn1() { 83 var ui uint 84 _ = ui << 64 85 _ = ui >> 64 86 ui <<= 64 87 ui >>= 64 88 89 var uptr uintptr 90 _ = uptr << 64 91 _ = uptr >> 64 92 uptr <<= 64 93 uptr >>= 64 94 95 var i int 96 _ = i << 64 97 _ = i >> 64 98 i <<= 64 99 i >>= 64 100 }