When the Go frontend imported a reference to an indirectly imported type aliases, it was looking for the " = " before the optional package name that appears for an indirect reference, but the exporter was putting it after. This patch fixes that. The test case is https://golang.org/cl/70290, and will be brought into the GCC testsuite in due course. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 253664) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -af46ad16dc34773877068393d331ac8ae34b2219 +44132970e4b6c1186036bf8eda8982fb6e905d6f The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: gcc/go/gofrontend/import.cc =================================================================== --- gcc/go/gofrontend/import.cc (revision 253311) +++ gcc/go/gofrontend/import.cc (working copy) @@ -756,13 +756,6 @@ Import::read_type() this->require_c_string(" "); - bool is_alias = false; - if (this->match_c_string("= ")) - { - stream->advance(2); - is_alias = true; - } - // The package name may follow. This is the name of the package in // the package clause of that package. The type name will include // the pkgpath, which may be different. @@ -775,6 +768,13 @@ Import::read_type() this->require_c_string(" "); } + bool is_alias = false; + if (this->match_c_string("= ")) + { + stream->advance(2); + is_alias = true; + } + // Declare the type in the appropriate package. If we haven't seen // it before, mark it as invisible. We declare it before we read // the actual definition of the type, since the definition may refer