]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: log compilation errors when scanning directories and packages
authorRob Pike <r@golang.org>
Wed, 26 Jun 2013 17:48:04 +0000 (10:48 -0700)
committerRob Pike <r@golang.org>
Wed, 26 Jun 2013 17:48:04 +0000 (10:48 -0700)
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

index a09a75cd3ec8fe25c3910dafae4b73c0d796a0d3..3cee15651a3cccc8c0e6508ee8aff58638478a24 100644 (file)
@@ -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)