GoPLS Viewer

Home|gopls/cmd/signature-fuzzer/internal/fuzz-generator/pointerparm.go
1// Copyright 2021 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 generator
6
7import (
8    "bytes"
9    "fmt"
10)
11
12// pointerparm describes a parameter of pointer type; it implements the
13// "parm" interface.
14type pointerparm struct {
15    tag    string
16    totype parm
17    isBlank
18    addrTakenHow
19    isGenValFunc
20    skipCompare
21}
22
23func (p pointerparmDeclare(b *bytes.Bufferprefix stringsuffix stringcaller bool) {
24    n := p.totype.TypeName()
25    if caller {
26        n = p.totype.QualName()
27    }
28    b.WriteString(fmt.Sprintf("%s *%s%s"prefixnsuffix))
29}
30
31func (p pointerparmGenElemRef(elidx intpath string) (stringparm) {
32    return path, &p
33}
34
35func (p pointerparmGenValue(s *genstatef *funcdefvalue intcaller bool) (stringint) {
36    pref := ""
37    if caller {
38        pref = s.checkerPkg(s.pkidx) + "."
39    }
40    var valstr string
41    valstrvalue = s.GenValue(fp.totypevaluecaller)
42    fname := s.genAllocFunc(p.totype)
43    return fmt.Sprintf("%s%s(%s)"preffnamevalstr), value
44}
45
46func (p pointerparmIsControl() bool {
47    return false
48}
49
50func (p pointerparmNumElements() int {
51    return 1
52}
53
54func (p pointerparmString() string {
55    return fmt.Sprintf("*%s"p.totype)
56}
57
58func (p pointerparmTypeName() string {
59    return fmt.Sprintf("*%s"p.totype.TypeName())
60}
61
62func (p pointerparmQualName() string {
63    return fmt.Sprintf("*%s"p.totype.QualName())
64}
65
66func mkPointerParm(to parmpointerparm {
67    var pp pointerparm
68    pp.tag = "pointer"
69    pp.totype = to
70    return pp
71}
72
73func (p pointerparmHasPointer() bool {
74    return true
75}
76
MembersX
pointerparm.GenElemRef.p
pointerparm.HasPointer.p
pointerparm.Declare.p
pointerparm.Declare.b
pointerparm.Declare.prefix
pointerparm.Declare.caller
pointerparm.GenElemRef.elidx
pointerparm.GenValue.value
pointerparm.IsControl.p
pointerparm.IsControl
pointerparm.String
pointerparm.TypeName
pointerparm.GenElemRef
pointerparm.GenValue
mkPointerParm.pp
pointerparm
pointerparm.totype
pointerparm.Declare.n
pointerparm.GenValue.f
pointerparm.GenValue.pref
pointerparm.GenValue.valstr
pointerparm.NumElements.p
mkPointerParm
mkPointerParm.to
pointerparm.GenValue.fname
pointerparm.String.p
pointerparm.QualName.p
pointerparm.QualName
pointerparm.HasPointer
pointerparm.tag
pointerparm.Declare
pointerparm.Declare.suffix
pointerparm.GenValue.p
pointerparm.GenValue.caller
pointerparm.TypeName.p
pointerparm.GenElemRef.path
pointerparm.GenValue.s
pointerparm.NumElements
Members
X