It's possible to use a type which implements fmt.Formatter without importing fmt directly, if the type is imported from another package such as math/big. On top of that, it's possible to use printf-like functions without importing fmt directly, such as using testing.T.Logf. These two scenarios combined can lead to the printf check not finding the fmt.Formatter type, since it's not a direct dependency of the root package. fmt must still be in the import graph somewhere, so we could search for it via types.Package.Imports. However, at that point it's simpler to just look for the Format method manually via go/types. Fixes #30399. Change-Id: Id78454bb6a51b3c5e1bcb1984a7fbfb4a29a5be0 Reviewed-on: https://go-review.googlesource.com/c/163817 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com> |
||
---|---|---|
.. | ||
asmdecl | ||
assign | ||
atomic | ||
atomicalign | ||
bools | ||
buildssa | ||
buildtag | ||
cgocall | ||
composite | ||
copylock | ||
ctrlflow | ||
deepequalerrors | ||
findcall | ||
httpresponse | ||
inspect | ||
internal/analysisutil | ||
loopclosure | ||
lostcancel | ||
nilfunc | ||
nilness | ||
pkgfact | ||
printf | ||
shadow | ||
shift | ||
stdmethods | ||
structtag | ||
tests | ||
unmarshal | ||
unreachable | ||
unsafeptr | ||
unusedresult | ||
README |
README
This directory does not contain a Go package, but acts as a container for various analyses that implement the golang.org/x/tools/go/analysis API and may be imported into an analysis tool. By convention, each package foo provides the analysis, and each command foo/cmd/foo provides a standalone driver.