Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / go / analysis / passes / unsafeptr / testdata / src / a / issue40701.go
1 // Copyright 2020 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 package a
6
7 import (
8         "reflect"
9         "unsafe"
10 )
11
12 // Explicitly allocating a variable of type reflect.SliceHeader.
13 func _(p *byte, n int) []byte {
14         var sh reflect.SliceHeader
15         sh.Data = uintptr(unsafe.Pointer(p))
16         sh.Len = n
17         sh.Cap = n
18         return *(*[]byte)(unsafe.Pointer(&sh)) // want "possible misuse of reflect.SliceHeader"
19 }
20
21 // Implicitly allocating a variable of type reflect.SliceHeader.
22 func _(p *byte, n int) []byte {
23         return *(*[]byte)(unsafe.Pointer(&reflect.SliceHeader{ // want "possible misuse of reflect.SliceHeader"
24                 Data: uintptr(unsafe.Pointer(p)),
25                 Len:  n,
26                 Cap:  n,
27         }))
28 }
29
30 // Use reflect.StringHeader as a composite literal value.
31 func _(p *byte, n int) []byte {
32         var res []byte
33         *(*reflect.StringHeader)(unsafe.Pointer(&res)) = reflect.StringHeader{ // want "possible misuse of reflect.StringHeader"
34                 Data: uintptr(unsafe.Pointer(p)),
35                 Len:  n,
36         }
37         return res
38 }
39
40 func _() {
41         // don't crash when obj.Pkg() == nil
42         var err error
43         _ = &err
44 }