From 53a00e2812891b2a3c91aaa6a12ac89c74ad42ea Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Wed, 26 Jun 2013 10:48:04 -0700 Subject: [PATCH] cmd/go: log compilation errors when scanning directories and packages Before, some packages disappear silently if the package cannot be imported, such as if the import statement is unparseable. Before: % ls src foo issue % go list ./... _/home/r/bug/src/foo % After: % go list ./... src/issue/issue.go:3:5: expected 'STRING', found newline _/home/r/bug/src/foo % R=rsc CC=golang-dev https://golang.org/cl/10568043 --- src/cmd/go/main.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go index a09a75cd3ec..3cee15651a3 100644 --- a/src/cmd/go/main.go +++ b/src/cmd/go/main.go @@ -486,6 +486,9 @@ func matchPackages(pattern string) []string { } _, err = buildContext.ImportDir(path, 0) if err != nil { + if _, noGo := err.(*build.NoGoError); !noGo { + log.Print(err) + } return nil } pkgs = append(pkgs, name) @@ -520,8 +523,10 @@ func matchPackages(pattern string) []string { return nil } _, err = buildContext.ImportDir(path, 0) - if err != nil && strings.Contains(err.Error(), "no Go source files") { - return nil + if err != nil { + if _, noGo := err.(*build.NoGoError); noGo { + return nil + } } pkgs = append(pkgs, name) return nil @@ -588,6 +593,9 @@ func matchPackagesInFS(pattern string) []string { return nil } if _, err = build.ImportDir(path, 0); err != nil { + if _, noGo := err.(*build.NoGoError); !noGo { + log.Print(err) + } return nil } pkgs = append(pkgs, name)