mirror of
https://github.com/golang/go.git
synced 2025-11-08 04:31:01 +00:00
cmd/compile: update documentation for ONAME node with nil Func
After CL 436435 chain, the only case left where we create an ONAME node with nil Func is interface method from imported package. Change-Id: I9d9144916d01712283f2b116973f88965715fea3 Reviewed-on: https://go-review.googlesource.com/c/go/+/468816 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
parent
454198ab94
commit
ab86d29bb5
3 changed files with 5 additions and 7 deletions
|
|
@ -563,8 +563,7 @@ func (n *SelectorExpr) FuncName() *Name {
|
||||||
if n.Selection.Nname != nil {
|
if n.Selection.Nname != nil {
|
||||||
// TODO(austin): Nname is nil for interface method
|
// TODO(austin): Nname is nil for interface method
|
||||||
// expressions (I.M), so we can't attach a Func to
|
// expressions (I.M), so we can't attach a Func to
|
||||||
// those here. reflectdata.methodWrapper generates the
|
// those here.
|
||||||
// Func.
|
|
||||||
fn.Func = n.Selection.Nname.(*Name).Func
|
fn.Func = n.Selection.Nname.(*Name).Func
|
||||||
}
|
}
|
||||||
return fn
|
return fn
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ type Name struct {
|
||||||
flags bitset16
|
flags bitset16
|
||||||
DictIndex uint16 // index of the dictionary entry describing the type of this variable declaration plus 1
|
DictIndex uint16 // index of the dictionary entry describing the type of this variable declaration plus 1
|
||||||
sym *types.Sym
|
sym *types.Sym
|
||||||
Func *Func // TODO(austin): nil for I.M, eqFor, hashfor, and hashmem
|
Func *Func // TODO(austin): nil for I.M
|
||||||
Offset_ int64
|
Offset_ int64
|
||||||
val constant.Value
|
val constant.Value
|
||||||
Opt interface{} // for use by escape analysis
|
Opt interface{} // for use by escape analysis
|
||||||
|
|
|
||||||
|
|
@ -7950,10 +7950,9 @@ func clobberBase(n ir.Node) ir.Node {
|
||||||
// callTargetLSym returns the correct LSym to call 'callee' using its ABI.
|
// callTargetLSym returns the correct LSym to call 'callee' using its ABI.
|
||||||
func callTargetLSym(callee *ir.Name) *obj.LSym {
|
func callTargetLSym(callee *ir.Name) *obj.LSym {
|
||||||
if callee.Func == nil {
|
if callee.Func == nil {
|
||||||
// TODO(austin): This happens in a few cases of
|
// TODO(austin): This happens in case of interface method I.M from imported package.
|
||||||
// compiler-generated functions. These are all
|
// It's ABIInternal, and would be better if callee.Func was never nil and we didn't
|
||||||
// ABIInternal. It would be better if callee.Func was
|
// need this case.
|
||||||
// never nil and we didn't need this case.
|
|
||||||
return callee.Linksym()
|
return callee.Linksym()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue