]> Cypherpunks repositories - gostls13.git/commitdiff
go/types, types2: use strings.Builder instead of bytes.Buffer where possible
authorRobert Griesemer <gri@golang.org>
Fri, 2 Sep 2022 19:10:24 +0000 (12:10 -0700)
committerGopher Robot <gobot@golang.org>
Sat, 3 Sep 2022 18:29:30 +0000 (18:29 +0000)
Also, consistently use declaration: var buf strings.Builder.
We don't change exported signatures to match go/types (where we
can't change the exported signatures for backward-compatibility).

Change-Id: I75350886aa231889ae2fd5c4008dd4be9ed6e09f
Reviewed-on: https://go-review.googlesource.com/c/go/+/428094
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
21 files changed:
src/cmd/compile/internal/types2/api.go
src/cmd/compile/internal/types2/api_test.go
src/cmd/compile/internal/types2/errors.go
src/cmd/compile/internal/types2/example_test.go
src/cmd/compile/internal/types2/infer.go
src/cmd/compile/internal/types2/instantiate_test.go
src/cmd/compile/internal/types2/issues_test.go
src/cmd/compile/internal/types2/mono_test.go
src/cmd/compile/internal/types2/scope.go
src/cmd/compile/internal/types2/termlist.go
src/cmd/compile/internal/types2/typeset.go
src/go/types/api_test.go
src/go/types/errors.go
src/go/types/example_test.go
src/go/types/infer.go
src/go/types/instantiate_test.go
src/go/types/issues_test.go
src/go/types/mono_test.go
src/go/types/scope.go
src/go/types/termlist.go
src/go/types/typeset.go

index ef1db13fb9e35a95661819d78fc5bfb88491c358..079394883808570f9a1e049940206ace14aaa610 100644 (file)
 package types2
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "fmt"
        "go/constant"
+       "strings"
 )
 
 // An Error describes a type-checking error; it implements the error interface.
