compiler: better error message for unknown package name

Fixes golang/go#51237

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/415994
This commit is contained in:
Ian Lance Taylor 2022-07-04 12:20:36 -07:00
parent bd2d0aab4d
commit ccc39d9e97
3 changed files with 9 additions and 5 deletions

View file

@ -1,4 +1,4 @@
6479d5976c5d848ec6f5843041275723a00006b0
a209dca9ec918535977dcab99fd9bb60986ffacd
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View file

@ -191,7 +191,11 @@ Parse::qualified_ident(std::string* pname, Named_object** ppackage)
Named_object* package = this->gogo_->lookup(name, NULL);
if (package == NULL || !package->is_package())
{
go_error_at(this->location(), "expected package");
if (package == NULL)
go_error_at(this->location(), "reference to undefined name %qs",
Gogo::message_name(name).c_str());
else
go_error_at(this->location(), "expected package");
// We expect . IDENTIFIER; skip both.
if (this->advance_token()->is_identifier())
this->advance_token();

View file

@ -11,13 +11,13 @@
package p
type _ struct {
F sync.Mutex // ERROR "undefined: sync|expected package"
F sync.Mutex // ERROR "undefined: sync|expected package|reference to undefined name"
}
type _ struct {
sync.Mutex // ERROR "undefined: sync|expected package"
sync.Mutex // ERROR "undefined: sync|expected package|reference to undefined name"
}
type _ interface {
sync.Mutex // ERROR "undefined: sync|expected package|expected signature or type name"
sync.Mutex // ERROR "undefined: sync|expected package|expected signature or type name|reference to undefined name"
}