[release-branch.go1.12] go/analysis: disable embedded struct tag check

This disables the enhancement added in golang.org/cl/115677. The
original change was done in the old cmd/vet location, so it would be
non-trivial to port a full revert of all the code changes. Simply
skipping anonymous struct fields is a simpler way to undo the effects of
the CL.

The reason we want to disable this enhancement of the check in the Go
1.12 release branch is because a false positive was uncovered, which we
want fixed for Go 1.12.1. It's possible that the check will instead be
tweaked for 1.13, but for 1.12.1 we want to play it safe.

Updates golang/go#30465.

Change-Id: I379b4547a560723b8023dad45ab26556b10ee308
Reviewed-on: https://go-review.googlesource.com/c/tools/+/164659
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Daniel Martí 2019-03-01 11:00:19 +00:00 committed by Brad Fitzpatrick
parent 86c5873b48
commit aa82965741
2 changed files with 7 additions and 2 deletions

View File

@ -96,6 +96,11 @@ func checkTagDuplicates(pass *analysis.Pass, tag, key string, nearest, field *ty
}
if val == "" || val[0] == ',' {
if field.Anonymous() {
// Disable this check enhancement in Go 1.12.1; some
// false positives were spotted in the initial 1.12
// release. See https://golang.org/issues/30465.
return
typ, ok := field.Type().Underlying().(*types.Struct)
if !ok {
return

View File

@ -75,7 +75,7 @@ type DuplicateJSONFields struct {
}
AnonymousJSON `json:"a"` // want "struct field AnonymousJSON repeats json tag .a. also at a.go:64"
AnonymousJSONField // want "struct field DuplicateAnonJSON repeats json tag .a. also at a.go:64"
AnonymousJSONField
XML int `xml:"a"`
DuplicateXML int `xml:"a"` // want "struct field DuplicateXML repeats xml tag .a. also at a.go:80"
@ -129,5 +129,5 @@ type DuplicateWithAnotherPackage struct {
// The "also at" position is in a different package and directory. Use
// "b.b" instead of "b/b" to match the relative path on Windows easily.
DuplicateJSON int `json:"a"` // want "struct field DuplicateJSON repeats json tag .a. also at b.b.go:8"
DuplicateJSON int `json:"a"`
}