@@ -388,7 +388,7 @@ type Initializer struct {
 }
 
 func (init *Initializer) String() string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        for i, lhs := range init.Lhs {
                if i > 0 {
                        buf.WriteString(", ")
index 9367e5f3f24150abb7e46ab60d3683b17a94f40e..ac81d31fb2222ed5d7661cfb06da24653ac25770 100644 (file)
@@ -5,7 +5,6 @@
 package types2_test
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "errors"
        "fmt"
@@ -894,7 +893,7 @@ func TestImplicitsInfo(t *testing.T) {
 }
 
 func predString(tv TypeAndValue) string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        pred := func(b bool, s string) {
                if b {
                        if buf.Len() > 0 {
index 61d89530140921dac805a8f2a0a393c8a63d0c6c..3734db5910735508dcc52ac193ac313375cb2f54 100644 (file)
@@ -7,7 +7,6 @@
 package types2
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "fmt"
        "runtime"
@@ -64,7 +63,7 @@ func (err *error_) msg(qf Qualifier) string {
        if err.empty() {
                return "no error"
        }
-       var buf bytes.Buffer
+       var buf strings.Builder
        for i := range err.desc {
                p := &err.desc[i]
                if i > 0 {
@@ -106,7 +105,7 @@ func sprintf(qf Qualifier, debug bool, format string, args ...interface{}) strin
                case syntax.Expr:
                        arg = syntax.String(a)
                case []syntax.Expr:
-                       var buf bytes.Buffer
+                       var buf strings.Builder
                        buf.WriteByte('[')
                        for i, x := range a {
                                if i > 0 {
@@ -121,7 +120,7 @@ func sprintf(qf Qualifier, debug bool, format string, args ...interface{}) strin
                case Type:
                        arg = typeString(a, qf, debug)
                case []Type:
-                       var buf bytes.Buffer
+                       var buf strings.Builder
                        buf.WriteByte('[')
                        for i, x := range a {
                                if i > 0 {
@@ -132,7 +131,7 @@ func sprintf(qf Qualifier, debug bool, format string, args ...interface{}) strin
                        buf.WriteByte(']')
                        arg = buf.String()
                case []*TypeParam:
-                       var buf bytes.Buffer
+                       var buf strings.Builder
                        buf.WriteByte('[')
                        for i, x := range a {
                                if i > 0 {
@@ -300,15 +299,15 @@ func posFor(at poser) syntax.Pos {
 
 // stripAnnotations removes internal (type) annotations from s.
 func stripAnnotations(s string) string {
-       var b strings.Builder
+       var buf strings.Builder
        for _, r := range s {
                // strip #'s and subscript digits
                if r < '₀' || '₀'+10 <= r { // '₀' == U+2080
-                       b.WriteRune(r)
+                       buf.WriteRune(r)
                }
        }
-       if b.Len() < len(s) {
-               return b.String()
+       if buf.Len() < len(s) {
+               return buf.String()
        }
        return s
 }
index 4edaad580e5fce5869181b35495307a508cc3f8e..ad0f22fcec4c8842857da1d2655aef50589d7497 100644 (file)
@@ -17,7 +17,6 @@ package types2_test
 // from source, use golang.org/x/tools/go/loader.
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "cmd/compile/internal/types2"
        "fmt"
@@ -68,7 +67,7 @@ func Unused() { {}; {{ var x int; _ = x }} } // make sure empty block scopes get
 
        // Print the tree of scopes.
        // For determinism, we redact addresses.
-       var buf bytes.Buffer
+       var buf strings.Builder
        pkg.Scope().WriteTo(&buf, 0, true)
        rx := regexp.MustCompile(` 0x[a-fA-F0-9]*`)
        fmt.Println(rx.ReplaceAllString(buf.String(), ""))
@@ -173,7 +172,7 @@ func fib(x int) int {
        // fmt.Println("Types and Values of each expression:")
        // items = nil
        // for expr, tv := range info.Types {
-       //      var buf bytes.Buffer
+       //      var buf strings.Builder
        //      posn := expr.Pos()
        //      tvstr := tv.Type.String()
        //      if tv.Value != nil {
index d88eef640ad675e9aa9da551ebf15dfa8bba1ae3..26e01e9ae5cfc1295bbae8e26e986f08aef77921 100644 (file)
@@ -338,16 +338,16 @@ func typeParamsString(list []*TypeParam) string {
        }
 
        // general case (n > 2)
-       var b strings.Builder
+       var buf strings.Builder
        for i, tname := range list[:n-1] {
                if i > 0 {
-                       b.WriteString(", ")
+                       buf.WriteString(", ")
                }
-               b.WriteString(tname.obj.name)
+               buf.WriteString(tname.obj.name)
        }
-       b.WriteString(", and ")
-       b.WriteString(list[n-1].obj.name)
-       return b.String()
+       buf.WriteString(", and ")
+       buf.WriteString(list[n-1].obj.name)
+       return buf.String()
 }
 
 // isParameterized reports whether typ contains any of the type parameters of tparams.
index 591b467a2e382a8323f32367e915c73153d56ed4..3c897869fc26f38927916487fc7a84e7f926207a 100644 (file)
@@ -233,15 +233,15 @@ var _ T[int]
 
 // Copied from errors.go.
 func stripAnnotations(s string) string {
-       var b strings.Builder
+       var buf strings.Builder
        for _, r := range s {
                // strip #'s and subscript digits
                if r < '₀' || '₀'+10 <= r { // '₀' == U+2080
-                       b.WriteRune(r)
+                       buf.WriteRune(r)
                }
        }
-       if b.Len() < len(s) {
-               return b.String()
+       if buf.Len() < len(s) {
+               return buf.String()
        }
        return s
 }
index 697a73525cd4a88e069c90ed83320f13c93ae338..8588687803169e8e2709e7408f2c1bd4e991ddcd 100644 (file)
@@ -7,7 +7,6 @@
 package types2_test
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "fmt"
        "internal/testenv"
@@ -427,7 +426,7 @@ func TestIssue29029(t *testing.T) {
 
        // printInfo prints the *Func definitions recorded in info, one *Func per line.
        printInfo := func(info *Info) string {
-               var buf bytes.Buffer
+               var buf strings.Builder
                for _, obj := range info.Defs {
                        if fn, ok := obj.(*Func); ok {
                                fmt.Fprintln(&buf, fn)
index 4511110691104b9c4fece6567a38873ff91fe207..890099207c90feb2e46bc9be2ffb80dc1456a84c 100644 (file)
@@ -5,7 +5,6 @@
 package types2_test
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "cmd/compile/internal/types2"
        "errors"
@@ -22,7 +21,7 @@ func checkMono(t *testing.T, body string) error {
        }
        files := []*syntax.File{file}
 
-       var buf bytes.Buffer
+       var buf strings.Builder
        conf := types2.Config{
                Error:    func(err error) { fmt.Fprintln(&buf, err) },
                Importer: defaultImporter(),
index 095875d94b0d9ecec9d318d6456a0420abbd7442..a679a3d95455128d7796abf782e3cfc5e1514b22 100644 (file)
@@ -7,7 +7,6 @@
 package types2
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "fmt"
        "io"
@@ -233,7 +232,7 @@ func (s *Scope) WriteTo(w io.Writer, n int, recurse bool) {
 
 // String returns a string representation of the scope, for debugging.
 func (s *Scope) String() string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        s.WriteTo(&buf, 0, false)
        return buf.String()
 }
index 8e1f290b2b0106f430283e93a5d8f1d3db20da35..196f8abf724f941ca7eb09cc42dddb9d06d01d22 100644 (file)
@@ -4,7 +4,7 @@
 
 package types2
 
-import "bytes"
+import "strings"
 
 // A termlist represents the type set represented by the union
 // t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn.
@@ -25,7 +25,7 @@ func (xl termlist) String() string {
        if len(xl) == 0 {
                return "∅"
        }
-       var buf bytes.Buffer
+       var buf strings.Builder
        for i, x := range xl {
                if i > 0 {
                        buf.WriteString(termSep)
index 328c5029e748e3485ea9cc52670b80a2be273c92..9ac3b6349c51b646e079d29980f2ad6862853efc 100644 (file)
@@ -5,10 +5,10 @@
 package types2
 
 import (
-       "bytes"
        "cmd/compile/internal/syntax"
        "fmt"
        "sort"
+       "strings"
 )
 
 // ----------------------------------------------------------------------------
@@ -71,7 +71,7 @@ func (s *_TypeSet) String() string {
        hasMethods := len(s.methods) > 0
        hasTerms := s.hasTerms()
 
-       var buf bytes.Buffer
+       var buf strings.Builder
        buf.WriteByte('{')
        if s.comparable {
                buf.WriteString("comparable")
index 8dd30a6ed51de8dff08f3d1208a0ed2039ce6d42..2367f3ab9304e3b2f2aaacade773a6009a3e0407 100644 (file)
@@ -5,7 +5,6 @@
 package types_test
 
 import (
-       "bytes"
        "errors"
        "fmt"
        "go/ast"
@@ -896,7 +895,7 @@ func TestImplicitsInfo(t *testing.T) {
 }
 
 func predString(tv TypeAndValue) string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        pred := func(b bool, s string) {
                if b {
                        if buf.Len() > 0 {
index 964f377984ac680595859d92c4673d6d59809a95..4148287601ac47f5a8be0bdff493e3d9451345c7 100644 (file)
@@ -62,7 +62,7 @@ func (err *error_) msg(fset *token.FileSet, qf Qualifier) string {
        if err.empty() {
                return "no error"
        }
-       var buf bytes.Buffer
+       var buf strings.Builder
        for i := range err.desc {
                p := &err.desc[i]
                if i > 0 {
@@ -164,7 +164,7 @@ func sprintf(fset *token.FileSet, qf Qualifier, debug bool, format string, args
                case Type:
                        arg = typeString(a, qf, debug)
                case []Type:
-                       var buf bytes.Buffer
+                       var buf strings.Builder
                        buf.WriteByte('[')
                        for i, x := range a {
                                if i > 0 {
@@ -175,7 +175,7 @@ func sprintf(fset *token.FileSet, qf Qualifier, debug bool, format string, args
                        buf.WriteByte(']')
                        arg = buf.String()
                case []*TypeParam:
-                       var buf bytes.Buffer
+                       var buf strings.Builder
                        buf.WriteByte('[')
                        for i, x := range a {
                                if i > 0 {
@@ -370,15 +370,15 @@ func spanOf(at positioner) posSpan {
 
 // stripAnnotations removes internal (type) annotations from s.
 func stripAnnotations(s string) string {
-       var b strings.Builder
+       var buf strings.Builder
        for _, r := range s {
                // strip #'s and subscript digits
                if r < '₀' || '₀'+10 <= r { // '₀' == U+2080
-                       b.WriteRune(r)
+                       buf.WriteRune(r)
                }
        }
-       if b.Len() < len(s) {
-               return b.String()
+       if buf.Len() < len(s) {
+               return buf.String()
        }
        return s
 }
index 3c1bdb58c3e4112fbec0df393f6b5e32ab85c42a..e752a77881454e0c843ae74bae00da48c4d180be 100644 (file)
@@ -16,7 +16,6 @@ package types_test
 // from source, use golang.org/x/tools/go/loader.
 
 import (
-       "bytes"
        "fmt"
        "go/ast"
        "go/format"
@@ -72,7 +71,7 @@ func Unused() { {}; {{ var x int; _ = x }} } // make sure empty block scopes get
 
        // Print the tree of scopes.
        // For determinism, we redact addresses.
-       var buf bytes.Buffer
+       var buf strings.Builder
        pkg.Scope().WriteTo(&buf, 0, true)
        rx := regexp.MustCompile(` 0x[a-fA-F0-9]*`)
        fmt.Println(rx.ReplaceAllString(buf.String(), ""))
@@ -233,7 +232,7 @@ func fib(x int) int {
        fmt.Println("Types and Values of each expression:")
        items = nil
        for expr, tv := range info.Types {
-               var buf bytes.Buffer
+               var buf strings.Builder
                posn := fset.Position(expr.Pos())
                tvstr := tv.Type.String()
                if tv.Value != nil {
@@ -328,7 +327,7 @@ func mode(tv types.TypeAndValue) string {
 }
 
 func exprString(fset *token.FileSet, expr ast.Expr) string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        format.Node(&buf, fset, expr)
        return buf.String()
 }
index 768efbf73ba5446a37062f00c82b1fe55a290804..f9a855bd1ceba018a9f0dd4b47fc9d915013c313 100644 (file)
@@ -339,16 +339,16 @@ func typeParamsString(list []*TypeParam) string {
        }
 
        // general case (n > 2)
-       var b strings.Builder
+       var buf strings.Builder
        for i, tname := range list[:n-1] {
                if i > 0 {
-                       b.WriteString(", ")
+                       buf.WriteString(", ")
                }
-               b.WriteString(tname.obj.name)
+               buf.WriteString(tname.obj.name)
        }
-       b.WriteString(", and ")
-       b.WriteString(list[n-1].obj.name)
-       return b.String()
+       buf.WriteString(", and ")
+       buf.WriteString(list[n-1].obj.name)
+       return buf.String()
 }
 
 // isParameterized reports whether typ contains any of the type parameters of tparams.
index 281c8bbcad85116f477853c909fec1e23cb69b82..91dae734c17c7b37d705c11980885da4c1eca43e 100644 (file)
@@ -239,15 +239,15 @@ var _ T[int]
 
 // Copied from errors.go.
 func stripAnnotations(s string) string {
-       var b strings.Builder
+       var buf strings.Builder
        for _, r := range s {
                // strip #'s and subscript digits
                if r < '₀' || '₀'+10 <= r { // '₀' == U+2080
-                       b.WriteRune(r)
+                       buf.WriteRune(r)
                }
        }
-       if b.Len() < len(s) {
-               return b.String()
+       if buf.Len() < len(s) {
+               return buf.String()
        }
        return s
 }
index bd98f481778437be635f6de78114198d62fe939b..d46d085ba877e67f4ec2ffee747d1cbb12a348e0 100644 (file)
@@ -7,7 +7,6 @@
 package types_test
 
 import (
-       "bytes"
        "fmt"
        "go/ast"
        "go/importer"
@@ -429,7 +428,7 @@ func TestIssue29029(t *testing.T) {
 
        // printInfo prints the *Func definitions recorded in info, one *Func per line.
        printInfo := func(info *Info) string {
-               var buf bytes.Buffer
+               var buf strings.Builder
                for _, obj := range info.Defs {
                        if fn, ok := obj.(*Func); ok {
                                fmt.Fprintln(&buf, fn)
index 5df3d493f8a4fcb31c09bfd2b5ef73949bded9ae..02daa4fdc6ae450f526ee322f649b24f14b78706 100644 (file)
@@ -5,7 +5,6 @@
 package types_test
 
 import (
-       "bytes"
        "errors"
        "fmt"
        "go/ast"
@@ -25,7 +24,7 @@ func checkMono(t *testing.T, body string) error {
        }
        files := []*ast.File{file}
 
-       var buf bytes.Buffer
+       var buf strings.Builder
        conf := types.Config{
                Error:    func(err error) { fmt.Fprintln(&buf, err) },
                Importer: importer.Default(),
index 010727eb722a7bf81756e9ff17aa8e02a949f07b..fc42ce6524d377d59cb3c169f6d1234d72b0043f 100644 (file)
@@ -7,7 +7,6 @@
 package types
 
 import (
-       "bytes"
        "fmt"
        "go/token"
        "io"
@@ -233,7 +232,7 @@ func (s *Scope) WriteTo(w io.Writer, n int, recurse bool) {
 
 // String returns a string representation of the scope, for debugging.
 func (s *Scope) String() string {
-       var buf bytes.Buffer
+       var buf strings.Builder
        s.WriteTo(&buf, 0, false)
        return buf.String()
 }
index d65c172ba14e8cce2901cc13fbc74d49417e38cc..83a02eefac3944df86bbfb7c7da681bca2e94c76 100644 (file)
@@ -4,7 +4,7 @@
 
 package types
 
-import "bytes"
+import "strings"
 
 // A termlist represents the type set represented by the union
 // t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn.
@@ -25,7 +25,7 @@ func (xl termlist) String() string {
        if len(xl) == 0 {
                return "∅"
        }
-       var buf bytes.Buffer
+       var buf strings.Builder
        for i, x := range xl {
                if i > 0 {
                        buf.WriteString(termSep)
index 08ff191f2e3f404810c0c9ba1c7aafbcb280c4e8..fc4647e8500aa7ca8ba08324de3c2c2ba7b97056 100644 (file)
@@ -5,10 +5,10 @@
 package types
 
 import (
-       "bytes"
        "fmt"
        "go/token"
        "sort"
+       "strings"
 )
 
 // ----------------------------------------------------------------------------
@@ -71,7 +71,7 @@ func (s *_TypeSet) String() string {
        hasMethods := len(s.methods) > 0
        hasTerms := s.hasTerms()
 
-       var buf bytes.Buffer
+       var buf strings.Builder
        buf.WriteByte('{')
        if s.comparable {
                buf.WriteString("comparable")