mirror of
https://github.com/ko-build/ko.git
synced 2025-02-07 19:30:23 +02:00
Bump golang.org/x/tools from 0.1.5 to 0.1.6 (#441)
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.5 to 0.1.6. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.5...v0.1.6) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
parent
45467f076b
commit
d5b606e919
2
go.mod
2
go.mod
@ -20,7 +20,7 @@ require (
|
|||||||
github.com/spf13/viper v1.8.1
|
github.com/spf13/viper v1.8.1
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||||
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
|
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
|
||||||
golang.org/x/tools v0.1.5
|
golang.org/x/tools v0.1.6
|
||||||
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
|
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
||||||
k8s.io/apimachinery v0.22.2
|
k8s.io/apimachinery v0.22.2
|
||||||
|
11
go.sum
11
go.sum
@ -740,6 +740,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
|||||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
|
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
||||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
||||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
||||||
@ -867,8 +868,9 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
|
|||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
|
|
||||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI=
|
||||||
|
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@ -977,8 +979,9 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
|
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
|
||||||
|
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -1052,8 +1055,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
|
|||||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||||
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
|
golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4=
|
||||||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
48
vendor/golang.org/x/sys/unix/ifreq_linux.go
generated
vendored
Normal file
48
vendor/golang.org/x/sys/unix/ifreq_linux.go
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build linux
|
||||||
|
// +build linux
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// Helpers for dealing with ifreq since it contains a union and thus requires a
|
||||||
|
// lot of unsafe.Pointer casts to use properly.
|
||||||
|
|
||||||
|
// newIfreq creates an ifreq with the input network interface name after
|
||||||
|
// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)
|
||||||
|
// bytes.
|
||||||
|
func newIfreq(name string) (*ifreq, error) {
|
||||||
|
// Leave room for terminating NULL byte.
|
||||||
|
if len(name) >= IFNAMSIZ {
|
||||||
|
return nil, EINVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
var ifr ifreq
|
||||||
|
copy(ifr.Ifrn[:], name)
|
||||||
|
|
||||||
|
return &ifr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// An ifreqData is an ifreq but with a typed unsafe.Pointer field for data in
|
||||||
|
// the union. This is required in order to comply with the unsafe.Pointer rules
|
||||||
|
// since the "pointer-ness" of data would not be preserved if it were cast into
|
||||||
|
// the byte array of a raw ifreq.
|
||||||
|
type ifreqData struct {
|
||||||
|
name [IFNAMSIZ]byte
|
||||||
|
data unsafe.Pointer
|
||||||
|
// Pad to the same size as ifreq.
|
||||||
|
_ [len(ifreq{}.Ifru) - SizeofPtr]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetData produces an ifreqData with the pointer p set for ioctls which require
|
||||||
|
// arbitrary pointer data.
|
||||||
|
func (ifr ifreq) SetData(p unsafe.Pointer) ifreqData {
|
||||||
|
return ifreqData{
|
||||||
|
name: ifr.Ifrn,
|
||||||
|
data: p,
|
||||||
|
}
|
||||||
|
}
|
60
vendor/golang.org/x/sys/unix/ioctl_linux.go
generated
vendored
60
vendor/golang.org/x/sys/unix/ioctl_linux.go
generated
vendored
@ -5,7 +5,6 @@
|
|||||||
package unix
|
package unix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"runtime"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -22,56 +21,42 @@ func IoctlRetInt(fd int, req uint) (int, error) {
|
|||||||
|
|
||||||
func IoctlGetUint32(fd int, req uint) (uint32, error) {
|
func IoctlGetUint32(fd int, req uint) (uint32, error) {
|
||||||
var value uint32
|
var value uint32
|
||||||
err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
|
err := ioctlPtr(fd, req, unsafe.Pointer(&value))
|
||||||
return value, err
|
return value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlGetRTCTime(fd int) (*RTCTime, error) {
|
func IoctlGetRTCTime(fd int) (*RTCTime, error) {
|
||||||
var value RTCTime
|
var value RTCTime
|
||||||
err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))
|
err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlSetRTCTime(fd int, value *RTCTime) error {
|
func IoctlSetRTCTime(fd int, value *RTCTime) error {
|
||||||
err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
|
return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))
|
||||||
runtime.KeepAlive(value)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
|
func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
|
||||||
var value RTCWkAlrm
|
var value RTCWkAlrm
|
||||||
err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
|
err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {
|
func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {
|
||||||
err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value)))
|
return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))
|
||||||
runtime.KeepAlive(value)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
type ifreqEthtool struct {
|
|
||||||
name [IFNAMSIZ]byte
|
|
||||||
data unsafe.Pointer
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network
|
// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network
|
||||||
// device specified by ifname.
|
// device specified by ifname.
|
||||||
func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
|
func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
|
||||||
// Leave room for terminating NULL byte.
|
ifr, err := newIfreq(ifname)
|
||||||
if len(ifname) >= IFNAMSIZ {
|
if err != nil {
|
||||||
return nil, EINVAL
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
value := EthtoolDrvinfo{
|
value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}
|
||||||
Cmd: ETHTOOL_GDRVINFO,
|
ifrd := ifr.SetData(unsafe.Pointer(&value))
|
||||||
}
|
|
||||||
ifreq := ifreqEthtool{
|
err = ioctlPtr(fd, SIOCETHTOOL, unsafe.Pointer(&ifrd))
|
||||||
data: unsafe.Pointer(&value),
|
|
||||||
}
|
|
||||||
copy(ifreq.name[:], ifname)
|
|
||||||
err := ioctl(fd, SIOCETHTOOL, uintptr(unsafe.Pointer(&ifreq)))
|
|
||||||
runtime.KeepAlive(ifreq)
|
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +65,7 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
|
|||||||
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
||||||
func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
|
func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
|
||||||
var value WatchdogInfo
|
var value WatchdogInfo
|
||||||
err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value)))
|
err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +73,7 @@ func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {
|
|||||||
// more information, see:
|
// more information, see:
|
||||||
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
||||||
func IoctlWatchdogKeepalive(fd int) error {
|
func IoctlWatchdogKeepalive(fd int) error {
|
||||||
|
// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.
|
||||||
return ioctl(fd, WDIOC_KEEPALIVE, 0)
|
return ioctl(fd, WDIOC_KEEPALIVE, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,9 +81,7 @@ func IoctlWatchdogKeepalive(fd int) error {
|
|||||||
// range of data conveyed in value to the file associated with the file
|
// range of data conveyed in value to the file associated with the file
|
||||||
// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
|
// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.
|
||||||
func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
|
func IoctlFileCloneRange(destFd int, value *FileCloneRange) error {
|
||||||
err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value)))
|
return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))
|
||||||
runtime.KeepAlive(value)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file
|
// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file
|
||||||
@ -148,7 +132,7 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {
|
|||||||
rawinfo.Reserved = value.Info[i].Reserved
|
rawinfo.Reserved = value.Info[i].Reserved
|
||||||
}
|
}
|
||||||
|
|
||||||
err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0])))
|
err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))
|
||||||
|
|
||||||
// Output
|
// Output
|
||||||
for i := range value.Info {
|
for i := range value.Info {
|
||||||
@ -166,31 +150,29 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {
|
func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {
|
||||||
err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value)))
|
return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))
|
||||||
runtime.KeepAlive(value)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {
|
func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {
|
||||||
var value HIDRawDevInfo
|
var value HIDRawDevInfo
|
||||||
err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value)))
|
err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlHIDGetRawName(fd int) (string, error) {
|
func IoctlHIDGetRawName(fd int) (string, error) {
|
||||||
var value [_HIDIOCGRAWNAME_LEN]byte
|
var value [_HIDIOCGRAWNAME_LEN]byte
|
||||||
err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0])))
|
err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))
|
||||||
return ByteSliceToString(value[:]), err
|
return ByteSliceToString(value[:]), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlHIDGetRawPhys(fd int) (string, error) {
|
func IoctlHIDGetRawPhys(fd int) (string, error) {
|
||||||
var value [_HIDIOCGRAWPHYS_LEN]byte
|
var value [_HIDIOCGRAWPHYS_LEN]byte
|
||||||
err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0])))
|
err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))
|
||||||
return ByteSliceToString(value[:]), err
|
return ByteSliceToString(value[:]), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IoctlHIDGetRawUniq(fd int) (string, error) {
|
func IoctlHIDGetRawUniq(fd int) (string, error) {
|
||||||
var value [_HIDIOCGRAWUNIQ_LEN]byte
|
var value [_HIDIOCGRAWUNIQ_LEN]byte
|
||||||
err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0])))
|
err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))
|
||||||
return ByteSliceToString(value[:]), err
|
return ByteSliceToString(value[:]), err
|
||||||
}
|
}
|
||||||
|
15
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
15
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
@ -66,11 +66,18 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
|
|||||||
return fchmodat(dirfd, path, mode)
|
return fchmodat(dirfd, path, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
//sys ioctl(fd int, req uint, arg uintptr) (err error)
|
//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL
|
||||||
|
//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL
|
||||||
|
|
||||||
// ioctl itself should not be exposed directly, but additional get/set
|
// ioctl itself should not be exposed directly, but additional get/set functions
|
||||||
// functions for specific types are permissible.
|
// for specific types are permissible. These are defined in ioctl.go and
|
||||||
// These are defined in ioctl.go and ioctl_linux.go.
|
// ioctl_linux.go.
|
||||||
|
//
|
||||||
|
// The third argument to ioctl is often a pointer but sometimes an integer.
|
||||||
|
// Callers should use ioctlPtr when the third argument is a pointer and ioctl
|
||||||
|
// when the third argument is an integer.
|
||||||
|
//
|
||||||
|
// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.
|
||||||
|
|
||||||
//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
|
//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
|
||||||
|
|
||||||
|
10
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
10
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
@ -48,6 +48,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
|
func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(oldpath)
|
_p0, err = BytePtrFromString(oldpath)
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_386.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_386.go
generated
vendored
@ -170,6 +170,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [16]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x58
|
SizeofSockaddrNFCLLCP = 0x58
|
||||||
SizeofIovec = 0x8
|
SizeofIovec = 0x8
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
generated
vendored
@ -173,6 +173,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
generated
vendored
@ -176,6 +176,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [16]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x58
|
SizeofSockaddrNFCLLCP = 0x58
|
||||||
SizeofIovec = 0x8
|
SizeofIovec = 0x8
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
generated
vendored
@ -174,6 +174,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
generated
vendored
@ -175,6 +175,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [16]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x58
|
SizeofSockaddrNFCLLCP = 0x58
|
||||||
SizeofIovec = 0x8
|
SizeofIovec = 0x8
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
generated
vendored
@ -174,6 +174,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
generated
vendored
@ -174,6 +174,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
generated
vendored
@ -175,6 +175,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [16]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x58
|
SizeofSockaddrNFCLLCP = 0x58
|
||||||
SizeofIovec = 0x8
|
SizeofIovec = 0x8
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go
generated
vendored
@ -176,6 +176,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [16]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x58
|
SizeofSockaddrNFCLLCP = 0x58
|
||||||
SizeofIovec = 0x8
|
SizeofIovec = 0x8
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
generated
vendored
@ -175,6 +175,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
generated
vendored
@ -175,6 +175,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
generated
vendored
@ -174,6 +174,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
generated
vendored
@ -173,6 +173,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
5
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
generated
vendored
5
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
generated
vendored
@ -177,6 +177,11 @@ type Cmsghdr struct {
|
|||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ifreq struct {
|
||||||
|
Ifrn [16]byte
|
||||||
|
Ifru [24]byte
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofSockaddrNFCLLCP = 0x60
|
SizeofSockaddrNFCLLCP = 0x60
|
||||||
SizeofIovec = 0x10
|
SizeofIovec = 0x10
|
||||||
|
1
vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go
generated
vendored
1
vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go
generated
vendored
@ -1029,6 +1029,7 @@ func predeclared() []types.Type {
|
|||||||
// used internally by gc; never used by this package or in .a files
|
// used internally by gc; never used by this package or in .a files
|
||||||
anyType{},
|
anyType{},
|
||||||
}
|
}
|
||||||
|
predecl = append(predecl, additionalPredeclared()...)
|
||||||
})
|
})
|
||||||
return predecl
|
return predecl
|
||||||
}
|
}
|
||||||
|
187
vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
generated
vendored
187
vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
generated
vendored
@ -18,6 +18,8 @@ import (
|
|||||||
"go/types"
|
"go/types"
|
||||||
"io"
|
"io"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/typeparams"
|
||||||
)
|
)
|
||||||
|
|
||||||
type intReader struct {
|
type intReader struct {
|
||||||
@ -41,6 +43,21 @@ func (r *intReader) uint64() uint64 {
|
|||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Keep this in sync with constants in iexport.go.
|
||||||
|
const (
|
||||||
|
iexportVersionGo1_11 = 0
|
||||||
|
iexportVersionPosCol = 1
|
||||||
|
// TODO: before release, change this back to 2.
|
||||||
|
iexportVersionGenerics = iexportVersionPosCol
|
||||||
|
|
||||||
|
iexportVersionCurrent = iexportVersionGenerics
|
||||||
|
)
|
||||||
|
|
||||||
|
type ident struct {
|
||||||
|
pkg string
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
const predeclReserved = 32
|
const predeclReserved = 32
|
||||||
|
|
||||||
type itag uint64
|
type itag uint64
|
||||||
@ -56,6 +73,9 @@ const (
|
|||||||
signatureType
|
signatureType
|
||||||
structType
|
structType
|
||||||
interfaceType
|
interfaceType
|
||||||
|
typeParamType
|
||||||
|
instanceType
|
||||||
|
unionType
|
||||||
)
|
)
|
||||||
|
|
||||||
// IImportData imports a package from the serialized package data
|
// IImportData imports a package from the serialized package data
|
||||||
@ -101,9 +121,13 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data
|
|||||||
|
|
||||||
version = int64(r.uint64())
|
version = int64(r.uint64())
|
||||||
switch version {
|
switch version {
|
||||||
case currentVersion, 0:
|
case /* iexportVersionGenerics, */ iexportVersionPosCol, iexportVersionGo1_11:
|
||||||
default:
|
default:
|
||||||
errorf("unknown iexport format version %d", version)
|
if version > iexportVersionGenerics {
|
||||||
|
errorf("unstable iexport format version %d, just rebuild compiler and std library", version)
|
||||||
|
} else {
|
||||||
|
errorf("unknown iexport format version %d", version)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sLen := int64(r.uint64())
|
sLen := int64(r.uint64())
|
||||||
@ -115,8 +139,9 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data
|
|||||||
r.Seek(sLen+dLen, io.SeekCurrent)
|
r.Seek(sLen+dLen, io.SeekCurrent)
|
||||||
|
|
||||||
p := iimporter{
|
p := iimporter{
|
||||||
ipath: path,
|
exportVersion: version,
|
||||||
version: int(version),
|
ipath: path,
|
||||||
|
version: int(version),
|
||||||
|
|
||||||
stringData: stringData,
|
stringData: stringData,
|
||||||
stringCache: make(map[uint64]string),
|
stringCache: make(map[uint64]string),
|
||||||
@ -125,6 +150,9 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data
|
|||||||
declData: declData,
|
declData: declData,
|
||||||
pkgIndex: make(map[*types.Package]map[string]uint64),
|
pkgIndex: make(map[*types.Package]map[string]uint64),
|
||||||
typCache: make(map[uint64]types.Type),
|
typCache: make(map[uint64]types.Type),
|
||||||
|
// Separate map for typeparams, keyed by their package and unique
|
||||||
|
// name (name with subscript).
|
||||||
|
tparamIndex: make(map[ident]types.Type),
|
||||||
|
|
||||||
fake: fakeFileSet{
|
fake: fakeFileSet{
|
||||||
fset: fset,
|
fset: fset,
|
||||||
@ -216,16 +244,18 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data
|
|||||||
}
|
}
|
||||||
|
|
||||||
type iimporter struct {
|
type iimporter struct {
|
||||||
ipath string
|
exportVersion int64
|
||||||
version int
|
ipath string
|
||||||
|
version int
|
||||||
|
|
||||||
stringData []byte
|
stringData []byte
|
||||||
stringCache map[uint64]string
|
stringCache map[uint64]string
|
||||||
pkgCache map[uint64]*types.Package
|
pkgCache map[uint64]*types.Package
|
||||||
|
|
||||||
declData []byte
|
declData []byte
|
||||||
pkgIndex map[*types.Package]map[string]uint64
|
pkgIndex map[*types.Package]map[string]uint64
|
||||||
typCache map[uint64]types.Type
|
typCache map[uint64]types.Type
|
||||||
|
tparamIndex map[ident]types.Type
|
||||||
|
|
||||||
fake fakeFileSet
|
fake fakeFileSet
|
||||||
interfaceList []*types.Interface
|
interfaceList []*types.Interface
|
||||||
@ -315,17 +345,27 @@ func (r *importReader) obj(name string) {
|
|||||||
|
|
||||||
r.declare(types.NewConst(pos, r.currPkg, name, typ, val))
|
r.declare(types.NewConst(pos, r.currPkg, name, typ, val))
|
||||||
|
|
||||||
case 'F':
|
case 'F', 'G':
|
||||||
|
var tparams []*typeparams.TypeParam
|
||||||
|
if tag == 'G' {
|
||||||
|
tparams = r.tparamList()
|
||||||
|
}
|
||||||
sig := r.signature(nil)
|
sig := r.signature(nil)
|
||||||
|
typeparams.SetForSignature(sig, tparams)
|
||||||
r.declare(types.NewFunc(pos, r.currPkg, name, sig))
|
r.declare(types.NewFunc(pos, r.currPkg, name, sig))
|
||||||
|
|
||||||
case 'T':
|
case 'T', 'U':
|
||||||
// Types can be recursive. We need to setup a stub
|
// Types can be recursive. We need to setup a stub
|
||||||
// declaration before recursing.
|
// declaration before recursing.
|
||||||
obj := types.NewTypeName(pos, r.currPkg, name, nil)
|
obj := types.NewTypeName(pos, r.currPkg, name, nil)
|
||||||
named := types.NewNamed(obj, nil, nil)
|
named := types.NewNamed(obj, nil, nil)
|
||||||
|
// Declare obj before calling r.tparamList, so the new type name is recognized
|
||||||
|
// if used in the constraint of one of its own typeparams (see #48280).
|
||||||
r.declare(obj)
|
r.declare(obj)
|
||||||
|
if tag == 'U' {
|
||||||
|
tparams := r.tparamList()
|
||||||
|
typeparams.SetForNamed(named, tparams)
|
||||||
|
}
|
||||||
|
|
||||||
underlying := r.p.typAt(r.uint64(), named).Underlying()
|
underlying := r.p.typAt(r.uint64(), named).Underlying()
|
||||||
named.SetUnderlying(underlying)
|
named.SetUnderlying(underlying)
|
||||||
@ -337,10 +377,46 @@ func (r *importReader) obj(name string) {
|
|||||||
recv := r.param()
|
recv := r.param()
|
||||||
msig := r.signature(recv)
|
msig := r.signature(recv)
|
||||||
|
|
||||||
|
// If the receiver has any targs, set those as the
|
||||||
|
// rparams of the method (since those are the
|
||||||
|
// typeparams being used in the method sig/body).
|
||||||
|
targs := typeparams.NamedTypeArgs(baseType(msig.Recv().Type()))
|
||||||
|
if len(targs) > 0 {
|
||||||
|
rparams := make([]*typeparams.TypeParam, len(targs))
|
||||||
|
for i := range rparams {
|
||||||
|
rparams[i], _ = targs[i].(*typeparams.TypeParam)
|
||||||
|
}
|
||||||
|
typeparams.SetRecvTypeParams(msig, rparams)
|
||||||
|
}
|
||||||
|
|
||||||
named.AddMethod(types.NewFunc(mpos, r.currPkg, mname, msig))
|
named.AddMethod(types.NewFunc(mpos, r.currPkg, mname, msig))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
// We need to "declare" a typeparam in order to have a name that
|
||||||
|
// can be referenced recursively (if needed) in the type param's
|
||||||
|
// bound.
|
||||||
|
if r.p.exportVersion < iexportVersionGenerics {
|
||||||
|
errorf("unexpected type param type")
|
||||||
|
}
|
||||||
|
name0, sub := parseSubscript(name)
|
||||||
|
tn := types.NewTypeName(pos, r.currPkg, name0, nil)
|
||||||
|
t := typeparams.NewTypeParam(tn, nil)
|
||||||
|
if sub == 0 {
|
||||||
|
errorf("missing subscript")
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(rfindley): can we use a different, stable ID?
|
||||||
|
// t.SetId(sub)
|
||||||
|
|
||||||
|
// To handle recursive references to the typeparam within its
|
||||||
|
// bound, save the partial type in tparamIndex before reading the bounds.
|
||||||
|
id := ident{r.currPkg.Name(), name}
|
||||||
|
r.p.tparamIndex[id] = t
|
||||||
|
|
||||||
|
typeparams.SetTypeParamConstraint(t, r.typ())
|
||||||
|
|
||||||
case 'V':
|
case 'V':
|
||||||
typ := r.typ()
|
typ := r.typ()
|
||||||
|
|
||||||
@ -618,6 +694,49 @@ func (r *importReader) doType(base *types.Named) types.Type {
|
|||||||
typ := newInterface(methods, embeddeds)
|
typ := newInterface(methods, embeddeds)
|
||||||
r.p.interfaceList = append(r.p.interfaceList, typ)
|
r.p.interfaceList = append(r.p.interfaceList, typ)
|
||||||
return typ
|
return typ
|
||||||
|
|
||||||
|
case typeParamType:
|
||||||
|
if r.p.exportVersion < iexportVersionGenerics {
|
||||||
|
errorf("unexpected type param type")
|
||||||
|
}
|
||||||
|
pkg, name := r.qualifiedIdent()
|
||||||
|
id := ident{pkg.Name(), name}
|
||||||
|
if t, ok := r.p.tparamIndex[id]; ok {
|
||||||
|
// We're already in the process of importing this typeparam.
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
// Otherwise, import the definition of the typeparam now.
|
||||||
|
r.p.doDecl(pkg, name)
|
||||||
|
return r.p.tparamIndex[id]
|
||||||
|
|
||||||
|
case instanceType:
|
||||||
|
if r.p.exportVersion < iexportVersionGenerics {
|
||||||
|
errorf("unexpected instantiation type")
|
||||||
|
}
|
||||||
|
// pos does not matter for instances: they are positioned on the original
|
||||||
|
// type.
|
||||||
|
_ = r.pos()
|
||||||
|
len := r.uint64()
|
||||||
|
targs := make([]types.Type, len)
|
||||||
|
for i := range targs {
|
||||||
|
targs[i] = r.typ()
|
||||||
|
}
|
||||||
|
baseType := r.typ()
|
||||||
|
// The imported instantiated type doesn't include any methods, so
|
||||||
|
// we must always use the methods of the base (orig) type.
|
||||||
|
// TODO provide a non-nil *Environment
|
||||||
|
t, _ := typeparams.Instantiate(nil, baseType, targs, false)
|
||||||
|
return t
|
||||||
|
|
||||||
|
case unionType:
|
||||||
|
if r.p.exportVersion < iexportVersionGenerics {
|
||||||
|
errorf("unexpected instantiation type")
|
||||||
|
}
|
||||||
|
terms := make([]*typeparams.Term, r.uint64())
|
||||||
|
for i := range terms {
|
||||||
|
terms[i] = typeparams.NewTerm(r.bool(), r.typ())
|
||||||
|
}
|
||||||
|
return typeparams.NewUnion(terms)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,6 +751,20 @@ func (r *importReader) signature(recv *types.Var) *types.Signature {
|
|||||||
return types.NewSignature(recv, params, results, variadic)
|
return types.NewSignature(recv, params, results, variadic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *importReader) tparamList() []*typeparams.TypeParam {
|
||||||
|
n := r.uint64()
|
||||||
|
if n == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
xs := make([]*typeparams.TypeParam, n)
|
||||||
|
for i := range xs {
|
||||||
|
// Note: the standard library importer is tolerant of nil types here,
|
||||||
|
// though would panic in SetTypeParams.
|
||||||
|
xs[i] = r.typ().(*typeparams.TypeParam)
|
||||||
|
}
|
||||||
|
return xs
|
||||||
|
}
|
||||||
|
|
||||||
func (r *importReader) paramList() *types.Tuple {
|
func (r *importReader) paramList() *types.Tuple {
|
||||||
xs := make([]*types.Var, r.uint64())
|
xs := make([]*types.Var, r.uint64())
|
||||||
for i := range xs {
|
for i := range xs {
|
||||||
@ -674,3 +807,33 @@ func (r *importReader) byte() byte {
|
|||||||
}
|
}
|
||||||
return x
|
return x
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func baseType(typ types.Type) *types.Named {
|
||||||
|
// pointer receivers are never types.Named types
|
||||||
|
if p, _ := typ.(*types.Pointer); p != nil {
|
||||||
|
typ = p.Elem()
|
||||||
|
}
|
||||||
|
// receiver base types are always (possibly generic) types.Named types
|
||||||
|
n, _ := typ.(*types.Named)
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseSubscript(name string) (string, uint64) {
|
||||||
|
// Extract the subscript value from the type param name. We export
|
||||||
|
// and import the subscript value, so that all type params have
|
||||||
|
// unique names.
|
||||||
|
sub := uint64(0)
|
||||||
|
startsub := -1
|
||||||
|
for i, r := range name {
|
||||||
|
if '₀' <= r && r < '₀'+10 {
|
||||||
|
if startsub == -1 {
|
||||||
|
startsub = i
|
||||||
|
}
|
||||||
|
sub = sub*10 + uint64(r-'₀')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if startsub >= 0 {
|
||||||
|
name = name[:startsub]
|
||||||
|
}
|
||||||
|
return name, sub
|
||||||
|
}
|
||||||
|
14
vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go
generated
vendored
Normal file
14
vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !go1.18
|
||||||
|
// +build !go1.18
|
||||||
|
|
||||||
|
package gcimporter
|
||||||
|
|
||||||
|
import "go/types"
|
||||||
|
|
||||||
|
func additionalPredeclared() []types.Type {
|
||||||
|
return nil
|
||||||
|
}
|
18
vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go
generated
vendored
Normal file
18
vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build go1.18
|
||||||
|
// +build go1.18
|
||||||
|
|
||||||
|
package gcimporter
|
||||||
|
|
||||||
|
import "go/types"
|
||||||
|
|
||||||
|
// additionalPredeclared returns additional predeclared types in go.1.18.
|
||||||
|
func additionalPredeclared() []types.Type {
|
||||||
|
return []types.Type{
|
||||||
|
// comparable
|
||||||
|
types.Universe.Lookup("comparable").Type(),
|
||||||
|
}
|
||||||
|
}
|
25
vendor/golang.org/x/tools/internal/typeparams/common.go
generated
vendored
Normal file
25
vendor/golang.org/x/tools/internal/typeparams/common.go
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package typeparams provides functions to work indirectly with type parameter
|
||||||
|
// data stored in go/ast and go/types objects, while these API are guarded by a
|
||||||
|
// build constraint.
|
||||||
|
//
|
||||||
|
// This package exists to make it easier for tools to work with generic code,
|
||||||
|
// while also compiling against older Go versions.
|
||||||
|
package typeparams
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/token"
|
||||||
|
)
|
||||||
|
|
||||||
|
// A IndexExprData holds data from both ast.IndexExpr and the new
|
||||||
|
// ast.MultiIndexExpr, which was introduced in Go 1.18.
|
||||||
|
type IndexExprData struct {
|
||||||
|
X ast.Expr // expression
|
||||||
|
Lbrack token.Pos // position of "["
|
||||||
|
Indices []ast.Expr // index expressions
|
||||||
|
Rbrack token.Pos // position of "]"
|
||||||
|
}
|
12
vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go
generated
vendored
Normal file
12
vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !go1.18
|
||||||
|
// +build !go1.18
|
||||||
|
|
||||||
|
package typeparams
|
||||||
|
|
||||||
|
// Enabled reports whether type parameters are enabled in the current build
|
||||||
|
// environment.
|
||||||
|
const Enabled = false
|
15
vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go
generated
vendored
Normal file
15
vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build go1.18
|
||||||
|
// +build go1.18
|
||||||
|
|
||||||
|
package typeparams
|
||||||
|
|
||||||
|
// Note: this constant is in a separate file as this is the only acceptable
|
||||||
|
// diff between the <1.18 API of this package and the 1.18 API.
|
||||||
|
|
||||||
|
// Enabled reports whether type parameters are enabled in the current build
|
||||||
|
// environment.
|
||||||
|
const Enabled = true
|
164
vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
generated
vendored
Normal file
164
vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
generated
vendored
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !go1.18
|
||||||
|
// +build !go1.18
|
||||||
|
|
||||||
|
package typeparams
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func unsupported() {
|
||||||
|
panic("type parameters are unsupported at this go version")
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIndexExprData extracts data from *ast.IndexExpr nodes.
|
||||||
|
// For other nodes, GetIndexExprData returns nil.
|
||||||
|
func GetIndexExprData(n ast.Node) *IndexExprData {
|
||||||
|
if e, _ := n.(*ast.IndexExpr); e != nil {
|
||||||
|
return &IndexExprData{
|
||||||
|
X: e.X,
|
||||||
|
Lbrack: e.Lbrack,
|
||||||
|
Indices: []ast.Expr{e.Index},
|
||||||
|
Rbrack: e.Rbrack,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForTypeDecl returns an empty field list, as type parameters on not supported
|
||||||
|
// at this Go version.
|
||||||
|
func ForTypeDecl(*ast.TypeSpec) *ast.FieldList {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForFuncDecl returns an empty field list, as type parameters are not
|
||||||
|
// supported at this Go version.
|
||||||
|
func ForFuncDecl(*ast.FuncDecl) *ast.FieldList {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TypeParam is a placeholder type, as type parameters are not supported at
|
||||||
|
// this Go version. Its methods panic on use.
|
||||||
|
type TypeParam struct{ types.Type }
|
||||||
|
|
||||||
|
// TypeParamList is a placeholder for an empty type parameter list.
|
||||||
|
type TypeParamList struct{}
|
||||||
|
|
||||||
|
func (*TypeParamList) Len() int { return 0 }
|
||||||
|
func (*TypeParamList) At(int) *TypeParam { unsupported(); return nil }
|
||||||
|
|
||||||
|
// TypeList is a placeholder for an empty type list.
|
||||||
|
type TypeList struct{}
|
||||||
|
|
||||||
|
func (*TypeList) Len() int { return 0 }
|
||||||
|
func (*TypeList) At(int) types.Type { unsupported(); return nil }
|
||||||
|
|
||||||
|
// NewTypeParam is unsupported at this Go version, and panics.
|
||||||
|
func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam {
|
||||||
|
unsupported()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTypeParamConstraint is unsupported at this Go version, and panics.
|
||||||
|
func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) {
|
||||||
|
unsupported()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForSignature returns an empty slice.
|
||||||
|
func ForSignature(*types.Signature) *TypeParamList {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetForSignature panics if tparams is non-empty.
|
||||||
|
func SetForSignature(_ *types.Signature, tparams []*TypeParam) {
|
||||||
|
if len(tparams) > 0 {
|
||||||
|
unsupported()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecvTypeParams returns a nil slice.
|
||||||
|
func RecvTypeParams(sig *types.Signature) *TypeParamList {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRecvTypeParams panics if rparams is non-empty.
|
||||||
|
func SetRecvTypeParams(sig *types.Signature, rparams []*TypeParam) {
|
||||||
|
if len(rparams) > 0 {
|
||||||
|
unsupported()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsComparable returns false, as no interfaces are type-restricted at this Go
|
||||||
|
// version.
|
||||||
|
func IsComparable(*types.Interface) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsConstraint returns false, as no interfaces are type-restricted at this Go
|
||||||
|
// version.
|
||||||
|
func IsConstraint(*types.Interface) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForNamed returns an empty type parameter list, as type parameters are not
|
||||||
|
// supported at this Go version.
|
||||||
|
func ForNamed(*types.Named) *TypeParamList {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetForNamed panics if tparams is non-empty.
|
||||||
|
func SetForNamed(_ *types.Named, tparams []*TypeParam) {
|
||||||
|
if len(tparams) > 0 {
|
||||||
|
unsupported()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NamedTypeArgs extracts the (possibly empty) type argument list from named.
|
||||||
|
func NamedTypeArgs(*types.Named) []types.Type {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Term is a placeholder type, as type parameters are not supported at this Go
|
||||||
|
// version. Its methods panic on use.
|
||||||
|
type Term struct{ types.Type }
|
||||||
|
|
||||||
|
// NewTerm is unsupported at this Go version, and panics.
|
||||||
|
func NewTerm(tilde bool, typ types.Type) *Term {
|
||||||
|
unsupported()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Union is a placeholder type, as type parameters are not supported at this Go
|
||||||
|
// version. Its methods panic on use.
|
||||||
|
type Union struct{ types.Type }
|
||||||
|
|
||||||
|
// NewUnion is unsupported at this Go version, and panics.
|
||||||
|
func NewUnion(terms []*Term) *Union {
|
||||||
|
unsupported()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitInferred is a noop at this Go version.
|
||||||
|
func InitInferred(*types.Info) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInferred returns nothing, as type parameters are not supported at this Go
|
||||||
|
// version.
|
||||||
|
func GetInferred(*types.Info, ast.Expr) ([]types.Type, *types.Signature) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Environment is a placeholder type, as type parameters are not supported at
|
||||||
|
// this Go version.
|
||||||
|
type Environment struct{}
|
||||||
|
|
||||||
|
// Instantiate is unsupported on this Go version, and panics.
|
||||||
|
func Instantiate(env *Environment, typ types.Type, targs []types.Type, validate bool) (types.Type, error) {
|
||||||
|
unsupported()
|
||||||
|
return nil, nil
|
||||||
|
}
|
176
vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
generated
vendored
Normal file
176
vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
generated
vendored
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
// Copyright 2021 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build go1.18
|
||||||
|
// +build go1.18
|
||||||
|
|
||||||
|
package typeparams
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetIndexExprData extracts data from AST nodes that represent index
|
||||||
|
// expressions.
|
||||||
|
//
|
||||||
|
// For an ast.IndexExpr, the resulting IndexExprData will have exactly one
|
||||||
|
// index expression. For an ast.IndexListExpr (go1.18+), it may have a
|
||||||
|
// variable number of index expressions.
|
||||||
|
//
|
||||||
|
// For nodes that don't represent index expressions, GetIndexExprData returns
|
||||||
|
// nil.
|
||||||
|
func GetIndexExprData(n ast.Node) *IndexExprData {
|
||||||
|
switch e := n.(type) {
|
||||||
|
case *ast.IndexExpr:
|
||||||
|
return &IndexExprData{
|
||||||
|
X: e.X,
|
||||||
|
Lbrack: e.Lbrack,
|
||||||
|
Indices: []ast.Expr{e.Index},
|
||||||
|
Rbrack: e.Rbrack,
|
||||||
|
}
|
||||||
|
case *ast.IndexListExpr:
|
||||||
|
return (*IndexExprData)(e)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForTypeDecl returns n.TypeParams.
|
||||||
|
func ForTypeDecl(n *ast.TypeSpec) *ast.FieldList {
|
||||||
|
return n.TypeParams
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForFuncDecl returns n.Type.TypeParams.
|
||||||
|
func ForFuncDecl(n *ast.FuncDecl) *ast.FieldList {
|
||||||
|
if n.Type != nil {
|
||||||
|
return n.Type.TypeParams
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TypeParam is an alias for types.TypeParam
|
||||||
|
type TypeParam = types.TypeParam
|
||||||
|
|
||||||
|
// TypeParamList is an alias for types.TypeParamList
|
||||||
|
type TypeParamList = types.TypeParamList
|
||||||
|
|
||||||
|
// TypeList is an alias for types.TypeList
|
||||||
|
type TypeList = types.TypeList
|
||||||
|
|
||||||
|
// NewTypeParam calls types.NewTypeParam.
|
||||||
|
func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam {
|
||||||
|
return types.NewTypeParam(name, constraint)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTypeParamConstraint calls tparam.SetConstraint(constraint).
|
||||||
|
func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) {
|
||||||
|
tparam.SetConstraint(constraint)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForSignature returns sig.TypeParams()
|
||||||
|
func ForSignature(sig *types.Signature) *TypeParamList {
|
||||||
|
return sig.TypeParams()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetForSignature calls sig.SetTypeParams(tparams)
|
||||||
|
func SetForSignature(sig *types.Signature, tparams []*TypeParam) {
|
||||||
|
sig.SetTypeParams(tparams)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RecvTypeParams returns sig.RecvTypeParams().
|
||||||
|
func RecvTypeParams(sig *types.Signature) *TypeParamList {
|
||||||
|
return sig.RecvTypeParams()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRecvTypeParams calls sig.SetRecvTypeParams(rparams).
|
||||||
|
func SetRecvTypeParams(sig *types.Signature, rparams []*TypeParam) {
|
||||||
|
sig.SetRecvTypeParams(rparams)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsComparable calls iface.IsComparable().
|
||||||
|
func IsComparable(iface *types.Interface) bool {
|
||||||
|
return iface.IsComparable()
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsConstraint calls iface.IsConstraint().
|
||||||
|
func IsConstraint(iface *types.Interface) bool {
|
||||||
|
return iface.IsConstraint()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForNamed extracts the (possibly empty) type parameter object list from
|
||||||
|
// named.
|
||||||
|
func ForNamed(named *types.Named) *TypeParamList {
|
||||||
|
return named.TypeParams()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetForNamed sets the type params tparams on n. Each tparam must be of
|
||||||
|
// dynamic type *types.TypeParam.
|
||||||
|
func SetForNamed(n *types.Named, tparams []*TypeParam) {
|
||||||
|
n.SetTypeParams(tparams)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NamedTypeArgs extracts the (possibly empty) type argument list from named.
|
||||||
|
func NamedTypeArgs(named *types.Named) []types.Type {
|
||||||
|
targs := named.TypeArgs()
|
||||||
|
numArgs := targs.Len()
|
||||||
|
|
||||||
|
typs := make([]types.Type, numArgs)
|
||||||
|
for i := 0; i < numArgs; i++ {
|
||||||
|
typs[i] = targs.At(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return typs
|
||||||
|
}
|
||||||
|
|
||||||
|
// Term is an alias for types.Term.
|
||||||
|
type Term = types.Term
|
||||||
|
|
||||||
|
// NewTerm calls types.NewTerm.
|
||||||
|
func NewTerm(tilde bool, typ types.Type) *Term {
|
||||||
|
return types.NewTerm(tilde, typ)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Union is an alias for types.Union
|
||||||
|
type Union = types.Union
|
||||||
|
|
||||||
|
// NewUnion calls types.NewUnion.
|
||||||
|
func NewUnion(terms []*Term) *Union {
|
||||||
|
return types.NewUnion(terms)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitInferred initializes info to record inferred type information.
|
||||||
|
func InitInferred(info *types.Info) {
|
||||||
|
info.Inferred = make(map[ast.Expr]types.Inferred)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInferred extracts inferred type information from info for e.
|
||||||
|
//
|
||||||
|
// The expression e may have an inferred type if it is an *ast.IndexExpr
|
||||||
|
// representing partial instantiation of a generic function type for which type
|
||||||
|
// arguments have been inferred using constraint type inference, or if it is an
|
||||||
|
// *ast.CallExpr for which type type arguments have be inferred using both
|
||||||
|
// constraint type inference and function argument inference.
|
||||||
|
func GetInferred(info *types.Info, e ast.Expr) ([]types.Type, *types.Signature) {
|
||||||
|
if info.Inferred == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
inf := info.Inferred[e]
|
||||||
|
|
||||||
|
length := inf.TArgs.Len()
|
||||||
|
|
||||||
|
typs := make([]types.Type, length)
|
||||||
|
for i := 0; i < length; i++ {
|
||||||
|
typs[i] = inf.TArgs.At(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return typs, inf.Sig
|
||||||
|
}
|
||||||
|
|
||||||
|
// Environment is an alias for types.Environment.
|
||||||
|
type Environment = types.Environment
|
||||||
|
|
||||||
|
// Instantiate calls types.Instantiate.
|
||||||
|
func Instantiate(env *Environment, typ types.Type, targs []types.Type, validate bool) (types.Type, error) {
|
||||||
|
return types.Instantiate(env, typ, targs, validate)
|
||||||
|
}
|
7
vendor/modules.txt
vendored
7
vendor/modules.txt
vendored
@ -185,14 +185,14 @@ github.com/spf13/viper
|
|||||||
github.com/subosito/gotenv
|
github.com/subosito/gotenv
|
||||||
# golang.org/x/mod v0.4.2
|
# golang.org/x/mod v0.4.2
|
||||||
golang.org/x/mod/semver
|
golang.org/x/mod/semver
|
||||||
# golang.org/x/net v0.0.0-20210525063256-abc453219eb5
|
# golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d
|
||||||
golang.org/x/net/internal/socks
|
golang.org/x/net/internal/socks
|
||||||
golang.org/x/net/proxy
|
golang.org/x/net/proxy
|
||||||
# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
golang.org/x/sync/semaphore
|
golang.org/x/sync/semaphore
|
||||||
# golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
|
# golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e
|
||||||
golang.org/x/sys/execabs
|
golang.org/x/sys/execabs
|
||||||
golang.org/x/sys/internal/unsafeheader
|
golang.org/x/sys/internal/unsafeheader
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
@ -202,7 +202,7 @@ golang.org/x/text/transform
|
|||||||
golang.org/x/text/unicode/norm
|
golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
|
# golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
|
||||||
## explicit
|
## explicit
|
||||||
# golang.org/x/tools v0.1.5
|
# golang.org/x/tools v0.1.6
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/tools/go/gcexportdata
|
golang.org/x/tools/go/gcexportdata
|
||||||
golang.org/x/tools/go/internal/gcimporter
|
golang.org/x/tools/go/internal/gcimporter
|
||||||
@ -214,6 +214,7 @@ golang.org/x/tools/internal/event/keys
|
|||||||
golang.org/x/tools/internal/event/label
|
golang.org/x/tools/internal/event/label
|
||||||
golang.org/x/tools/internal/gocommand
|
golang.org/x/tools/internal/gocommand
|
||||||
golang.org/x/tools/internal/packagesinternal
|
golang.org/x/tools/internal/packagesinternal
|
||||||
|
golang.org/x/tools/internal/typeparams
|
||||||
golang.org/x/tools/internal/typesinternal
|
golang.org/x/tools/internal/typesinternal
|
||||||
# golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
|
# golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
|
||||||
golang.org/x/xerrors
|
golang.org/x/xerrors
|
||||||
|
Loading…
x
Reference in New Issue
Block a user