if t.Sym != nil && t.Etype != TINTER {
for _, m := range t.Methods().Slice() {
if types.IsExported(m.Sym.Name) {
- p.markObject(asNode(m.Type.Nname()))
+ p.markObject(asNode(m.Nname))
}
}
}
}
f := types.NewField(lineno, msym, t)
- f.Type.SetNname(asTypesNode(n.Func.Nname))
+ f.Nname = asTypesNode(n.Func.Nname)
f.SetNointerface(nointerface)
mt.Methods().Append(f)
for i := m.Type.NumResults(); i > 0; i-- {
ks = append(ks, e.heapHole())
}
- paramK := e.tagHole(ks, asNode(m.Type.Nname()), m.Type.Recv())
+ paramK := e.tagHole(ks, asNode(m.Nname), m.Type.Recv())
e.expr(e.teeHole(paramK, closureK), n.Left)
fn = v.Func.Closure.Func.Nname
}
case OCALLMETH:
- fn = asNode(call.Left.Type.FuncType().Nname)
+ fn = call.Left.MethodName()
}
fntype := call.Left.Type
func (w *exportWriter) methExt(m *types.Field) {
w.bool(m.Nointerface())
- w.funcExt(asNode(m.Type.Nname()))
+ w.funcExt(asNode(m.Nname))
}
func (w *exportWriter) linkname(s *types.Sym) {
// methodSym already marked m.Sym as a function.
f := types.NewField(mpos, msym, mtyp)
- f.Type.SetNname(asTypesNode(m))
+ f.Nname = asTypesNode(m)
ms[i] = f
}
t.Methods().Set(ms)
if r.bool() {
m.SetNointerface(true)
}
- r.funcExt(asNode(m.Type.Nname()))
+ r.funcExt(asNode(m.Nname))
}
func (r *importReader) linkname(s *types.Sym) {
switch n.Op {
case ONAME:
if n.isMethodExpression() {
- d.foundDep(asNode(n.Type.FuncType().Nname))
+ d.foundDep(n.MethodName())
return false
}
d.inspectList(n.Func.Closure.Nbody)
case ODOTMETH, OCALLPART:
- d.foundDep(asNode(n.Type.FuncType().Nname))
+ d.foundDep(n.MethodName())
}
return true
switch n.Class() {
case PFUNC:
if n.isMethodExpression() {
- inlFlood(asNode(n.Type.Nname()))
+ inlFlood(n.MethodName())
} else {
inlFlood(n)
exportsym(n)
}
case ODOTMETH:
- fn := asNode(n.Type.Nname())
+ fn := n.MethodName()
inlFlood(fn)
case OCALLPART:
switch {
case fn.Op == ONAME && fn.Class() == PFUNC:
if fn.isMethodExpression() {
- n := asNode(fn.Type.Nname())
+ n := fn.MethodName()
// Check that receiver type matches fn.Left.
// TODO(mdempsky): Handle implicit dereference
// of pointer receiver argument?
case ONAME:
if n.Class() == PFUNC {
if n.isMethodExpression() {
- n = asNode(n.Type.Nname())
+ n = n.MethodName()
}
if n != nil && n.Name.Defn != nil {
if m := v.visit(n.Name.Defn); m < min {
}
}
case ODOTMETH:
- fn := asNode(n.Type.Nname())
+ fn := n.MethodName()
if fn != nil && fn.Op == ONAME && fn.Class() == PFUNC && fn.Name.Defn != nil {
if m := v.visit(fn.Name.Defn); m < min {
min = m
}
}
case OCALLPART:
- fn := asNode(callpartMethod(n).Type.Nname())
+ fn := asNode(callpartMethod(n).Nname)
if fn != nil && fn.Op == ONAME && fn.Class() == PFUNC && fn.Name.Defn != nil {
if m := v.visit(fn.Name.Defn); m < min {
min = m
// referenced by expression n, which must be a method selector,
// method expression, or method value.
func (n *Node) MethodName() *Node {
- return asNode(n.MethodFunc().Type.Nname())
+ return asNode(n.MethodFunc().Nname)
}
// MethodFunc is like MethodName, but returns the types.Field instead.