diff options
Diffstat (limited to 'src/go/internal/gccgoimporter/parser.go')
-rw-r--r-- | src/go/internal/gccgoimporter/parser.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/go/internal/gccgoimporter/parser.go b/src/go/internal/gccgoimporter/parser.go index 7312cb4879..3b97c96d43 100644 --- a/src/go/internal/gccgoimporter/parser.go +++ b/src/go/internal/gccgoimporter/parser.go @@ -711,7 +711,10 @@ func (p *parser) parseType(pkg *types.Package) (t types.Type) { func (p *parser) parsePackageInit() PackageInit { name := p.parseUnquotedString() initfunc := p.parseUnquotedString() - priority := int(p.parseInt()) + priority := -1 + if p.version == "v1" { + priority = int(p.parseInt()) + } return PackageInit{Name: name, InitFunc: initfunc, Priority: priority} } @@ -766,6 +769,15 @@ func (p *parser) parseInitDataDirective() { } p.expect(';') + case "init_graph": + p.next() + // The graph data is thrown away for now. + for p.tok != ';' && p.tok != scanner.EOF { + p.parseInt() + p.parseInt() + } + p.expect(';') + case "checksum": // Don't let the scanner try to parse the checksum as a number. defer func(mode uint) { @@ -797,7 +809,7 @@ func (p *parser) parseDirective() { } switch p.lit { - case "v1", "v2", "priority", "init", "checksum": + case "v1", "v2", "priority", "init", "init_graph", "checksum": p.parseInitDataDirective() case "package": |