Commit 1da1e432 authored by Robert Griesemer's avatar Robert Griesemer

go/internal/gccgoimporter: accept missed portions of v2 format

Fixes #18301.

Change-Id: I990c105904ab62f2225d671bbc10209ec51b12e2
Reviewed-on: https://go-review.googlesource.com/34371
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Reviewed-by: default avatarThan McIntosh <thanm@google.com>
parent afb35081
......@@ -96,8 +96,11 @@ var importerTests = [...]importerTest{
{pkgpath: "complexnums", name: "PN", want: "const PN untyped complex", wantval: "(1 + -1i)"},
{pkgpath: "complexnums", name: "PP", want: "const PP untyped complex", wantval: "(1 + 1i)"},
{pkgpath: "conversions", name: "Bits", want: "const Bits Units", wantval: `"bits"`},
// TODO: enable this entry once bug has been tracked down
//{pkgpath: "imports", wantinits: []string{"imports..import", "fmt..import", "math..import"}},
{pkgpath: "time", name: "Duration", want: "type Duration int64"},
{pkgpath: "time", name: "Nanosecond", want: "const Nanosecond Duration", wantval: "1"},
{pkgpath: "unicode", name: "IsUpper", want: "func IsUpper(r rune) bool"},
{pkgpath: "unicode", name: "MaxRune", want: "const MaxRune untyped rune", wantval: "1114111"},
{pkgpath: "imports", wantinits: []string{"imports..import", "fmt..import", "math..import"}},
}
func TestGoxImporter(t *testing.T) {
......
......@@ -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":
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment