.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.1.1 / staticcheck / testdata / src / CheckStaticBitShift / CheckStaticBitShift.go
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 // want `will always clear it`
14
15         var i8 int8
16         _ = i8 << 7
17         _ = (i8 + 1) << 8 // want `will always clear it`
18         _ = i8 << (7 + 1) // want `will always clear it`
19         _ = i8 >> 8       // want `will always clear it`
20         i8 <<= 8          // want `will always clear it`
21         i8 >>= 8          // want `will always clear it`
22         i8 <<= 12         // want `will always clear it`
23
24         var i16 int16
25         _ = i16 << 15
26         _ = i16 << 16 // want `will always clear it`
27         _ = i16 >> 16 // want `will always clear it`
28         i16 <<= 16    // want `will always clear it`
29         i16 >>= 16    // want `will always clear it`
30         i16 <<= 18    // want `will always clear it`
31
32         var i32 int32
33         _ = i32 << 31
34         _ = i32 << 32 // want `will always clear it`
35         _ = i32 >> 32 // want `will always clear it`
36         i32 <<= 32    // want `will always clear it`
37         i32 >>= 32    // want `will always clear it`
38         i32 <<= 40    // want `will always clear it`
39
40         var i64 int64
41         _ = i64 << 63
42         _ = i64 << 64 // want `will always clear it`
43         _ = i64 >> 64 // want `will always clear it`
44         i64 <<= 64    // want `will always clear it`
45         i64 >>= 64    // want `will always clear it`
46         i64 <<= 70    // want `will always clear it`
47
48         var u8 uint8
49         _ = u8 << 7
50         _ = u8 << 8 // want `will always clear it`
51         _ = u8 >> 8 // want `will always clear it`
52         u8 <<= 8    // want `will always clear it`
53         u8 >>= 8    // want `will always clear it`
54         u8 <<= 12   // want `will always clear it`
55
56         var u16 uint16
57         _ = u16 << 15
58         _ = u16 << 16 // want `will always clear it`
59         _ = u16 >> 16 // want `will always clear it`
60         u16 <<= 16    // want `will always clear it`
61         u16 >>= 16    // want `will always clear it`
62         u16 <<= 18    // want `will always clear it`
63
64         var u32 uint32
65         _ = u32 << 31
66         _ = u32 << 32 // want `will always clear it`
67         _ = u32 >> 32 // want `will always clear it`
68         u32 <<= 32    // want `will always clear it`
69         u32 >>= 32    // want `will always clear it`
70         u32 <<= 40    // want `will always clear it`
71
72         var u64 uint64
73         _ = u64 << 63
74         _ = u64 << 64 // want `will always clear it`
75         _ = u64 >> 64 // want `will always clear it`
76         u64 <<= 64    // want `will always clear it`
77         u64 >>= 64    // want `will always clear it`
78         u64 <<= 70    // want `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 }