mirror of https://github.com/golang/go.git
cmd/vendor: update to golang.org/x/tools@3ef68632
Mainly to pull in the bug fix in the structtag pass, where filenames could sometimes be wrong. The bug wasn't present in 1.11, so it was a regression and needs fixing before 1.12 is out. Fixes #29130. Change-Id: Ie9d9bff84873f34d748ebd8f056b6bc2ac822a55 Reviewed-on: https://go-review.googlesource.com/c/156378 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
parent
35f4ec152b
commit
fd752d5ede
|
|
@ -3,10 +3,6 @@
|
|||
The analysis package defines the interface between a modular static
|
||||
analysis and an analysis driver program.
|
||||
|
||||
|
||||
THIS INTERFACE IS EXPERIMENTAL AND SUBJECT TO CHANGE.
|
||||
We aim to finalize it by November 2018.
|
||||
|
||||
Background
|
||||
|
||||
A static analysis is a function that inspects a package of Go code and
|
||||
|
|
|
|||
|
|
@ -490,7 +490,7 @@ func appendComponentsRecursive(arch *asmArch, t types.Type, cc []component, suff
|
|||
offsets := arch.sizes.Offsetsof(fields)
|
||||
elemoff := int(offsets[1])
|
||||
for i := 0; i < int(tu.Len()); i++ {
|
||||
cc = appendComponentsRecursive(arch, elem, cc, suffix+"_"+strconv.Itoa(i), i*elemoff)
|
||||
cc = appendComponentsRecursive(arch, elem, cc, suffix+"_"+strconv.Itoa(i), off+i*elemoff)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -514,7 +514,7 @@ func asmParseDecl(pass *analysis.Pass, decl *ast.FuncDecl) map[string]*asmFunc {
|
|||
for _, fld := range list {
|
||||
t := pass.TypesInfo.Types[fld.Type].Type
|
||||
|
||||
// Work around github.com/golang/go/issues/28277.
|
||||
// Work around https://golang.org/issue/28277.
|
||||
if t == nil {
|
||||
if ell, ok := fld.Type.(*ast.Ellipsis); ok {
|
||||
t = types.NewSlice(pass.TypesInfo.Types[ell.Elt].Type)
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ func run(pass *analysis.Pass) (interface{}, error) {
|
|||
|
||||
// TODO(adonovan): this reports n(n-1)/2 errors for an
|
||||
// expression e||...||e of depth n. Fix.
|
||||
// See https://github.com/golang/go/issues/28086.
|
||||
// See https://golang.org/issue/28086.
|
||||
comm := op.commutativeSets(pass.TypesInfo, e)
|
||||
for _, exprs := range comm {
|
||||
op.checkRedundant(pass, exprs)
|
||||
|
|
|
|||
|
|
@ -136,10 +136,23 @@ func checkTagDuplicates(pass *analysis.Pass, tag, key string, nearest, field *ty
|
|||
*seen = map[[2]string]token.Pos{}
|
||||
}
|
||||
if pos, ok := (*seen)[[2]string{key, val}]; ok {
|
||||
posn := pass.Fset.Position(pos)
|
||||
posn.Filename = filepath.Base(posn.Filename)
|
||||
posn.Column = 0
|
||||
pass.Reportf(nearest.Pos(), "struct field %s repeats %s tag %q also at %s", field.Name(), key, val, posn)
|
||||
alsoPos := pass.Fset.Position(pos)
|
||||
alsoPos.Column = 0
|
||||
|
||||
// Make the "also at" position relative to the current position,
|
||||
// to ensure that all warnings are unambiguous and correct. For
|
||||
// example, via anonymous struct fields, it's possible for the
|
||||
// two fields to be in different packages and directories.
|
||||
thisPos := pass.Fset.Position(field.Pos())
|
||||
rel, err := filepath.Rel(filepath.Dir(thisPos.Filename), alsoPos.Filename)
|
||||
if err != nil {
|
||||
// Possibly because the paths are relative; leave the
|
||||
// filename alone.
|
||||
} else {
|
||||
alsoPos.Filename = rel
|
||||
}
|
||||
|
||||
pass.Reportf(nearest.Pos(), "struct field %s repeats %s tag %q also at %s", field.Name(), key, val, alsoPos)
|
||||
} else {
|
||||
(*seen)[[2]string{key, val}] = field.Pos()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ func readConfig(filename string) (*Config, error) {
|
|||
}
|
||||
|
||||
var importerForCompiler = func(_ *token.FileSet, compiler string, lookup importer.Lookup) types.Importer {
|
||||
// broken legacy implementation (github.com/golang/go/issues/28995)
|
||||
// broken legacy implementation (https://golang.org/issue/28995)
|
||||
return importer.For(compiler, lookup)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue