From: Robert Griesemer Date: Thu, 17 Nov 2022 22:25:50 +0000 (-0800) Subject: go/types, types2: replace (internal) writePackage with packagePrefix X-Git-Tag: go1.20rc1~174 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a8f9d3f0afa793b5496a5881c74fcd218c130dbc;p=gostls13.git go/types, types2: replace (internal) writePackage with packagePrefix This makes it easier to use the package string prefix in some cases (cleanup). Change-Id: I0ae74bf8770999110e7d6e49eac4e42962e78596 Reviewed-on: https://go-review.googlesource.com/c/go/+/451795 Auto-Submit: Robert Griesemer Run-TryBot: Robert Griesemer Reviewed-by: Robert Griesemer Reviewed-by: David Chase TryBot-Result: Gopher Robot --- diff --git a/src/cmd/compile/internal/types2/decl.go b/src/cmd/compile/internal/types2/decl.go index 8985aa9b61..530a8f5b69 100644 --- a/src/cmd/compile/internal/types2/decl.go +++ b/src/cmd/compile/internal/types2/decl.go @@ -5,7 +5,6 @@ package types2 import ( - "bytes" "cmd/compile/internal/syntax" "fmt" "go/constant" @@ -311,10 +310,7 @@ func (check *Checker) cycleError(cycle []Object) { // may refer to imported types. See issue #50788. // TODO(gri) This functionality is used elsewhere. Factor it out. name := func(obj Object) string { - var buf bytes.Buffer - writePackage(&buf, obj.Pkg(), check.qualifier) - buf.WriteString(obj.Name()) - return buf.String() + return packagePrefix(obj.Pkg(), check.qualifier) + obj.Name() } // TODO(gri) Should we start with the last (rather than the first) object in the cycle diff --git a/src/cmd/compile/internal/types2/object.go b/src/cmd/compile/internal/types2/object.go index f373561809..5c0ea8ca16 100644 --- a/src/cmd/compile/internal/types2/object.go +++ b/src/cmd/compile/internal/types2/object.go @@ -512,7 +512,7 @@ func writeObject(buf *bytes.Buffer, obj Object, qf Qualifier) { // For package-level objects, qualify the name. if obj.Pkg() != nil && obj.Pkg().scope.Lookup(obj.Name()) == obj { - writePackage(buf, obj.Pkg(), qf) + buf.WriteString(packagePrefix(obj.Pkg(), qf)) } buf.WriteString(obj.Name()) @@ -553,9 +553,9 @@ func writeObject(buf *bytes.Buffer, obj Object, qf Qualifier) { WriteType(buf, typ, qf) } -func writePackage(buf *bytes.Buffer, pkg *Package, qf Qualifier) { +func packagePrefix(pkg *Package, qf Qualifier) string { if pkg == nil { - return + return "" } var s string if qf != nil { @@ -564,9 +564,9 @@ func writePackage(buf *bytes.Buffer, pkg *Package, qf Qualifier) { s = pkg.Path() } if s != "" { - buf.WriteString(s) - buf.WriteByte('.') + s += "." } + return s } // ObjectString returns the string form of obj. @@ -604,7 +604,7 @@ func writeFuncName(buf *bytes.Buffer, f *Func, qf Qualifier) { buf.WriteByte(')') buf.WriteByte('.') } else if f.pkg != nil { - writePackage(buf, f.pkg, qf) + buf.WriteString(packagePrefix(f.pkg, qf)) } } buf.WriteString(f.name) diff --git a/src/cmd/compile/internal/types2/typestring.go b/src/cmd/compile/internal/types2/typestring.go index 19f253c41e..94b8ba4ac6 100644 --- a/src/cmd/compile/internal/types2/typestring.go +++ b/src/cmd/compile/internal/types2/typestring.go @@ -388,9 +388,7 @@ func (w *typeWriter) tParamList(list []*TypeParam) { } func (w *typeWriter) typeName(obj *TypeName) { - if obj.pkg != nil { - writePackage(w.buf, obj.pkg, w.qf) - } + w.string(packagePrefix(obj.pkg, w.qf)) w.string(obj.name) } diff --git a/src/go/types/decl.go b/src/go/types/decl.go index 5f86cd675c..adc485c400 100644 --- a/src/go/types/decl.go +++ b/src/go/types/decl.go @@ -5,7 +5,6 @@ package types import ( - "bytes" "fmt" "go/ast" "go/constant" @@ -309,10 +308,7 @@ func (check *Checker) cycleError(cycle []Object) { // may refer to imported types. See issue #50788. // TODO(gri) Thus functionality is used elsewhere. Factor it out. name := func(obj Object) string { - var buf bytes.Buffer - writePackage(&buf, obj.Pkg(), check.qualifier) - buf.WriteString(obj.Name()) - return buf.String() + return packagePrefix(obj.Pkg(), check.qualifier) + obj.Name() } // TODO(gri) Should we start with the last (rather than the first) object in the cycle diff --git a/src/go/types/object.go b/src/go/types/object.go index f203b0113d..6e63948680 100644 --- a/src/go/types/object.go +++ b/src/go/types/object.go @@ -469,7 +469,7 @@ func writeObject(buf *bytes.Buffer, obj Object, qf Qualifier) { // For package-level objects, qualify the name. if obj.Pkg() != nil && obj.Pkg().scope.Lookup(obj.Name()) == obj { - writePackage(buf, obj.Pkg(), qf) + buf.WriteString(packagePrefix(obj.Pkg(), qf)) } buf.WriteString(obj.Name()) @@ -510,9 +510,9 @@ func writeObject(buf *bytes.Buffer, obj Object, qf Qualifier) { WriteType(buf, typ, qf) } -func writePackage(buf *bytes.Buffer, pkg *Package, qf Qualifier) { +func packagePrefix(pkg *Package, qf Qualifier) string { if pkg == nil { - return + return "" } var s string if qf != nil { @@ -521,9 +521,9 @@ func writePackage(buf *bytes.Buffer, pkg *Package, qf Qualifier) { s = pkg.Path() } if s != "" { - buf.WriteString(s) - buf.WriteByte('.') + s += "." } + return s } // ObjectString returns the string form of obj. @@ -561,7 +561,7 @@ func writeFuncName(buf *bytes.Buffer, f *Func, qf Qualifier) { buf.WriteByte(')') buf.WriteByte('.') } else if f.pkg != nil { - writePackage(buf, f.pkg, qf) + buf.WriteString(packagePrefix(f.pkg, qf)) } } buf.WriteString(f.name) diff --git a/src/go/types/typestring.go b/src/go/types/typestring.go index 8fdafc2d4a..bf541fc263 100644 --- a/src/go/types/typestring.go +++ b/src/go/types/typestring.go @@ -389,9 +389,7 @@ func (w *typeWriter) tParamList(list []*TypeParam) { } func (w *typeWriter) typeName(obj *TypeName) { - if obj.pkg != nil { - writePackage(w.buf, obj.pkg, w.qf) - } + w.string(packagePrefix(obj.pkg, w.qf)) w.string(obj.name) }