cmd/internal/pkgpath: use strings.Builder

Since when go1.17 is now used for bootstraping.

Change-Id: I5f763dec1cb152f94ab1c677d3fa26da17abf097
Reviewed-on: https://go-review.googlesource.com/c/go/+/427557
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>
Run-TryBot: hopehook <hopehook@golangcn.org>
Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
hopehook 2022-09-01 21:53:22 +08:00 committed by Matthew Dempsky
parent d31c4bc2de
commit dced3461ee
1 changed files with 10 additions and 13 deletions

View File

@ -87,13 +87,11 @@ func toSymbolV1(ppath string) string {
// toSymbolV2 converts a package path using the second mangling scheme.
func toSymbolV2(ppath string) string {
// This has to build at boostrap time, so it has to build
// with Go 1.4, so we don't use strings.Builder.
bsl := make([]byte, 0, len(ppath))
var bsl strings.Builder
changed := false
for _, c := range ppath {
if ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' {
bsl = append(bsl, byte(c))
bsl.WriteByte(byte(c))
continue
}
var enc string
@ -107,13 +105,13 @@ func toSymbolV2(ppath string) string {
default:
enc = fmt.Sprintf("..U%08x", c)
}
bsl = append(bsl, enc...)
bsl.WriteString(enc)
changed = true
}
if !changed {
return ppath
}
return string(bsl)
return bsl.String()
}
// v3UnderscoreCodes maps from a character that supports an underscore
@ -137,19 +135,18 @@ var v3UnderscoreCodes = map[byte]byte{
// toSymbolV3 converts a package path using the third mangling scheme.
func toSymbolV3(ppath string) string {
// This has to build at boostrap time, so it has to build
// with Go 1.4, so we don't use strings.Builder.
bsl := make([]byte, 0, len(ppath))
var bsl strings.Builder
changed := false
for _, c := range ppath {
if ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') {
bsl = append(bsl, byte(c))
bsl.WriteByte(byte(c))
continue
}
if c < 0x80 {
if u, ok := v3UnderscoreCodes[byte(c)]; ok {
bsl = append(bsl, '_', u)
bsl.WriteByte('_')
bsl.WriteByte(u)
changed = true
continue
}
@ -164,11 +161,11 @@ func toSymbolV3(ppath string) string {
default:
enc = fmt.Sprintf("_U%08x", c)
}
bsl = append(bsl, enc...)
bsl.WriteString(enc)
changed = true
}
if !changed {
return ppath
}
return string(bsl)
return bsl.String()
}