From aa82965741a9fecd12b026fbb3d3c6ed3231b8f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 1 Mar 2019 11:00:19 +0000 Subject: [PATCH] [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 Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- go/analysis/passes/structtag/structtag.go | 5 +++++ go/analysis/passes/structtag/testdata/src/a/a.go | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/go/analysis/passes/structtag/structtag.go b/go/analysis/passes/structtag/structtag.go index 2b67c376..5b27208e 100644 --- a/go/analysis/passes/structtag/structtag.go +++ b/go/analysis/passes/structtag/structtag.go @@ -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 diff --git a/go/analysis/passes/structtag/testdata/src/a/a.go b/go/analysis/passes/structtag/testdata/src/a/a.go index abb67fe4..0078626d 100644 --- a/go/analysis/passes/structtag/testdata/src/a/a.go +++ b/go/analysis/passes/structtag/testdata/src/a/a.go @@ -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"` }