type Field struct {
Pos src.XPos
Sym *types.Sym
- Ntype Ntype
Type *types.Type
Embedded bool
IsDDD bool
}
func NewField(pos src.XPos, sym *types.Sym, typ *types.Type) *Field {
- return &Field{Pos: pos, Sym: sym, Ntype: nil, Type: typ}
+ return &Field{Pos: pos, Sym: sym, Type: typ}
}
func (f *Field) String() string {
- var typ string
- if f.Type != nil {
- typ = fmt.Sprint(f.Type)
- } else {
- typ = fmt.Sprint(f.Ntype)
- }
if f.Sym != nil {
- return fmt.Sprintf("%v %v", f.Sym, typ)
+ return fmt.Sprintf("%v %v", f.Sym, f.Type)
}
- return typ
+ return fmt.Sprint(f.Type)
}
// TODO(mdempsky): Make Field a Node again so these can be generated?
if f.Decl != nil && do(f.Decl) {
return true
}
- if f.Ntype != nil && do(f.Ntype) {
- return true
- }
return false
}
func editField(f *Field, edit func(Node) Node) {
if f.Decl != nil {
f.Decl = edit(f.Decl).(*Name)
}
- if f.Ntype != nil {
- f.Ntype = edit(f.Ntype).(Ntype)
- }
}
func copyFields(list []*Field) []*Field {
// misc can be provided to handle specialized typechecking.
func tcField(n *ir.Field, misc func(*types.Field, *ir.Field)) *types.Field {
base.Pos = n.Pos
- if n.Ntype != nil {
- n.Type = typecheckNtype(n.Ntype).Type()
- n.Ntype = nil
- }
f := types.NewField(n.Pos, n.Sym, n.Type)
if misc != nil {
misc(f, n)