From af65c006e6875a08362b4e826e300b14702c7fb3 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Wed, 2 Jun 2021 13:14:13 +0200 Subject: [PATCH] loader: fix testing a main package This was broken because multiple packages in the program were named 'main', even one that was imported (by the generated main package). This fixes tests for main packages. --- loader/loader.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/loader/loader.go b/loader/loader.go index 27d5ea76..eed57e6d 100644 --- a/loader/loader.go +++ b/loader/loader.go @@ -343,12 +343,11 @@ func (p *Package) Check() error { checker.Importer = p packageName := p.ImportPath - if p.Name == "main" { - // The main package normally has a different import path, such as - // "command-line-arguments" or "./testdata/cgo". Therefore, use the name - // "main" in such a case: this package isn't imported from anywhere. - // This is safe as it isn't possible to import a package with the name - // "main". + if p == p.program.MainPkg() { + if p.Name != "main" { + // Sanity check. Should not ever trigger. + panic("expected main package to have name 'main'") + } packageName = "main" } typesPkg, err := checker.Check(packageName, p.program.fset, p.Files, &p.info)