Historically, vet had always been unhappy about encoding/xml itself: method MarshalXML(e *xml.Encoder, start xml.StartElement) error should have signature MarshalXML(*xml.Encoder, xml.StartElement) error This dates back to the time when vet couldn't depend on type information. It compared the type expressions directly as strings, which was a problem when the code was in encoding/xml itself. There, the function parameters are *Encoder and StartElement, not *xml.Encoder and xml.StartElement. However, vet has been depending on type information for a while, so this restriction no longer makes sense. The analyzer almost got it right, but the only stopgap was a piece of the old code that tried to compare type expression strings. Remove it; typeString already deals with these edge cases for us. To ensure vet remains happy with encoding/xml, add a very simple test for it. The package now has zero reports, so the fact that its source has zero "// want" comments is appropriate. Finally, remove some long unused parameters from matchParamType. Change-Id: Iab3ed57da7bc4a80522ae21e62b67e7828b97c89 Reviewed-on: https://go-review.googlesource.com/c/tools/+/168058 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org> |
||
---|---|---|
.. | ||
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.