]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: disable complaint about 0 flag in print
authorRob Pike <r@golang.org>
Tue, 30 Jan 2018 02:49:48 +0000 (13:49 +1100)
committerRob Pike <r@golang.org>
Tue, 30 Jan 2018 04:26:07 +0000 (04:26 +0000)
The problem is that vet complains about 0 as a Printf flag in some
situations where fmt allows it but probably shouldn't. The two
need to be brought in line, but it's too late in the release cycle.

The situation is messy and should be resolved properly in 1.11. This
CL is a simple fix to disable a spurious complaint for 1.10 that will be
resolved in a more thorough way in 1.11.

The workaround is just to be silent about flag 0, as suggested in
issue 23605.

Fixes #23605
Update #23498

Change-Id: Ice1a4f4d86845d70c1340a0a6430d74e5de9afd4
Reviewed-on: https://go-review.googlesource.com/90695
Run-TryBot: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/vet/print.go
src/cmd/vet/testdata/print.go

index 456fbcc044de5410caa214517fa03bf8449f060e..1c015913d5f4fa5ce580e2712b59c77dc5037798 100644 (file)
@@ -569,6 +569,11 @@ func (f *File) okPrintfArg(call *ast.CallExpr, state *formatState) (ok bool) {
                        return false
                }
                for _, flag := range state.flags {
+                       // TODO: Disable complaint about '0' for Go 1.10. To be fixed properly in 1.11.
+                       // See issues 23598 and 23605.
+                       if flag == '0' {
+                               continue
+                       }
                        if !strings.ContainsRune(v.flags, rune(flag)) {
                                f.Badf(call.Pos(), "%s format %s has unrecognized flag %c", state.name, state.format, flag)
                                return false
index 55ab84fae7685d6716e9f55b0f03e6bc1a96cd37..6725bafadfb4a49804339c38f8445cc5f2a19192 100644 (file)
@@ -533,3 +533,9 @@ func UnexportedStringerOrError() {
        fmt.Println("foo\\n")       // not an error
        fmt.Println(`foo\n`)        // not an error
 }
+
+// TODO: Disable complaint about '0' for Go 1.10. To be fixed properly in 1.11.
+// See issues 23598 and 23605.
+func DisableErrorForFlag0() {
+       fmt.Printf("%0t", true)
+}