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 <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/internal/imports/fix.go b/internal/imports/fix.go
index 3d1f33a..dffee29 100644
--- a/internal/imports/fix.go
+++ b/internal/imports/fix.go
@@ -1175,18 +1175,20 @@
 			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 a7bcdfe..2ef55b9 100644
--- a/internal/imports/mod.go
+++ b/internal/imports/mod.go
@@ -378,27 +378,27 @@
 		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