go/analysis/passes/tests: don't warn about missing method for each type

Only warn if the method is missing for all types.

Fixes golang/go#30971

Change-Id: I94169ad3266f68ca20378a8dc5538aed2541a773
Reviewed-on: https://go-review.googlesource.com/c/tools/+/168803
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/go/analysis/passes/tests/testdata/src/b_x_test/b_test.go b/go/analysis/passes/tests/testdata/src/b_x_test/b_test.go
index 6779195..2fac000 100644
--- a/go/analysis/passes/tests/testdata/src/b_x_test/b_test.go
+++ b/go/analysis/passes/tests/testdata/src/b_x_test/b_test.go
@@ -1,10 +1,14 @@
 package b_x_test
 
-import "b"
+import (
+	"a"
+	"b"
+)
 
 func ExampleFoo_F() {
 	var x b.Foo
 	x.F()
+	a.Foo()
 }
 
 func ExampleFoo_G() { // want "ExampleFoo_G refers to unknown field or method: Foo.G"
diff --git a/go/analysis/passes/tests/tests.go b/go/analysis/passes/tests/tests.go
index 6b1e9f8..9202b35 100644
--- a/go/analysis/passes/tests/tests.go
+++ b/go/analysis/passes/tests/tests.go
@@ -153,9 +153,9 @@
 			if obj, _, _ := types.LookupFieldOrMethod(obj.Type(), true, obj.Pkg(), mmbr); obj != nil {
 				found = true
 			}
-			if !found {
-				pass.Reportf(fn.Pos(), "%s refers to unknown field or method: %s.%s", fnName, ident, mmbr)
-			}
+		}
+		if !found {
+			pass.Reportf(fn.Pos(), "%s refers to unknown field or method: %s.%s", fnName, ident, mmbr)
 		}
 	}
 	if len(elems) == 3 && !isExampleSuffix(elems[2]) {