GoPLS Viewer

Home|gopls/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
5package a
6
7import (
8    "reflect"
9    "unsafe"
10)
11
12// Explicitly allocating a variable of type reflect.SliceHeader.
13func _(p *byten 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.
22func _(p *byten int) []byte {
23    return *(*[]byte)(unsafe.Pointer(&reflect.SliceHeader// want "possible misuse of reflect.SliceHeader"
24        Datauintptr(unsafe.Pointer(p)),
25        Len:  n,
26        Cap:  n,
27    }))
28}
29
30// Use reflect.StringHeader as a composite literal value.
31func _(p *byten int) []byte {
32    var res []byte
33    *(*reflect.StringHeader)(unsafe.Pointer(&res)) = reflect.StringHeader// want "possible misuse of reflect.StringHeader"
34        Datauintptr(unsafe.Pointer(p)),
35        Len:  n,
36    }
37    return res
38}
39
40func _() {
41    // don't crash when obj.Pkg() == nil
42    var err error
43    _ = &err
44}
45
MembersX
_
_.p
_.n
_.sh
_.BlockStmt.res
_.BlockStmt.err
Members
X