]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: only avoid escaping package paths for "go.shape"
authorDan Scales <danscales@google.com>
Thu, 16 Dec 2021 21:24:40 +0000 (13:24 -0800)
committerDan Scales <danscales@google.com>
Thu, 16 Dec 2021 22:41:31 +0000 (22:41 +0000)
We have code that intends to avoid escaping the package path for
built-in packages. But it is hard to determine which packages are
built-in from a general rule, and we really only want to avoid escaping
for the "go.shape" package (since that gives ugly shape type names). So,
fix the code to only avoid escaping the package path specifically for
the "go.shape" package.

Fixes #50200

Change-Id: Ibaedd7690b99a173007c608c5dfa783ef82b326d
Reviewed-on: https://go-review.googlesource.com/c/go/+/372934
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/types/pkg.go

index 0b822a450c9893e669af8d7ed8de93fe99f1c021..b159eb5eeb4ca4595c636e370a8d107b6d6a854a 100644 (file)
@@ -9,7 +9,6 @@ import (
        "cmd/internal/objabi"
        "fmt"
        "sort"
-       "strings"
        "sync"
 )
 
@@ -49,9 +48,11 @@ func NewPkg(path, name string) *Pkg {
        p := new(Pkg)
        p.Path = path
        p.Name = name
-       if strings.HasPrefix(path, "go.") && !strings.Contains(path, "/") {
-               // Special compiler-internal packages don't need to be escaped.
-               // This particularly helps with the go.shape package.
+       if path == "go.shape" {
+               // Don't escape "go.shape", since it's not needed (it's a builtin
+               // package), and we don't want escape codes showing up in shape type
+               // names, which also appear in names of function/method
+               // instantiations.
                p.Prefix = path
        } else {
                p.Prefix = objabi.PathToPrefix(path)