From 7bda30096dc1889bf0a2260c7523b5a3da5f6996 Mon Sep 17 00:00:00 2001 From: Heschi Kreinick Date: Thu, 2 Jan 2020 16:04:45 -0500 Subject: [PATCH] internal/imports: actually skip things in scan An important part of letting the callback choose what to load is...not loading the stuff it doesn't want. Change-Id: I4048d7aed756b6ebc26fb6f8e384f44c64281f90 Reviewed-on: https://go-review.googlesource.com/c/tools/+/213129 Run-TryBot: Heschi Kreinick TryBot-Result: Gobot Gobot Reviewed-by: Rebecca Stambler --- internal/imports/fix.go | 22 ++++++++++++---------- internal/imports/mod.go | 26 +++++++++++++------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/internal/imports/fix.go b/internal/imports/fix.go index 3d1f33ade7..dffee291bd 100644 --- a/internal/imports/fix.go +++ b/internal/imports/fix.go @@ -1175,18 +1175,20 @@ func (r *gopathResolver) scan(ctx context.Context, callback *scanCallback) error p.relevance = MaxRelevance } - if callback.dirFound(p) { - var err error - p.packageName, err = r.cache.CachePackageName(info) - if err != nil { - continue - } + if !callback.dirFound(p) { + continue + } + var err error + p.packageName, err = r.cache.CachePackageName(info) + if err != nil { + continue } - if callback.packageNameLoaded(p) { - if _, exports, err := r.loadExports(ctx, p); err == nil { - callback.exportsLoaded(p, exports) - } + if !callback.packageNameLoaded(p) { + continue + } + if _, exports, err := r.loadExports(ctx, p); err == nil { + callback.exportsLoaded(p, exports) } } return nil diff --git a/internal/imports/mod.go b/internal/imports/mod.go index a7bcdfe000..2ef55b9314 100644 --- a/internal/imports/mod.go +++ b/internal/imports/mod.go @@ -378,27 +378,27 @@ func (r *ModuleResolver) scan(ctx context.Context, callback *scanCallback) error if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil { return } - pkg, err := r.canonicalize(info) if err != nil { return } - if callback.dirFound(pkg) { - var err error - pkg.packageName, err = r.cachePackageName(info) - if err != nil { - return - } + if !callback.dirFound(pkg) { + return + } + pkg.packageName, err = r.cachePackageName(info) + if err != nil { + return } - if callback.packageNameLoaded(pkg) { - _, exports, err := r.loadExports(ctx, pkg) - if err != nil { - return - } - callback.exportsLoaded(pkg, exports) + if !callback.packageNameLoaded(pkg) { + return } + _, exports, err := r.loadExports(ctx, pkg) + if err != nil { + return + } + callback.exportsLoaded(pkg, exports) } // Everything we already had is in the cache. Process it now, in hopes we