mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: add Type.Elem
This removes almost all direct access to Type’s heavily overloaded Type field. Mostly generated by eg, manually checked. Significant manual changes: * reflect.go's typPkg used Type indiscriminately. Use it only for specific etypes. * gen.go's visitComponents contained a usage of Type with structs. Using Type for structs no longer occurs, and the Fatal contained therein has not triggered, so it has been axed. * Scary code in cgen.go's cgen_slice is now explicitly scary. Passes toolstash -cmp. Change-Id: I2dbfb3c959da7ae239f964d83898c204affcabc6 Reviewed-on: https://go-review.googlesource.com/21331 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
76e72691a0
commit
8640b51df8
23 changed files with 226 additions and 213 deletions
|
|
@ -512,7 +512,7 @@ func (p *exporter) typ(t *Type) {
|
|||
} else {
|
||||
p.tag(sliceTag)
|
||||
}
|
||||
p.typ(t.Type)
|
||||
p.typ(t.Elem())
|
||||
|
||||
case TDDDFIELD:
|
||||
// see p.param use of TDDDFIELD
|
||||
|
|
@ -525,7 +525,7 @@ func (p *exporter) typ(t *Type) {
|
|||
|
||||
case TPTR32, TPTR64: // could use Tptr but these are constants
|
||||
p.tag(pointerTag)
|
||||
p.typ(t.Type)
|
||||
p.typ(t.Elem())
|
||||
|
||||
case TFUNC:
|
||||
p.tag(signatureTag)
|
||||
|
|
@ -548,7 +548,7 @@ func (p *exporter) typ(t *Type) {
|
|||
case TCHAN:
|
||||
p.tag(chanTag)
|
||||
p.int(int(t.Chan))
|
||||
p.typ(t.Type)
|
||||
p.typ(t.Elem())
|
||||
|
||||
default:
|
||||
Fatalf("exporter: unexpected type: %s (Etype = %d)", Tconv(t, 0), t.Etype)
|
||||
|
|
@ -636,7 +636,7 @@ func (p *exporter) fieldName(t *Field) {
|
|||
func basetypeName(t *Type) string {
|
||||
s := t.Sym
|
||||
if s == nil && Isptr[t.Etype] {
|
||||
s = t.Type.Sym // deref
|
||||
s = t.Elem().Sym // deref
|
||||
}
|
||||
if s != nil {
|
||||
return s.Name
|
||||
|
|
@ -666,7 +666,7 @@ func (p *exporter) param(q *Field, n int, numbered bool) {
|
|||
t := q.Type
|
||||
if q.Isddd {
|
||||
// create a fake type to encode ... just for the p.typ call
|
||||
t = typWrapper(TDDDFIELD, t.Type)
|
||||
t = typWrapper(TDDDFIELD, t.Elem())
|
||||
}
|
||||
p.typ(t)
|
||||
if n > 0 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue