mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: fix parsing of inlined interface types with unexported methods
Fixes #14164. Change-Id: Ib1d1d29674c99cf88e0ae12724823a31f5dbb95c Reviewed-on: https://go-review.googlesource.com/19087 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
af15beeab5
commit
d37d76af43
4 changed files with 84 additions and 0 deletions
|
|
@ -2501,6 +2501,24 @@ func (p *parser) interfacedcl() *Node {
|
|||
ifacedcl(meth)
|
||||
return meth
|
||||
|
||||
case '@', '?':
|
||||
// newname indcl
|
||||
// We arrive here when parsing an interface type declared inside
|
||||
// an exported and inlineable function and the interface declares
|
||||
// unexported methods (which are then package-qualified).
|
||||
//
|
||||
// Since the compiler always flattens embedded interfaces, we
|
||||
// will never see an embedded package-qualified interface in export
|
||||
// data; i.e., when we reach here we know it must be a method.
|
||||
//
|
||||
// See also issue 14164.
|
||||
mname := newname(p.sym())
|
||||
sig := p.indcl()
|
||||
|
||||
meth := Nod(ODCLFIELD, mname, sig)
|
||||
ifacedcl(meth)
|
||||
return meth
|
||||
|
||||
case '(':
|
||||
p.next()
|
||||
pname := p.packname(nil)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue