GoPLS Viewer

Home|gopls/cmd/signature-fuzzer/internal/fuzz-generator/mapparm.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// mapparm describes a parameter of map type; it implements the
13// "parm" interface.
14type mapparm struct {
15    aname   string
16    qname   string
17    keytype parm
18    valtype parm
19    keytmp  string
20    isBlank
21    addrTakenHow
22    isGenValFunc
23    skipCompare
24}
25
26func (p mapparmIsControl() bool {
27    return false
28}
29
30func (p mapparmTypeName() string {
31    return p.aname
32}
33
34func (p mapparmQualName() string {
35    return p.qname
36}
37
38func (p mapparmDeclare(b *bytes.Bufferprefix stringsuffix stringcaller bool) {
39    n := p.aname
40    if caller {
41        n = p.qname
42    }
43    b.WriteString(fmt.Sprintf("%s %s%s"prefixnsuffix))
44}
45
46func (p mapparmString() string {
47    return fmt.Sprintf("%s map[%s]%s"p.aname,
48        p.keytype.String(), p.valtype.String())
49}
50
51func (p mapparmGenValue(s *genstatef *funcdefvalue intcaller bool) (stringint) {
52    var buf bytes.Buffer
53
54    verb(5"mapparm.GenValue(%d)"value)
55
56    n := p.aname
57    if caller {
58        n = p.qname
59    }
60    buf.WriteString(fmt.Sprintf("%s{"n))
61    buf.WriteString(p.keytmp + ": ")
62
63    var valstr string
64    valstrvalue = s.GenValue(fp.valtypevaluecaller)
65    buf.WriteString(valstr + "}")
66    return buf.String(), value
67}
68
69func (p mapparmGenElemRef(elidx intpath string) (stringparm) {
70    vne := p.valtype.NumElements()
71    verb(4"begin GenElemRef(%d,%s) on %s %d"elidxpathp.String(), vne)
72
73    ppath := fmt.Sprintf("%s[mkt.%s]"pathp.keytmp)
74
75    // otherwise dig into the value
76    verb(4"recur GenElemRef(%d,...)"elidx)
77
78    // Otherwise our victim is somewhere inside the value
79    if p.IsBlank() {
80        ppath = "_"
81    }
82    return p.valtype.GenElemRef(elidxppath)
83}
84
85func (p mapparmNumElements() int {
86    return p.valtype.NumElements()
87}
88
89func (p mapparmHasPointer() bool {
90    return true
91}
92
MembersX
mapparm.Declare
mapparm.Declare.n
mapparm.GenValue.caller
mapparm.GenValue.n
mapparm.NumElements
mapparm
mapparm.aname
mapparm.String.p
mapparm.GenValue.s
mapparm.NumElements.p
mapparm.GenElemRef.elidx
mapparm.IsControl
mapparm.String
mapparm.GenValue.p
mapparm.GenValue
mapparm.GenValue.value
mapparm.QualName
mapparm.Declare.p
mapparm.GenValue.f
mapparm.GenValue.buf
mapparm.HasPointer.p
mapparm.keytmp
mapparm.TypeName
mapparm.GenElemRef.p
mapparm.GenElemRef
mapparm.GenElemRef.path
mapparm.GenElemRef.vne
mapparm.GenElemRef.ppath
mapparm.keytype
mapparm.IsControl.p
mapparm.QualName.p
mapparm.Declare.suffix
mapparm.Declare.caller
mapparm.HasPointer
mapparm.valtype
mapparm.TypeName.p
mapparm.Declare.b
mapparm.Declare.prefix
mapparm.qname
mapparm.GenValue.valstr
Members
X