package types2
import (
- "bytes"
"cmd/compile/internal/syntax"
"fmt"
"go/constant"
// 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
// 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())
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 {
s = pkg.Path()
}
if s != "" {
- buf.WriteString(s)
- buf.WriteByte('.')
+ s += "."
}
+ return s
}
// ObjectString returns the string form of obj.
buf.WriteByte(')')
buf.WriteByte('.')
} else if f.pkg != nil {
- writePackage(buf, f.pkg, qf)
+ buf.WriteString(packagePrefix(f.pkg, qf))
}
}
buf.WriteString(f.name)
}
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)
}
package types
import (
- "bytes"
"fmt"
"go/ast"
"go/constant"
// 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
// 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())
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 {
s = pkg.Path()
}
if s != "" {
- buf.WriteString(s)
- buf.WriteByte('.')
+ s += "."
}
+ return s
}
// ObjectString returns the string form of obj.
buf.WriteByte(')')
buf.WriteByte('.')
} else if f.pkg != nil {
- writePackage(buf, f.pkg, qf)
+ buf.WriteString(packagePrefix(f.pkg, qf))
}
}
buf.WriteString(f.name)
}
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)
}