]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: re-vendor x/tools upstream for printf verb fix
authorCaleb Spare <cespare@gmail.com>
Fri, 18 Oct 2019 22:02:49 +0000 (15:02 -0700)
committerAlan Donovan <adonovan@google.com>
Sat, 19 Oct 2019 19:28:35 +0000 (19:28 +0000)
This pulls in the x/tools fix from
https://go-review.googlesource.com/c/tools/+/202041
so that cmd/vet won't flag %x/%X verbs incorrectly for floating-point
and complex types.

Fixes #34993

Change-Id: I68d89a19d95fe6ad336e87d12d56f03556974086
Reviewed-on: https://go-review.googlesource.com/c/go/+/202083
Run-TryBot: Caleb Spare <cespare@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/tools/go/analysis/passes/asmdecl/asmdecl.go
src/cmd/vendor/golang.org/x/tools/go/analysis/passes/printf/printf.go
src/cmd/vendor/golang.org/x/tools/go/analysis/validate.go
src/cmd/vendor/modules.txt
src/cmd/vet/testdata/print/print.go

index e4a2eaa90820b8a90949e304864387033abe8feb..77ec02a8a9a7d26666573f14c16a928dffc68cae 100644 (file)
@@ -8,5 +8,5 @@ require (
        golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1
        golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c
        golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 // indirect
-       golang.org/x/tools v0.0.0-20190925211824-e4ea94538f5b
+       golang.org/x/tools v0.0.0-20191018203202-04252eccb9d5
 )
index 7c3ee7304b4540a6553f576b3ad4daaf92271882..6a3d60941621c8a29b04059034cd04ab77a7edc5 100644 (file)
@@ -14,7 +14,7 @@ golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dz
 golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/tools v0.0.0-20190925211824-e4ea94538f5b h1:gyG4T6EqWG9fqSgT0VbHhzp8bHbFux5mvlgz1gUkEaQ=
