diff options
author | Robert Findley <rfindley@google.com> | 2022-04-01 10:04:19 -0400 |
---|---|---|
committer | Cherry Mui <cherryyz@google.com> | 2022-04-04 20:04:16 +0000 |
commit | 6ebf6762896edf0d33873433f0fcaf7e4a418539 (patch) | |
tree | 7b2864656e5022f6297b892241f7c73940fa1e33 | |
parent | 69bc821a010e60a40d6575e793e14b3e616b005b (diff) | |
download | go-6ebf6762896edf0d33873433f0fcaf7e4a418539.tar.gz go-6ebf6762896edf0d33873433f0fcaf7e4a418539.zip |
[release-branch.go1.18] all update vendored golang.org/x/tools
Update x/tools from internal-branch.go1.18-vendor to pick up the
cherry-picked fix for #51727.
The following commands were used, from the cmd module:
go get -d golang.org/x/tools@internal-branch.go1.18-vendor
go mod tidy
go mod vendor
Fixes #51727
Change-Id: I380a66fee585c8c12f9646de87ffb5e398b4ba80
Reviewed-on: https://go-review.googlesource.com/c/go/+/397476
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Heschi Kreinick <heschi@google.com>
-rw-r--r-- | src/cmd/go.mod | 2 | ||||
-rw-r--r-- | src/cmd/go.sum | 4 | ||||
-rw-r--r-- | src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go | 56 | ||||
-rw-r--r-- | src/cmd/vendor/modules.txt | 2 |
4 files changed, 37 insertions, 27 deletions
diff --git a/src/cmd/go.mod b/src/cmd/go.mod index 48fc888f94..5bd7bf9b8b 100644 --- a/src/cmd/go.mod +++ b/src/cmd/go.mod @@ -8,7 +8,7 @@ require ( golang.org/x/mod v0.6.0-dev.0.20211102181907-3a5865c02020 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 - golang.org/x/tools v0.1.9-0.20220124164225-97de9ec46646 + golang.org/x/tools v0.1.9-0.20220329150752-294080fd2f5a ) require ( diff --git a/src/cmd/go.sum b/src/cmd/go.sum index 4a5479f881..a8a85503a8 100644 --- a/src/cmd/go.sum +++ b/src/cmd/go.sum @@ -18,7 +18,7 @@ golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7q golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/tools v0.1.9-0.20220124164225-97de9ec46646 h1:f8aekWvlQQ8ZhD8SL7lOu18dtWslZYl029PN2F0VnS4= -golang.org/x/tools v0.1.9-0.20220124164225-97de9ec46646/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9-0.20220329150752-294080fd2f5a h1:IlVBSvpiWIkpqADzaiismkf1xcqsZjBDIXzO+7kZEpY= +golang.org/x/tools v0.1.9-0.20220329150752-294080fd2f5a/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index 7e96fc234e..557202b4d1 100644 --- a/src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -254,18 +254,18 @@ func For(obj types.Object) (Path, error) { if tname.IsAlias() { // type alias - if r := find(obj, T, path); r != nil { + if r := find(obj, T, path, nil); r != nil { return Path(r), nil } } else { if named, _ := T.(*types.Named); named != nil { - if r := findTypeParam(obj, typeparams.ForNamed(named), path); r != nil { + if r := findTypeParam(obj, typeparams.ForNamed(named), path, nil); r != nil { // generic named type return Path(r), nil } } // defined (named) type - if r := find(obj, T.Underlying(), append(path, opUnderlying)); r != nil { + if r := find(obj, T.Underlying(), append(path, opUnderlying), nil); r != nil { return Path(r), nil } } @@ -279,7 +279,7 @@ func For(obj types.Object) (Path, error) { if _, ok := o.(*types.TypeName); !ok { if o.Exported() { // exported non-type (const, var, func) - if r := find(obj, o.Type(), append(path, opType)); r != nil { + if r := find(obj, o.Type(), append(path, opType), nil); r != nil { return Path(r), nil } } @@ -299,7 +299,7 @@ func For(obj types.Object) (Path, error) { if m == obj { return Path(path2), nil // found declared method } - if r := find(obj, m.Type(), append(path2, opType)); r != nil { + if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { return Path(r), nil } } @@ -316,41 +316,44 @@ func appendOpArg(path []byte, op byte, arg int) []byte { } // find finds obj within type T, returning the path to it, or nil if not found. -func find(obj types.Object, T types.Type, path []byte) []byte { +// +// The seen map is used to short circuit cycles through type parameters. If +// nil, it will be allocated as necessary. +func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName]bool) []byte { switch T := T.(type) { case *types.Basic, *types.Named: // Named types belonging to pkg were handled already, // so T must belong to another package. No path. return nil case *types.Pointer: - return find(obj, T.Elem(), append(path, opElem)) + return find(obj, T.Elem(), append(path, opElem), seen) case *types.Slice: - return find(obj, T.Elem(), append(path, opElem)) + return find(obj, T.Elem(), append(path, opElem), seen) case *types.Array: - return find(obj, T.Elem(), append(path, opElem)) + return find(obj, T.Elem(), append(path, opElem), seen) case *types.Chan: - return find(obj, T.Elem(), append(path, opElem)) + return find(obj, T.Elem(), append(path, opElem), seen) case *types.Map: - if r := find(obj, T.Key(), append(path, opKey)); r != nil { + if r := find(obj, T.Key(), append(path, opKey), seen); r != nil { return r } - return find(obj, T.Elem(), append(path, opElem)) + return find(obj, T.Elem(), append(path, opElem), seen) case *types.Signature: - if r := findTypeParam(obj, typeparams.ForSignature(T), path); r != nil { + if r := findTypeParam(obj, typeparams.ForSignature(T), path, seen); r != nil { return r } - if r := find(obj, T.Params(), append(path, opParams)); r != nil { + if r := find(obj, T.Params(), append(path, opParams), seen); r != nil { return r } - return find(obj, T.Results(), append(path, opResults)) + return find(obj, T.Results(), append(path, opResults), seen) case *types.Struct: for i := 0; i < T.NumFields(); i++ { - f := T.Field(i) + fld := T.Field(i) path2 := appendOpArg(path, opField, i) - if f == obj { + if fld == obj { return path2 // found field var } - if r := find(obj, f.Type(), append(path2, opType)); r != nil { + if r := find(obj, fld.Type(), append(path2, opType), seen); r != nil { return r } } @@ -362,7 +365,7 @@ func find(obj types.Object, T types.Type, path []byte) []byte { if v == obj { return path2 // found param/result var } - if r := find(obj, v.Type(), append(path2, opType)); r != nil { + if r := find(obj, v.Type(), append(path2, opType), seen); r != nil { return r } } @@ -374,7 +377,7 @@ func find(obj types.Object, T types.Type, path []byte) []byte { if m == obj { return path2 // found interface method } - if r := find(obj, m.Type(), append(path2, opType)); r != nil { + if r := find(obj, m.Type(), append(path2, opType), seen); r != nil { return r } } @@ -384,7 +387,14 @@ func find(obj types.Object, T types.Type, path []byte) []byte { if name == obj { return append(path, opObj) } - if r := find(obj, T.Constraint(), append(path, opConstraint)); r != nil { + if seen[name] { + return nil + } + if seen == nil { + seen = make(map[*types.TypeName]bool) + } + seen[name] = true + if r := find(obj, T.Constraint(), append(path, opConstraint), seen); r != nil { return r } return nil @@ -392,11 +402,11 @@ func find(obj types.Object, T types.Type, path []byte) []byte { panic(T) } -func findTypeParam(obj types.Object, list *typeparams.TypeParamList, path []byte) []byte { +func findTypeParam(obj types.Object, list *typeparams.TypeParamList, path []byte, seen map[*types.TypeName]bool) []byte { for i := 0; i < list.Len(); i++ { tparam := list.At(i) path2 := appendOpArg(path, opTypeParam, i) - if r := find(obj, tparam, path2); r != nil { + if r := find(obj, tparam, path2, seen); r != nil { return r } } diff --git a/src/cmd/vendor/modules.txt b/src/cmd/vendor/modules.txt index f2cd884b82..03732f575f 100644 --- a/src/cmd/vendor/modules.txt +++ b/src/cmd/vendor/modules.txt @@ -51,7 +51,7 @@ golang.org/x/sys/windows # golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 ## explicit; go 1.17 golang.org/x/term -# golang.org/x/tools v0.1.9-0.20220124164225-97de9ec46646 +# golang.org/x/tools v0.1.9-0.20220329150752-294080fd2f5a ## explicit; go 1.17 golang.org/x/tools/cover golang.org/x/tools/go/analysis |