]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: simplify fmtmap
authorRuss Cox <rsc@golang.org>
Sun, 6 Dec 2020 19:33:06 +0000 (14:33 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 7 Dec 2020 20:41:23 +0000 (20:41 +0000)
The format map is going to keep growing as we add more use of
concrete node types. Stop that by reporting all Node implementations
as Node.

Also, there's little point to reporting uses of %v, %p, %T, nor to reporting
formatting of basic types like int and []byte. Remove those too.
(Vet takes care of mistakes involving basic types now.)

Passes buildall w/ toolstash -cmp.

Change-Id: Ia9fb39b401c29bf0c76ffebaa24836c70acd773f
Reviewed-on: https://go-review.googlesource.com/c/go/+/275781
Trust: Russ Cox <rsc@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/fmt_test.go
src/cmd/compile/fmtmap_test.go

index 6625ccf5e24a80ba7c2a7f7ad84ef65643d5f879..6398a84f8f07f4e27750fbf72a4cfc9694d26afd 100644 (file)
@@ -125,6 +125,12 @@ func TestFormats(t *testing.T) {
                        typ := p.types[index]
                        format := typ + " " + in // e.g., "*Node %n"
 
+                       // Do not bother reporting basic types, nor %v, %T, %p.
+                       // Vet handles basic types, and those three formats apply to all types.
+                       if !strings.Contains(typ, ".") || (in == "%v" || in == "%T" || in == "%p") {
+                               return in
+                       }
+
                        // check if format is known
                        out, known := knownFormats[format]
 
@@ -413,7 +419,17 @@ func nodeString(n ast.Node) string {
 
 // typeString returns a string representation of n.
 func typeString(typ types.Type) string {
-       return filepath.ToSlash(typ.String())
+       s := filepath.ToSlash(typ.String())
+
+       // Report all the concrete IR types as Node, to shorten fmtmap.
+       const ir = "cmd/compile/internal/ir."
+       if s == "*"+ir+"Name" || s == "*"+ir+"Func" || s == "*"+ir+"Decl" ||
+               s == ir+"Ntype" || s == ir+"Expr" || s == ir+"Stmt" ||
+               strings.HasPrefix(s, "*"+ir) && (strings.HasSuffix(s, "Expr") || strings.HasSuffix(s, "Stmt")) {
+               return "cmd/compile/internal/ir.Node"
+       }
+
+       return s
 }
 
 // stringLit returns the unquoted string value and true if
index 5dd30e619baf698e0d1ca2e1d2b2f1d248f88d11..ca6f1c302e0916758b8e71e4f43926fa4744722e 100644 (file)
@@ -20,191 +20,59 @@ package main_test
 // An absent entry means that the format is not recognized as valid.
 // An empty new format means that the format should remain unchanged.
 var knownFormats = map[string]string{
-       "*bytes.Buffer %s":                                "",
-       "*cmd/compile/internal/gc.EscLocation %v":         "",
-       "*cmd/compile/internal/ir.Func %+v":               "",
-       "*cmd/compile/internal/ir.Func %L":                "",
-       "*cmd/compile/internal/ir.Func %v":                "",
-       "*cmd/compile/internal/ir.Name %#v":               "",
-       "*cmd/compile/internal/ir.Name %+v":               "",
-       "*cmd/compile/internal/ir.Name %L":                "",
-       "*cmd/compile/internal/ir.Name %v":                "",
-       "*cmd/compile/internal/ir.SliceExpr %v":           "",
-       "*cmd/compile/internal/ssa.Block %s":              "",
-       "*cmd/compile/internal/ssa.Block %v":              "",
-       "*cmd/compile/internal/ssa.Func %s":               "",
-       "*cmd/compile/internal/ssa.Func %v":               "",
-       "*cmd/compile/internal/ssa.Register %s":           "",
-       "*cmd/compile/internal/ssa.Register %v":           "",
-       "*cmd/compile/internal/ssa.SparseTreeNode %v":     "",
-       "*cmd/compile/internal/ssa.Value %s":              "",
-       "*cmd/compile/internal/ssa.Value %v":              "",
-       "*cmd/compile/internal/ssa.sparseTreeMapEntry %v": "",
-       "*cmd/compile/internal/types.Field %p":            "",
-       "*cmd/compile/internal/types.Field %v":            "",
-       "*cmd/compile/internal/types.Sym %+v":             "",
-       "*cmd/compile/internal/types.Sym %S":              "",
-       "*cmd/compile/internal/types.Sym %p":              "",
-       "*cmd/compile/internal/types.Sym %v":              "",
-       "*cmd/compile/internal/types.Type %#L":            "",
-       "*cmd/compile/internal/types.Type %#v":            "",
-       "*cmd/compile/internal/types.Type %+v":            "",
-       "*cmd/compile/internal/types.Type %-S":            "",
-       "*cmd/compile/internal/types.Type %0S":            "",
-       "*cmd/compile/internal/types.Type %L":             "",
-       "*cmd/compile/internal/types.Type %S":             "",
-       "*cmd/compile/internal/types.Type %p":             "",
-       "*cmd/compile/internal/types.Type %s":             "",
-       "*cmd/compile/internal/types.Type %v":             "",
-       "*cmd/internal/obj.Addr %v":                       "",
-       "*cmd/internal/obj.LSym %v":                       "",
-       "*math/big.Float %f":                              "",
-       "*math/big.Int %s":                                "",
-       "[16]byte %x":                                     "",
-       "[]*cmd/compile/internal/ir.Name %v":              "",
-       "[]*cmd/compile/internal/ssa.Block %v":            "",
-       "[]*cmd/compile/internal/ssa.Value %v":            "",
-       "[][]string %q":                                   "",
-       "[]byte %s":                                       "",
-       "[]byte %x":                                       "",
-       "[]cmd/compile/internal/ssa.Edge %v":              "",
-       "[]cmd/compile/internal/ssa.ID %v":                "",
-       "[]cmd/compile/internal/ssa.posetNode %v":         "",
-       "[]cmd/compile/internal/ssa.posetUndo %v":         "",
-       "[]cmd/compile/internal/syntax.token %s":          "",
-       "[]string %v":                                     "",
-       "[]uint32 %v":                                     "",
-       "bool %v":                                         "",
-       "byte %08b":                                       "",
-       "byte %c":                                         "",
-       "byte %q":                                         "",
-       "byte %v":                                         "",
-       "cmd/compile/internal/arm.shift %d":               "",
-       "cmd/compile/internal/gc.initKind %d":             "",
-       "cmd/compile/internal/gc.itag %v":                 "",
-       "cmd/compile/internal/ir.Class %d":                "",
-       "cmd/compile/internal/ir.Class %v":                "",
-       "cmd/compile/internal/ir.Node %+v":                "",
-       "cmd/compile/internal/ir.Node %L":                 "",
-       "cmd/compile/internal/ir.Node %S":                 "",
-       "cmd/compile/internal/ir.Node %p":                 "",
-       "cmd/compile/internal/ir.Node %v":                 "",
-       "cmd/compile/internal/ir.Nodes %#v":               "",
-       "cmd/compile/internal/ir.Nodes %+v":               "",
-       "cmd/compile/internal/ir.Nodes %.v":               "",
-       "cmd/compile/internal/ir.Nodes %v":                "",
-       "cmd/compile/internal/ir.Ntype %v":                "",
-       "cmd/compile/internal/ir.Op %#v":                  "",
-       "cmd/compile/internal/ir.Op %+v":                  "",
-       "cmd/compile/internal/ir.Op %v":                   "",
-       "cmd/compile/internal/ssa.BranchPrediction %d":    "",
-       "cmd/compile/internal/ssa.Edge %v":                "",
-       "cmd/compile/internal/ssa.ID %d":                  "",
-       "cmd/compile/internal/ssa.ID %v":                  "",
-       "cmd/compile/internal/ssa.LocalSlot %s":           "",
-       "cmd/compile/internal/ssa.LocalSlot %v":           "",
-       "cmd/compile/internal/ssa.Location %s":            "",
-       "cmd/compile/internal/ssa.Op %s":                  "",
-       "cmd/compile/internal/ssa.Op %v":                  "",
-       "cmd/compile/internal/ssa.Sym %v":                 "",
-       "cmd/compile/internal/ssa.ValAndOff %s":           "",
-       "cmd/compile/internal/ssa.domain %v":              "",
-       "cmd/compile/internal/ssa.flagConstant %s":        "",
-       "cmd/compile/internal/ssa.posetNode %v":           "",
-       "cmd/compile/internal/ssa.posetTestOp %v":         "",
-       "cmd/compile/internal/ssa.rbrank %d":              "",
-       "cmd/compile/internal/ssa.regMask %d":             "",
-       "cmd/compile/internal/ssa.register %d":            "",
-       "cmd/compile/internal/ssa.relation %s":            "",
-       "cmd/compile/internal/syntax.Error %q":            "",
-       "cmd/compile/internal/syntax.Expr %#v":            "",
-       "cmd/compile/internal/syntax.LitKind %d":          "",
-       "cmd/compile/internal/syntax.Node %T":             "",
-       "cmd/compile/internal/syntax.Operator %s":         "",
-       "cmd/compile/internal/syntax.Pos %s":              "",
-       "cmd/compile/internal/syntax.Pos %v":              "",
-       "cmd/compile/internal/syntax.position %s":         "",
-       "cmd/compile/internal/syntax.token %q":            "",
-       "cmd/compile/internal/syntax.token %s":            "",
-       "cmd/compile/internal/types.Kind %d":              "",
-       "cmd/compile/internal/types.Kind %s":              "",
-       "cmd/compile/internal/types.Kind %v":              "",
-       "cmd/compile/internal/types.Object %v":            "",
-       "cmd/internal/obj.ABI %v":                         "",
-       "error %v":                                        "",
-       "float64 %.2f":                                    "",
-       "float64 %.3f":                                    "",
-       "float64 %g":                                      "",
-       "go/constant.Kind %v":                             "",
-       "go/constant.Value %#v":                           "",
-       "go/constant.Value %v":                            "",
-       "int %#x":                                         "",
-       "int %-12d":                                       "",
-       "int %-6d":                                        "",
-       "int %-8o":                                        "",
-       "int %02d":                                        "",
-       "int %6d":                                         "",
-       "int %c":                                          "",
-       "int %d":                                          "",
-       "int %v":                                          "",
-       "int %x":                                          "",
-       "int16 %d":                                        "",
-       "int16 %x":                                        "",
-       "int32 %#x":                                       "",
-       "int32 %d":                                        "",
-       "int32 %v":                                        "",
-       "int32 %x":                                        "",
-       "int64 %#x":                                       "",
-       "int64 %-10d":                                     "",
-       "int64 %.5d":                                      "",
-       "int64 %d":                                        "",
-       "int64 %v":                                        "",
-       "int64 %x":                                        "",
-       "int8 %d":                                         "",
-       "int8 %v":                                         "",
-       "int8 %x":                                         "",
-       "interface{} %#v":                                 "",
-       "interface{} %T":                                  "",
-       "interface{} %p":                                  "",
-       "interface{} %q":                                  "",
-       "interface{} %s":                                  "",
-       "interface{} %v":                                  "",
-       "map[cmd/compile/internal/ir.Node]*cmd/compile/internal/ssa.Value %v": "",
-       "map[cmd/compile/internal/ir.Node][]cmd/compile/internal/ir.Node %v":  "",
-       "map[cmd/compile/internal/ssa.ID]uint32 %v":                           "",
-       "map[int64]uint32 %v":  "",
-       "math/big.Accuracy %s": "",
-       "reflect.Type %s":      "",
-       "reflect.Type %v":      "",
-       "rune %#U":             "",
-       "rune %c":              "",
-       "rune %q":              "",
-       "string %-*s":          "",
-       "string %-16s":         "",
-       "string %-6s":          "",
-       "string %q":            "",
-       "string %s":            "",
-       "string %v":            "",
-       "time.Duration %d":     "",
-       "time.Duration %v":     "",
-       "uint %04x":            "",
-       "uint %5d":             "",
-       "uint %d":              "",
-       "uint %x":              "",
-       "uint16 %d":            "",
-       "uint16 %x":            "",
-       "uint32 %#U":           "",
-       "uint32 %#x":           "",
-       "uint32 %d":            "",
-       "uint32 %v":            "",
-       "uint32 %x":            "",
-       "uint64 %08x":          "",
-       "uint64 %b":            "",
-       "uint64 %d":            "",
-       "uint64 %x":            "",
-       "uint8 %#x":            "",
-       "uint8 %d":             "",
-       "uint8 %v":             "",
-       "uint8 %x":             "",
-       "uintptr %d":           "",
+       "*bytes.Buffer %s":                             "",
+       "*cmd/compile/internal/ssa.Block %s":           "",
+       "*cmd/compile/internal/ssa.Func %s":            "",
+       "*cmd/compile/internal/ssa.Register %s":        "",
+       "*cmd/compile/internal/ssa.Value %s":           "",
+       "*cmd/compile/internal/types.Sym %+v":          "",
+       "*cmd/compile/internal/types.Sym %S":           "",
+       "*cmd/compile/internal/types.Type %#L":         "",
+       "*cmd/compile/internal/types.Type %#v":         "",
+       "*cmd/compile/internal/types.Type %+v":         "",
+       "*cmd/compile/internal/types.Type %-S":         "",
+       "*cmd/compile/internal/types.Type %0S":         "",
+       "*cmd/compile/internal/types.Type %L":          "",
+       "*cmd/compile/internal/types.Type %S":          "",
+       "*cmd/compile/internal/types.Type %s":          "",
+       "*math/big.Float %f":                           "",
+       "*math/big.Int %s":                             "",
+       "[]cmd/compile/internal/syntax.token %s":       "",
+       "cmd/compile/internal/arm.shift %d":            "",
+       "cmd/compile/internal/gc.initKind %d":          "",
+       "cmd/compile/internal/ir.Class %d":             "",
+       "cmd/compile/internal/ir.Node %#v":             "",
+       "cmd/compile/internal/ir.Node %+v":             "",
+       "cmd/compile/internal/ir.Node %L":              "",
+       "cmd/compile/internal/ir.Node %S":              "",
+       "cmd/compile/internal/ir.Nodes %#v":            "",
+       "cmd/compile/internal/ir.Nodes %+v":            "",
+       "cmd/compile/internal/ir.Nodes %.v":            "",
+       "cmd/compile/internal/ir.Op %#v":               "",
+       "cmd/compile/internal/ir.Op %+v":               "",
+       "cmd/compile/internal/ssa.BranchPrediction %d": "",
+       "cmd/compile/internal/ssa.ID %d":               "",
+       "cmd/compile/internal/ssa.LocalSlot %s":        "",
+       "cmd/compile/internal/ssa.Location %s":         "",
+       "cmd/compile/internal/ssa.Op %s":               "",
+       "cmd/compile/internal/ssa.ValAndOff %s":        "",
+       "cmd/compile/internal/ssa.flagConstant %s":     "",
+       "cmd/compile/internal/ssa.rbrank %d":           "",
+       "cmd/compile/internal/ssa.regMask %d":          "",
+       "cmd/compile/internal/ssa.register %d":         "",
+       "cmd/compile/internal/ssa.relation %s":         "",
+       "cmd/compile/internal/syntax.Error %q":         "",
+       "cmd/compile/internal/syntax.Expr %#v":         "",
+       "cmd/compile/internal/syntax.LitKind %d":       "",
+       "cmd/compile/internal/syntax.Operator %s":      "",
+       "cmd/compile/internal/syntax.Pos %s":           "",
+       "cmd/compile/internal/syntax.position %s":      "",
+       "cmd/compile/internal/syntax.token %q":         "",
+       "cmd/compile/internal/syntax.token %s":         "",
+       "cmd/compile/internal/types.Kind %d":           "",
+       "cmd/compile/internal/types.Kind %s":           "",
+       "go/constant.Value %#v":                        "",
+       "math/big.Accuracy %s":                         "",
+       "reflect.Type %s":                              "",
+       "time.Duration %d":                             "",
 }