mirror of
https://github.com/golang/go.git
synced 2025-05-31 23:25:39 +00:00
cmd/compile: eliminate NumFields wrapper functions
Change-Id: I3c6035559288cfdc33857216f50241b81932c8a4 Reviewed-on: https://go-review.googlesource.com/20811 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
15ed37d7b7
commit
dbed1c6361
@ -559,12 +559,12 @@ func (p *exporter) qualifiedName(sym *Sym) {
|
||||
}
|
||||
|
||||
func (p *exporter) fieldList(t *Type) {
|
||||
if p.trace && countfield(t) > 0 {
|
||||
if p.trace && t.NumFields() > 0 {
|
||||
p.tracef("fields {>")
|
||||
defer p.tracef("<\n} ")
|
||||
}
|
||||
|
||||
p.int(countfield(t))
|
||||
p.int(t.NumFields())
|
||||
for _, f := range t.Fields().Slice() {
|
||||
if p.trace {
|
||||
p.tracef("\n")
|
||||
@ -588,12 +588,12 @@ func (p *exporter) note(n *string) {
|
||||
}
|
||||
|
||||
func (p *exporter) methodList(t *Type) {
|
||||
if p.trace && countfield(t) > 0 {
|
||||
if p.trace && t.NumFields() > 0 {
|
||||
p.tracef("methods {>")
|
||||
defer p.tracef("<\n} ")
|
||||
}
|
||||
|
||||
p.int(countfield(t))
|
||||
p.int(t.NumFields())
|
||||
for _, m := range t.Fields().Slice() {
|
||||
if p.trace {
|
||||
p.tracef("\n")
|
||||
@ -650,7 +650,7 @@ func (p *exporter) paramList(params *Type, numbered bool) {
|
||||
// use negative length to indicate unnamed parameters
|
||||
// (look at the first parameter only since either all
|
||||
// names are present or all are absent)
|
||||
n := countfield(params)
|
||||
n := params.NumFields()
|
||||
if n > 0 && parName(params.Field(0), numbered) == "" {
|
||||
n = -n
|
||||
}
|
||||
|
@ -1030,7 +1030,7 @@ func isifacemethod(f *Type) bool {
|
||||
return false
|
||||
}
|
||||
t = t.Type
|
||||
if t.Sym != nil || t.Etype != TSTRUCT || countfield(t) != 0 {
|
||||
if t.Sym != nil || t.Etype != TSTRUCT || t.NumFields() != 0 {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
@ -1071,7 +1071,7 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) {
|
||||
}
|
||||
|
||||
// initialize of not completely specified
|
||||
if var_.isSimpleName() || n.List.Len() < structcount(t) {
|
||||
if var_.isSimpleName() || n.List.Len() < t.NumFields() {
|
||||
a := Nod(OAS, var_, nil)
|
||||
typecheck(&a, Etop)
|
||||
walkexpr(&a, init)
|
||||
|
@ -2639,7 +2639,7 @@ func canSSAType(t *Type) bool {
|
||||
// introduced by the compiler for variadic functions.
|
||||
return false
|
||||
case TSTRUCT:
|
||||
if countfield(t) > ssa.MaxStruct {
|
||||
if t.NumFields() > ssa.MaxStruct {
|
||||
return false
|
||||
}
|
||||
for _, t1 := range t.Fields().Slice() {
|
||||
|
@ -592,7 +592,7 @@ func Isinter(t *Type) bool {
|
||||
}
|
||||
|
||||
func isnilinter(t *Type) bool {
|
||||
return Isinter(t) && countfield(t) == 0
|
||||
return Isinter(t) && t.NumFields() == 0
|
||||
}
|
||||
|
||||
func isideal(t *Type) bool {
|
||||
@ -2388,7 +2388,7 @@ func isdirectiface(t *Type) bool {
|
||||
|
||||
case TSTRUCT:
|
||||
// Struct with 1 field of direct iface type can be direct.
|
||||
return countfield(t) == 1 && isdirectiface(t.Field(0).Type)
|
||||
return t.NumFields() == 1 && isdirectiface(t.Field(0).Type)
|
||||
}
|
||||
|
||||
return false
|
||||
|
@ -683,8 +683,3 @@ func (t *Type) NumElem() int64 {
|
||||
func (t *Type) IsMemory() bool { return false }
|
||||
func (t *Type) IsFlags() bool { return false }
|
||||
func (t *Type) IsVoid() bool { return false }
|
||||
|
||||
// TODO(mdempsky): Replace all of these with direct calls to t.NumFields().
|
||||
func countfield(t *Type) int { return t.NumFields() }
|
||||
func downcount(t *Type) int { return t.NumFields() }
|
||||
func structcount(t *Type) int { return t.NumFields() }
|
||||
|
@ -2597,8 +2597,8 @@ func typecheckaste(op Op, call *Node, isddd bool, tstruct *Type, nl Nodes, desc
|
||||
if n.Type != nil {
|
||||
if n.Type.Etype == TSTRUCT && n.Type.Funarg {
|
||||
if !hasddd(tstruct) {
|
||||
n1 := downcount(tstruct)
|
||||
n2 := downcount(n.Type)
|
||||
n1 := tstruct.NumFields()
|
||||
n2 := n.Type.NumFields()
|
||||
if n2 > n1 {
|
||||
goto toomany
|
||||
}
|
||||
@ -2646,7 +2646,7 @@ func typecheckaste(op Op, call *Node, isddd bool, tstruct *Type, nl Nodes, desc
|
||||
}
|
||||
}
|
||||
|
||||
n1 = downcount(tstruct)
|
||||
n1 = tstruct.NumFields()
|
||||
n2 = nl.Len()
|
||||
if !hasddd(tstruct) {
|
||||
if n2 > n1 {
|
||||
@ -3347,7 +3347,7 @@ func typecheckas2(n *Node) {
|
||||
if r.Type.Etype != TSTRUCT || !r.Type.Funarg {
|
||||
break
|
||||
}
|
||||
cr = structcount(r.Type)
|
||||
cr = r.Type.NumFields()
|
||||
if cr != cl {
|
||||
goto mismatch
|
||||
}
|
||||
|
@ -1742,7 +1742,7 @@ func ascompatet(op Op, nl Nodes, nr *Type, fp int, init *Nodes) []*Node {
|
||||
}
|
||||
|
||||
if i < nl.Len() || r != nil {
|
||||
Yyerror("ascompatet: assignment count mismatch: %d = %d", nl.Len(), structcount(nr))
|
||||
Yyerror("ascompatet: assignment count mismatch: %d = %d", nl.Len(), nr.NumFields())
|
||||
}
|
||||
|
||||
if ullmanOverflow {
|
||||
@ -3225,7 +3225,7 @@ func walkcompare(np **Node, init *Nodes) {
|
||||
}
|
||||
}
|
||||
|
||||
if t.Etype == TSTRUCT && countfield(t) <= 4 {
|
||||
if t.Etype == TSTRUCT && t.NumFields() <= 4 {
|
||||
// Struct of four or fewer fields.
|
||||
// Inline comparisons.
|
||||
var li *Node
|
||||
@ -3771,16 +3771,16 @@ func usemethod(n *Node) {
|
||||
//
|
||||
// TODO(crawshaw): improve precision of match by working out
|
||||
// how to check the method name.
|
||||
if n := countfield(t.Params()); n != 1 {
|
||||
if n := t.Params().NumFields(); n != 1 {
|
||||
return
|
||||
}
|
||||
if n := countfield(t.Results()); n != 1 && n != 2 {
|
||||
if n := t.Results().NumFields(); n != 1 && n != 2 {
|
||||
return
|
||||
}
|
||||
p0 := t.Params().Field(0)
|
||||
res0 := t.Results().Field(0)
|
||||
var res1 *Field
|
||||
if countfield(t.Results()) == 2 {
|
||||
if t.Results().NumFields() == 2 {
|
||||
res1 = t.Results().Field(1)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user