]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.18] all update vendored golang.org/x/tools
authorRobert Findley <rfindley@google.com>
Fri, 1 Apr 2022 14:04:19 +0000 (10:04 -0400)
committerCherry Mui <cherryyz@google.com>
Mon, 4 Apr 2022 20:04:16 +0000 (20:04 +0000)
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>
src/cmd/go.mod
src/cmd/go.sum
src/cmd/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go
src/cmd/vendor/modules.txt

index 48fc888f9492d07e43f774817c955d8608d240db..5bd7bf9b8b62b277a4eda057b52664f4055fc7e7 100644 (file)
@@ -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 (
index 4a5479f881b7f68c3a3ba164797b12341842db93..a8a85503a89b04582a813b0bb5f0411702e3babc 100644 (file)
@@ -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=
index 7e96fc234e5af5514a5951b2b83093138a19d613..557202b4d168f67f7fdeed426bde8b54bcd3dbea 100644 (file)
@@ -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
                }
        }
index f2cd884b820ce95fa4584709068e23161e33d94b..03732f575fbd308da8fd3dd949c89a03e98d1a24 100644 (file)
@@ -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