From b9b3bed16ed609a680fab3bdd19d12ada7e0ae98 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 2 Oct 2013 16:53:34 -0700 Subject: [PATCH] go.tools/go/types: fix build (gc export format changed) Revision f280b8a485fd of the std library changed the gc export format: anonymous fields may be qualified with a package. R=rsc TBR=rsc CC=golang-dev https://golang.org/cl/14312043 --- go/types/gcimporter.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/go/types/gcimporter.go b/go/types/gcimporter.go index e8766e84..4648f430 100644 --- a/go/types/gcimporter.go +++ b/go/types/gcimporter.go @@ -349,13 +349,18 @@ func (p *gcParser) parseDotIdent() string { return ident } -// QualifiedName = "@" PackageId "." dotIdentifier . +// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . // func (p *gcParser) parseQualifiedName() (id, name string) { p.expect('@') id = p.parsePackageId() p.expect('.') - name = p.parseDotIdent() + // Per rev f280b8a485fd (10/2/2013), qualified names may be used for anoymous fields. + if p.tok == '?' { + p.next() + } else { + name = p.parseDotIdent() + } return } @@ -479,7 +484,7 @@ func (p *gcParser) parseField() (*Var, string) { pkg = nil name = typ.name case *Named: - pkg = typ.obj.pkg + pkg = typ.obj.pkg // TODO(gri) is this still correct? name = typ.obj.name default: p.errorf("anonymous field expected")