.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
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/staticcheck/testdata/src/CheckStaticBitShift/CheckStaticBitShift.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/staticcheck/testdata/src/CheckStaticBitShift/CheckStaticBitShift.go
new file mode 100644 (file)
index 0000000..d69fc09
--- /dev/null
@@ -0,0 +1,100 @@
+package pkg
+
+// Partially copied from go vet's test suite.
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE-THIRD-PARTY file.
+
+type Number int8
+
+func fn() {
+       var n8 Number
+       n8 <<= 8 // want `will always clear it`
+
+       var i8 int8
+       _ = i8 << 7
+       _ = (i8 + 1) << 8 // want `will always clear it`
+       _ = i8 << (7 + 1) // want `will always clear it`
+       _ = i8 >> 8       // want `will always clear it`
+       i8 <<= 8          // want `will always clear it`
+       i8 >>= 8          // want `will always clear it`
+       i8 <<= 12         // want `will always clear it`
+
+       var i16 int16
+       _ = i16 << 15
+       _ = i16 << 16 // want `will always clear it`
+       _ = i16 >> 16 // want `will always clear it`
+       i16 <<= 16    // want `will always clear it`
+       i16 >>= 16    // want `will always clear it`
+       i16 <<= 18    // want `will always clear it`
+
+       var i32 int32
+       _ = i32 << 31
+       _ = i32 << 32 // want `will always clear it`
+       _ = i32 >> 32 // want `will always clear it`
+       i32 <<= 32    // want `will always clear it`
+       i32 >>= 32    // want `will always clear it`
+       i32 <<= 40    // want `will always clear it`
+
+       var i64 int64
+       _ = i64 << 63
+       _ = i64 << 64 // want `will always clear it`
+       _ = i64 >> 64 // want `will always clear it`
+       i64 <<= 64    // want `will always clear it`
+       i64 >>= 64    // want `will always clear it`
+       i64 <<= 70    // want `will always clear it`
+
+       var u8 uint8
+       _ = u8 << 7
+       _ = u8 << 8 // want `will always clear it`
+       _ = u8 >> 8 // want `will always clear it`
+       u8 <<= 8    // want `will always clear it`
+       u8 >>= 8    // want `will always clear it`
+       u8 <<= 12   // want `will always clear it`
+
+       var u16 uint16
+       _ = u16 << 15
+       _ = u16 << 16 // want `will always clear it`
+       _ = u16 >> 16 // want `will always clear it`
+       u16 <<= 16    // want `will always clear it`
+       u16 >>= 16    // want `will always clear it`
+       u16 <<= 18    // want `will always clear it`
+
+       var u32 uint32
+       _ = u32 << 31
+       _ = u32 << 32 // want `will always clear it`
+       _ = u32 >> 32 // want `will always clear it`
+       u32 <<= 32    // want `will always clear it`
+       u32 >>= 32    // want `will always clear it`
+       u32 <<= 40    // want `will always clear it`
+
+       var u64 uint64
+       _ = u64 << 63
+       _ = u64 << 64 // want `will always clear it`
+       _ = u64 >> 64 // want `will always clear it`
+       u64 <<= 64    // want `will always clear it`
+       u64 >>= 64    // want `will always clear it`
+       u64 <<= 70    // want `will always clear it`
+       _ = u64 << u64
+}
+
+func fn1() {
+       var ui uint
+       _ = ui << 64
+       _ = ui >> 64
+       ui <<= 64
+       ui >>= 64
+
+       var uptr uintptr
+       _ = uptr << 64
+       _ = uptr >> 64
+       uptr <<= 64
+       uptr >>= 64
+
+       var i int
+       _ = i << 64
+       _ = i >> 64
+       i <<= 64
+       i >>= 64
+}