-golang.org/x/tools v0.0.0-20190925211824-e4ea94538f5b/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191018203202-04252eccb9d5 h1:TFUhCYbgGMOGnRxJv+j0iAcxCjk8oGjXXWNejQBhUUs=
+golang.org/x/tools v0.0.0-20191018203202-04252eccb9d5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
index d41c4e97e32689cb65c980405e3cd8a79983ddce..6e7a76e8c8be46064306d90f2efdd0172beb760d 100644 (file)
@@ -79,7 +79,6 @@ var (
        asmArchArm      = asmArch{name: "arm", bigEndian: false, stack: "R13", lr: true}
        asmArchArm64    = asmArch{name: "arm64", bigEndian: false, stack: "RSP", lr: true}
        asmArchAmd64    = asmArch{name: "amd64", bigEndian: false, stack: "SP", lr: false}
-       asmArchAmd64p32 = asmArch{name: "amd64p32", bigEndian: false, stack: "SP", lr: false}
        asmArchMips     = asmArch{name: "mips", bigEndian: true, stack: "R29", lr: true}
        asmArchMipsLE   = asmArch{name: "mipsle", bigEndian: false, stack: "R29", lr: true}
        asmArchMips64   = asmArch{name: "mips64", bigEndian: true, stack: "R29", lr: true}
@@ -94,7 +93,6 @@ var (
                &asmArchArm,
                &asmArchArm64,
                &asmArchAmd64,
-               &asmArchAmd64p32,
                &asmArchMips,
                &asmArchMipsLE,
                &asmArchMips64,
@@ -635,9 +633,6 @@ func asmCheckVar(badf func(string, ...interface{}), fn *asmFunc, line, expr stri
        case "amd64.LEAQ":
                dst = 8
                addr = true
-       case "amd64p32.LEAL":
-               dst = 4
-               addr = true
        default:
                switch fn.arch.name {
                case "386", "amd64":
index f0d7e44c651261b190cebef3f52ef33dbd3e90c6..b50153805519a4002ff13fc47be3c2a84f67bfd9 100644 (file)
@@ -766,8 +766,8 @@ var printVerbs = []printVerb{
        {'U', "-#", argRune | argInt},
        {'v', allFlags, anyType},
        {'w', allFlags, argError},
-       {'x', sharpNumFlag, argRune | argInt | argString | argPointer},
-       {'X', sharpNumFlag, argRune | argInt | argString | argPointer},
+       {'x', sharpNumFlag, argRune | argInt | argString | argPointer | argFloat | argComplex},
+       {'X', sharpNumFlag, argRune | argInt | argString | argPointer | argFloat | argComplex},
 }
 
 // okPrintfArg compares the formatState to the arguments actually present,
index b984ab6c2da1d4ee343bc0592305e2c85d83afdb..be98143461e1afa7d3ca43c7f3dc3522d994c9a5 100644 (file)
@@ -9,13 +9,10 @@ import (
 // Validate reports an error if any of the analyzers are misconfigured.
 // Checks include:
 // that the name is a valid identifier;
-// that analyzer names are unique;
 // that the Requires graph is acyclic;
 // that analyzer fact types are unique;
 // that each fact type is a pointer.
 func Validate(analyzers []*Analyzer) error {
-       names := make(map[string]bool)
-
        // Map each fact type to its sole generating analyzer.
        factTypes := make(map[reflect.Type]*Analyzer)
 
@@ -39,10 +36,6 @@ func Validate(analyzers []*Analyzer) error {
                        if !validIdent(a.Name) {
                                return fmt.Errorf("invalid analyzer name %q", a)
                        }
-                       if names[a.Name] {
-                               return fmt.Errorf("duplicate analyzer name %q", a)
-                       }
-                       names[a.Name] = true
 
                        if a.Doc == "" {
                                return fmt.Errorf("analyzer %q is undocumented", a)
index 6ed3e16e2a75ee36e319705151a3f152cee3d035..12f8740f4da94a1a1df4b90acd8a5557e07e9f62 100644 (file)
@@ -31,7 +31,7 @@ golang.org/x/crypto/ssh/terminal
 ## explicit
 golang.org/x/sys/unix
 golang.org/x/sys/windows
-# golang.org/x/tools v0.0.0-20190925211824-e4ea94538f5b
+# golang.org/x/tools v0.0.0-20191018203202-04252eccb9d5
 ## explicit
 golang.org/x/tools/go/analysis
 golang.org/x/tools/go/analysis/internal/analysisflags
index 7a4783aee4fd920c6c90b7e3a8dcce1a254522cb..fca594925f7a8a4c0828d871ddec9496d905ec16 100644 (file)
@@ -81,8 +81,8 @@ func PrintfTests() {
        fmt.Printf("%T %T", 3, i)
        fmt.Printf("%U %U", 3, i)
        fmt.Printf("%v %v", 3, i)
-       fmt.Printf("%x %x %x %x", 3, i, "hi", s)
-       fmt.Printf("%X %X %X %X", 3, i, "hi", s)
+       fmt.Printf("%x %x %x %x %x %x %x", 3, i, "hi", s, x, c, fslice)
+       fmt.Printf("%X %X %X %X %X %X %X", 3, i, "hi", s, x, c, fslice)
        fmt.Printf("%.*s %d %g", 3, "hi", 23, 2.3)
        fmt.Printf("%s", &stringerv)
        fmt.Printf("%v", &stringerv)
@@ -125,7 +125,6 @@ func PrintfTests() {
        fmt.Printf("%t", 23)                        // ERROR "Printf format %t has arg 23 of wrong type int"
        fmt.Printf("%U", x)                         // ERROR "Printf format %U has arg x of wrong type float64"
        fmt.Printf("%x", nil)                       // ERROR "Printf format %x has arg nil of wrong type untyped nil"
-       fmt.Printf("%X", 2.3)                       // ERROR "Printf format %X has arg 2.3 of wrong type float64"
        fmt.Printf("%s", stringerv)                 // ERROR "Printf format %s has arg stringerv of wrong type .*print.ptrStringer"
        fmt.Printf("%t", stringerv)                 // ERROR "Printf format %t has arg stringerv of wrong type .*print.ptrStringer"
        fmt.Printf("%s", embeddedStringerv)         // ERROR "Printf format %s has arg embeddedStringerv of wrong type .*print.embeddedStringer"