mirror of
https://github.com/containers/skopeo.git
synced 2025-07-13 06:24:39 +00:00
Merge pull request #2099 from containers/renovate/github.com-containers-image-v5-digest
fix(deps): update github.com/containers/image/v5 digest to 58d5eb6
This commit is contained in:
commit
9f78a09395
23
go.mod
23
go.mod
@ -4,7 +4,7 @@ go 1.19
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/containers/common v0.55.4
|
github.com/containers/common v0.55.4
|
||||||
github.com/containers/image/v5 v5.27.1-0.20230814071742-35192da58823
|
github.com/containers/image/v5 v5.27.1-0.20230904180722-58d5eb632da1
|
||||||
github.com/containers/ocicrypt v1.1.8
|
github.com/containers/ocicrypt v1.1.8
|
||||||
github.com/containers/storage v1.49.0
|
github.com/containers/storage v1.49.0
|
||||||
github.com/docker/distribution v2.8.2+incompatible
|
github.com/docker/distribution v2.8.2+incompatible
|
||||||
@ -16,8 +16,8 @@ require (
|
|||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.8.4
|
||||||
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
||||||
golang.org/x/exp v0.0.0-20230810033253-352e893a4cad
|
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63
|
||||||
golang.org/x/term v0.11.0
|
golang.org/x/term v0.12.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ require (
|
|||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/google/go-containerregistry v0.16.1 // indirect
|
github.com/google/go-containerregistry v0.16.1 // indirect
|
||||||
github.com/google/go-intervals v0.0.2 // indirect
|
github.com/google/go-intervals v0.0.2 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.3.1 // indirect
|
||||||
github.com/gorilla/mux v1.8.0 // indirect
|
github.com/gorilla/mux v1.8.0 // indirect
|
||||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||||
@ -73,7 +73,7 @@ require (
|
|||||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
github.com/letsencrypt/boulder v0.0.0-20230213213521-fdfea0d469b6 // indirect
|
github.com/letsencrypt/boulder v0.0.0-20230213213521-fdfea0d469b6 // indirect
|
||||||
github.com/mailru/easyjson v0.7.7 // indirect
|
github.com/mailru/easyjson v0.7.7 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.14 // indirect
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
github.com/mattn/go-shellwords v1.0.12 // indirect
|
github.com/mattn/go-shellwords v1.0.12 // indirect
|
||||||
github.com/miekg/pkcs11 v1.1.1 // indirect
|
github.com/miekg/pkcs11 v1.1.1 // indirect
|
||||||
github.com/mistifyio/go-zfs/v3 v3.0.1 // indirect
|
github.com/mistifyio/go-zfs/v3 v3.0.1 // indirect
|
||||||
@ -92,19 +92,20 @@ require (
|
|||||||
github.com/proglottis/gpgme v0.1.3 // indirect
|
github.com/proglottis/gpgme v0.1.3 // indirect
|
||||||
github.com/rivo/uniseg v0.4.4 // indirect
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
github.com/russross/blackfriday v2.0.0+incompatible // indirect
|
github.com/russross/blackfriday v2.0.0+incompatible // indirect
|
||||||
|
github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect
|
||||||
github.com/segmentio/ksuid v1.0.4 // indirect
|
github.com/segmentio/ksuid v1.0.4 // indirect
|
||||||
github.com/sigstore/fulcio v1.4.0 // indirect
|
github.com/sigstore/fulcio v1.4.0 // indirect
|
||||||
github.com/sigstore/rekor v1.2.2 // indirect
|
github.com/sigstore/rekor v1.2.2 // indirect
|
||||||
github.com/sigstore/sigstore v1.7.2 // indirect
|
github.com/sigstore/sigstore v1.7.3 // indirect
|
||||||
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
|
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
|
||||||
github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 // indirect
|
github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 // indirect
|
||||||
github.com/sylabs/sif/v2 v2.12.0 // indirect
|
github.com/sylabs/sif/v2 v2.13.0 // indirect
|
||||||
github.com/tchap/go-patricia/v2 v2.3.1 // indirect
|
github.com/tchap/go-patricia/v2 v2.3.1 // indirect
|
||||||
github.com/theupdateframework/go-tuf v0.5.2 // indirect
|
github.com/theupdateframework/go-tuf v0.5.2 // indirect
|
||||||
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
|
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.11 // indirect
|
github.com/ulikunitz/xz v0.5.11 // indirect
|
||||||
github.com/vbatts/tar-split v0.11.5 // indirect
|
github.com/vbatts/tar-split v0.11.5 // indirect
|
||||||
github.com/vbauerster/mpb/v8 v8.5.2 // indirect
|
github.com/vbauerster/mpb/v8 v8.6.1 // indirect
|
||||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
|
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
|
||||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||||
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
|
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
|
||||||
@ -116,13 +117,13 @@ require (
|
|||||||
go.opentelemetry.io/otel/metric v1.16.0 // indirect
|
go.opentelemetry.io/otel/metric v1.16.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.16.0 // indirect
|
go.opentelemetry.io/otel/trace v1.16.0 // indirect
|
||||||
golang.org/x/crypto v0.12.0 // indirect
|
golang.org/x/crypto v0.12.0 // indirect
|
||||||
golang.org/x/mod v0.11.0 // indirect
|
golang.org/x/mod v0.12.0 // indirect
|
||||||
golang.org/x/net v0.14.0 // indirect
|
golang.org/x/net v0.14.0 // indirect
|
||||||
golang.org/x/oauth2 v0.11.0 // indirect
|
golang.org/x/oauth2 v0.11.0 // indirect
|
||||||
golang.org/x/sync v0.3.0 // indirect
|
golang.org/x/sync v0.3.0 // indirect
|
||||||
golang.org/x/sys v0.11.0 // indirect
|
golang.org/x/sys v0.12.0 // indirect
|
||||||
golang.org/x/text v0.12.0 // indirect
|
golang.org/x/text v0.12.0 // indirect
|
||||||
golang.org/x/tools v0.9.3 // indirect
|
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
|
||||||
google.golang.org/grpc v1.56.2 // indirect
|
google.golang.org/grpc v1.56.2 // indirect
|
||||||
|
48
go.sum
48
go.sum
@ -32,8 +32,8 @@ github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSk
|
|||||||
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
|
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
|
||||||
github.com/containers/common v0.55.4 h1:7IxB/G5qtDU+rp1YiVWkDpd+ZC4ZlCQ7k2jZJYkB/R8=
|
github.com/containers/common v0.55.4 h1:7IxB/G5qtDU+rp1YiVWkDpd+ZC4ZlCQ7k2jZJYkB/R8=
|
||||||
github.com/containers/common v0.55.4/go.mod h1:5mVCpfMBWyO+zaD7Fw+DBHFa42YFKROwle1qpEKcX3U=
|
github.com/containers/common v0.55.4/go.mod h1:5mVCpfMBWyO+zaD7Fw+DBHFa42YFKROwle1qpEKcX3U=
|
||||||
github.com/containers/image/v5 v5.27.1-0.20230814071742-35192da58823 h1:6NtRG/T1HcerlVS5lK/VjA8A8oSKdWZEcbXnd6PIE6k=
|
github.com/containers/image/v5 v5.27.1-0.20230904180722-58d5eb632da1 h1:d2dEVBX3002LQ0VJCtL0DZO3njNad3cUuuBoghhQN0M=
|
||||||
github.com/containers/image/v5 v5.27.1-0.20230814071742-35192da58823/go.mod h1:DMgY2TJ+xxLkzBFqxS5I6TtG36wYL4R/Yy+G76gDhZk=
|
github.com/containers/image/v5 v5.27.1-0.20230904180722-58d5eb632da1/go.mod h1:vh4ycAvMEPDZsJrPy8ZJ3nRzORfd047Eu/oagmf1O50=
|
||||||
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
|
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
|
||||||
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
|
||||||
github.com/containers/ocicrypt v1.1.8 h1:saSBF0/8DyPUjzcxMVzL2OBUWCkvRvqIm75pu0ADSZk=
|
github.com/containers/ocicrypt v1.1.8 h1:saSBF0/8DyPUjzcxMVzL2OBUWCkvRvqIm75pu0ADSZk=
|
||||||
@ -116,7 +116,7 @@ github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogB
|
|||||||
github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
|
||||||
github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU=
|
github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU=
|
||||||
github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
|
||||||
github.com/go-rod/rod v0.114.2 h1:Qwt+vZHHnb117zc0q+XjhAJCkB01hchWSxH/raCyLb4=
|
github.com/go-rod/rod v0.114.3 h1:gAUT2Bc2wy0tQL5KEet05HNDvmndaHAGCjQ01TB2efA=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||||
github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
|
github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
|
||||||
@ -183,8 +183,8 @@ github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBx
|
|||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
||||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
@ -238,8 +238,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
|
|||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
||||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
||||||
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
|
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||||
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
|
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
|
||||||
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
|
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||||
@ -307,6 +307,8 @@ github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT
|
|||||||
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
|
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
|
||||||
|
github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg=
|
||||||
|
github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI=
|
||||||
github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c=
|
github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c=
|
||||||
github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE=
|
github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE=
|
||||||
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
|
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
|
||||||
@ -315,8 +317,8 @@ github.com/sigstore/fulcio v1.4.0 h1:05+k8BFvwTQzfCkVxESWzCN4b70KIRliGYz0Upmdrs8
|
|||||||
github.com/sigstore/fulcio v1.4.0/go.mod h1:wcjlktbhoy6+ZTxO3yXpvqUxsLV+JEH4FF3a5Jz4VPI=
|
github.com/sigstore/fulcio v1.4.0/go.mod h1:wcjlktbhoy6+ZTxO3yXpvqUxsLV+JEH4FF3a5Jz4VPI=
|
||||||
github.com/sigstore/rekor v1.2.2 h1:5JK/zKZvcQpL/jBmHvmFj3YbpDMBQnJQ6ygp8xdF3bY=
|
github.com/sigstore/rekor v1.2.2 h1:5JK/zKZvcQpL/jBmHvmFj3YbpDMBQnJQ6ygp8xdF3bY=
|
||||||
github.com/sigstore/rekor v1.2.2/go.mod h1:FGnWBGWzeNceJnp0x9eDFd41mI8aQqCjj+Zp0IEs0Qg=
|
github.com/sigstore/rekor v1.2.2/go.mod h1:FGnWBGWzeNceJnp0x9eDFd41mI8aQqCjj+Zp0IEs0Qg=
|
||||||
github.com/sigstore/sigstore v1.7.2 h1:MY0wSOhKWa8SIWSCO9SzFnUl+b7jbthgXHJpuUg31Qs=
|
github.com/sigstore/sigstore v1.7.3 h1:HVVTfrMezJeLyl2xhJ8edzkrEGBa4KxjQZB4FlQ4JLU=
|
||||||
github.com/sigstore/sigstore v1.7.2/go.mod h1:2IPD5YXrXoznfnIoVsDF7ARC1Nha8xIdLpsC4kEQh5w=
|
github.com/sigstore/sigstore v1.7.3/go.mod h1:cl0c7Dtg3MM3c13L8pqqrfrmBa0eM3POcdtBepjylmw=
|
||||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||||
@ -345,8 +347,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
|||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/sylabs/sif/v2 v2.12.0 h1:mghM4elFasymxIWYZ8q/eLnDRMOOhRrrKLrEceVQm08=
|
github.com/sylabs/sif/v2 v2.13.0 h1:dK/PQ/ohLAA4hptbjNuU0qoqkJ9Kl07hiSHArMNSKsQ=
|
||||||
github.com/sylabs/sif/v2 v2.12.0/go.mod h1:Gn6bQvH4q4CH2h8BR9Qkuc1LvhYsfhOxCU7U6gS8jto=
|
github.com/sylabs/sif/v2 v2.13.0/go.mod h1:qEFrmE29XNbW2uyBagTsw9dgM82MwsckNYUFPweF2ek=
|
||||||
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
|
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
|
||||||
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
|
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
|
||||||
github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes=
|
github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes=
|
||||||
@ -362,8 +364,8 @@ github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
|
|||||||
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
|
github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
|
||||||
github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
|
github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
|
||||||
github.com/vbauerster/mpb/v8 v8.5.2 h1:zanzt1cZpSEG5uGNYKcv43+97f0IgEnXpuBFaMxKbM0=
|
github.com/vbauerster/mpb/v8 v8.6.1 h1:XbBpIbJxJOO9yMcKPpI4oEFPW6tLAptefNQJNcGWri8=
|
||||||
github.com/vbauerster/mpb/v8 v8.5.2/go.mod h1:YqKyR4ZR6Gd34yD3cDHPMmQxc+uUQMwjgO/LkxiJQ6I=
|
github.com/vbauerster/mpb/v8 v8.6.1/go.mod h1:S0tuIjikxlLxCeNijNhwAuD/BB3UE/d2nygG8SOldk0=
|
||||||
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
|
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
|
||||||
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
|
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||||
@ -416,15 +418,15 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
|
|||||||
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
|
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
|
||||||
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU=
|
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ=
|
||||||
golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
|
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
|
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
|
||||||
golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@ -467,11 +469,11 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
|
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.12.0/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/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
|
golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
|
||||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||||
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=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
@ -493,8 +495,8 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw
|
|||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
|
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E=
|
||||||
golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
|
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
|
||||||
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=
|
||||||
|
2
vendor/github.com/containers/image/v5/signature/sigstore/copied.go
generated
vendored
2
vendor/github.com/containers/image/v5/signature/sigstore/copied.go
generated
vendored
@ -10,9 +10,9 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/secure-systems-lab/go-securesystemslib/encrypted"
|
||||||
"github.com/sigstore/sigstore/pkg/cryptoutils"
|
"github.com/sigstore/sigstore/pkg/cryptoutils"
|
||||||
"github.com/sigstore/sigstore/pkg/signature"
|
"github.com/sigstore/sigstore/pkg/signature"
|
||||||
"github.com/theupdateframework/go-tuf/encrypted"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// The following code was copied from github.com/sigstore.
|
// The following code was copied from github.com/sigstore.
|
||||||
|
9
vendor/github.com/google/uuid/.travis.yml
generated
vendored
9
vendor/github.com/google/uuid/.travis.yml
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
language: go
|
|
||||||
|
|
||||||
go:
|
|
||||||
- 1.4.3
|
|
||||||
- 1.5.3
|
|
||||||
- tip
|
|
||||||
|
|
||||||
script:
|
|
||||||
- go test -v ./...
|
|
10
vendor/github.com/google/uuid/CHANGELOG.md
generated
vendored
Normal file
10
vendor/github.com/google/uuid/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0))
|
||||||
|
|
||||||
|
## Changelog
|
16
vendor/github.com/google/uuid/CONTRIBUTING.md
generated
vendored
16
vendor/github.com/google/uuid/CONTRIBUTING.md
generated
vendored
@ -2,6 +2,22 @@
|
|||||||
|
|
||||||
We definitely welcome patches and contribution to this project!
|
We definitely welcome patches and contribution to this project!
|
||||||
|
|
||||||
|
### Tips
|
||||||
|
|
||||||
|
Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org).
|
||||||
|
|
||||||
|
Always try to include a test case! If it is not possible or not necessary,
|
||||||
|
please explain why in the pull request description.
|
||||||
|
|
||||||
|
### Releasing
|
||||||
|
|
||||||
|
Commits that would precipitate a SemVer change, as desrcibed in the Conventional
|
||||||
|
Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action)
|
||||||
|
to create a release candidate pull request. Once submitted, `release-please`
|
||||||
|
will create a release.
|
||||||
|
|
||||||
|
For tips on how to work with `release-please`, see its documentation.
|
||||||
|
|
||||||
### Legal requirements
|
### Legal requirements
|
||||||
|
|
||||||
In order to protect both you and ourselves, you will need to sign the
|
In order to protect both you and ourselves, you will need to sign the
|
||||||
|
10
vendor/github.com/google/uuid/README.md
generated
vendored
10
vendor/github.com/google/uuid/README.md
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
# uuid 
|
# uuid
|
||||||
The uuid package generates and inspects UUIDs based on
|
The uuid package generates and inspects UUIDs based on
|
||||||
[RFC 4122](http://tools.ietf.org/html/rfc4122)
|
[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122)
|
||||||
and DCE 1.1: Authentication and Security Services.
|
and DCE 1.1: Authentication and Security Services.
|
||||||
|
|
||||||
This package is based on the github.com/pborman/uuid package (previously named
|
This package is based on the github.com/pborman/uuid package (previously named
|
||||||
@ -9,10 +9,12 @@ a UUID is a 16 byte array rather than a byte slice. One loss due to this
|
|||||||
change is the ability to represent an invalid UUID (vs a NIL UUID).
|
change is the ability to represent an invalid UUID (vs a NIL UUID).
|
||||||
|
|
||||||
###### Install
|
###### Install
|
||||||
`go get github.com/google/uuid`
|
```sh
|
||||||
|
go get github.com/google/uuid
|
||||||
|
```
|
||||||
|
|
||||||
###### Documentation
|
###### Documentation
|
||||||
[](http://godoc.org/github.com/google/uuid)
|
[](https://pkg.go.dev/github.com/google/uuid)
|
||||||
|
|
||||||
Full `go doc` style documentation for the package can be viewed online without
|
Full `go doc` style documentation for the package can be viewed online without
|
||||||
installing this package by using the GoDoc site here:
|
installing this package by using the GoDoc site here:
|
||||||
|
2
vendor/github.com/google/uuid/node_js.go
generated
vendored
2
vendor/github.com/google/uuid/node_js.go
generated
vendored
@ -7,6 +7,6 @@
|
|||||||
package uuid
|
package uuid
|
||||||
|
|
||||||
// getHardwareInterface returns nil values for the JS version of the code.
|
// getHardwareInterface returns nil values for the JS version of the code.
|
||||||
// This remvoves the "net" dependency, because it is not used in the browser.
|
// This removes the "net" dependency, because it is not used in the browser.
|
||||||
// Using the "net" library inflates the size of the transpiled JS code by 673k bytes.
|
// Using the "net" library inflates the size of the transpiled JS code by 673k bytes.
|
||||||
func getHardwareInterface(name string) (string, []byte) { return "", nil }
|
func getHardwareInterface(name string) (string, []byte) { return "", nil }
|
||||||
|
10
vendor/github.com/google/uuid/uuid.go
generated
vendored
10
vendor/github.com/google/uuid/uuid.go
generated
vendored
@ -69,7 +69,7 @@ func Parse(s string) (UUID, error) {
|
|||||||
|
|
||||||
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||||
case 36 + 9:
|
case 36 + 9:
|
||||||
if strings.ToLower(s[:9]) != "urn:uuid:" {
|
if !strings.EqualFold(s[:9], "urn:uuid:") {
|
||||||
return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9])
|
return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9])
|
||||||
}
|
}
|
||||||
s = s[9:]
|
s = s[9:]
|
||||||
@ -101,7 +101,8 @@ func Parse(s string) (UUID, error) {
|
|||||||
9, 11,
|
9, 11,
|
||||||
14, 16,
|
14, 16,
|
||||||
19, 21,
|
19, 21,
|
||||||
24, 26, 28, 30, 32, 34} {
|
24, 26, 28, 30, 32, 34,
|
||||||
|
} {
|
||||||
v, ok := xtob(s[x], s[x+1])
|
v, ok := xtob(s[x], s[x+1])
|
||||||
if !ok {
|
if !ok {
|
||||||
return uuid, errors.New("invalid UUID format")
|
return uuid, errors.New("invalid UUID format")
|
||||||
@ -117,7 +118,7 @@ func ParseBytes(b []byte) (UUID, error) {
|
|||||||
switch len(b) {
|
switch len(b) {
|
||||||
case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||||
case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||||
if !bytes.Equal(bytes.ToLower(b[:9]), []byte("urn:uuid:")) {
|
if !bytes.EqualFold(b[:9], []byte("urn:uuid:")) {
|
||||||
return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9])
|
return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9])
|
||||||
}
|
}
|
||||||
b = b[9:]
|
b = b[9:]
|
||||||
@ -145,7 +146,8 @@ func ParseBytes(b []byte) (UUID, error) {
|
|||||||
9, 11,
|
9, 11,
|
||||||
14, 16,
|
14, 16,
|
||||||
19, 21,
|
19, 21,
|
||||||
24, 26, 28, 30, 32, 34} {
|
24, 26, 28, 30, 32, 34,
|
||||||
|
} {
|
||||||
v, ok := xtob(b[x], b[x+1])
|
v, ok := xtob(b[x], b[x+1])
|
||||||
if !ok {
|
if !ok {
|
||||||
return uuid, errors.New("invalid UUID format")
|
return uuid, errors.New("invalid UUID format")
|
||||||
|
21
vendor/github.com/secure-systems-lab/go-securesystemslib/LICENSE
generated
vendored
Normal file
21
vendor/github.com/secure-systems-lab/go-securesystemslib/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2021 NYU Secure Systems Lab
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
290
vendor/github.com/secure-systems-lab/go-securesystemslib/encrypted/encrypted.go
generated
vendored
Normal file
290
vendor/github.com/secure-systems-lab/go-securesystemslib/encrypted/encrypted.go
generated
vendored
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
// Package encrypted provides a simple, secure system for encrypting data
|
||||||
|
// symmetrically with a passphrase.
|
||||||
|
//
|
||||||
|
// It uses scrypt derive a key from the passphrase and the NaCl secret box
|
||||||
|
// cipher for authenticated encryption.
|
||||||
|
package encrypted
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"golang.org/x/crypto/nacl/secretbox"
|
||||||
|
"golang.org/x/crypto/scrypt"
|
||||||
|
)
|
||||||
|
|
||||||
|
const saltSize = 32
|
||||||
|
|
||||||
|
const (
|
||||||
|
boxKeySize = 32
|
||||||
|
boxNonceSize = 24
|
||||||
|
)
|
||||||
|
|
||||||
|
// KDFParameterStrength defines the KDF parameter strength level to be used for
|
||||||
|
// encryption key derivation.
|
||||||
|
type KDFParameterStrength uint8
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Legacy defines legacy scrypt parameters (N:2^15, r:8, p:1)
|
||||||
|
Legacy KDFParameterStrength = iota + 1
|
||||||
|
// Standard defines standard scrypt parameters which is focusing 100ms of computation (N:2^16, r:8, p:1)
|
||||||
|
Standard
|
||||||
|
// OWASP defines OWASP recommended scrypt parameters (N:2^17, r:8, p:1)
|
||||||
|
OWASP
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// legacyParams represents old scrypt derivation parameters for backward
|
||||||
|
// compatibility.
|
||||||
|
legacyParams = scryptParams{
|
||||||
|
N: 32768, // 2^15
|
||||||
|
R: 8,
|
||||||
|
P: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
// standardParams defines scrypt parameters based on the scrypt creator
|
||||||
|
// recommendation to limit key derivation in time boxed to 100ms.
|
||||||
|
standardParams = scryptParams{
|
||||||
|
N: 65536, // 2^16
|
||||||
|
R: 8,
|
||||||
|
P: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
// owaspParams defines scrypt parameters recommended by OWASP
|
||||||
|
owaspParams = scryptParams{
|
||||||
|
N: 131072, // 2^17
|
||||||
|
R: 8,
|
||||||
|
P: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
// defaultParams defines scrypt parameters which will be used to generate a
|
||||||
|
// new key.
|
||||||
|
defaultParams = standardParams
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
nameScrypt = "scrypt"
|
||||||
|
nameSecretBox = "nacl/secretbox"
|
||||||
|
)
|
||||||
|
|
||||||
|
type data struct {
|
||||||
|
KDF scryptKDF `json:"kdf"`
|
||||||
|
Cipher secretBoxCipher `json:"cipher"`
|
||||||
|
Ciphertext []byte `json:"ciphertext"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type scryptParams struct {
|
||||||
|
N int `json:"N"`
|
||||||
|
R int `json:"r"`
|
||||||
|
P int `json:"p"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sp *scryptParams) Equal(in *scryptParams) bool {
|
||||||
|
return in != nil && sp.N == in.N && sp.P == in.P && sp.R == in.R
|
||||||
|
}
|
||||||
|
|
||||||
|
func newScryptKDF(level KDFParameterStrength) (scryptKDF, error) {
|
||||||
|
salt := make([]byte, saltSize)
|
||||||
|
if err := fillRandom(salt); err != nil {
|
||||||
|
return scryptKDF{}, fmt.Errorf("unable to generate a random salt: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var params scryptParams
|
||||||
|
switch level {
|
||||||
|
case Legacy:
|
||||||
|
params = legacyParams
|
||||||
|
case Standard:
|
||||||
|
params = standardParams
|
||||||
|
case OWASP:
|
||||||
|
params = owaspParams
|
||||||
|
default:
|
||||||
|
// Fallback to default parameters
|
||||||
|
params = defaultParams
|
||||||
|
}
|
||||||
|
|
||||||
|
return scryptKDF{
|
||||||
|
Name: nameScrypt,
|
||||||
|
Params: params,
|
||||||
|
Salt: salt,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type scryptKDF struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Params scryptParams `json:"params"`
|
||||||
|
Salt []byte `json:"salt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *scryptKDF) Key(passphrase []byte) ([]byte, error) {
|
||||||
|
return scrypt.Key(passphrase, s.Salt, s.Params.N, s.Params.R, s.Params.P, boxKeySize)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckParams checks that the encoded KDF parameters are what we expect them to
|
||||||
|
// be. If we do not do this, an attacker could cause a DoS by tampering with
|
||||||
|
// them.
|
||||||
|
func (s *scryptKDF) CheckParams() error {
|
||||||
|
switch {
|
||||||
|
case legacyParams.Equal(&s.Params):
|
||||||
|
case standardParams.Equal(&s.Params):
|
||||||
|
case owaspParams.Equal(&s.Params):
|
||||||
|
default:
|
||||||
|
return errors.New("unsupported scrypt parameters")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func newSecretBoxCipher() (secretBoxCipher, error) {
|
||||||
|
nonce := make([]byte, boxNonceSize)
|
||||||
|
if err := fillRandom(nonce); err != nil {
|
||||||
|
return secretBoxCipher{}, err
|
||||||
|
}
|
||||||
|
return secretBoxCipher{
|
||||||
|
Name: nameSecretBox,
|
||||||
|
Nonce: nonce,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type secretBoxCipher struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Nonce []byte `json:"nonce"`
|
||||||
|
|
||||||
|
encrypted bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *secretBoxCipher) Encrypt(plaintext, key []byte) []byte {
|
||||||
|
var keyBytes [boxKeySize]byte
|
||||||
|
var nonceBytes [boxNonceSize]byte
|
||||||
|
|
||||||
|
if len(key) != len(keyBytes) {
|
||||||
|
panic("incorrect key size")
|
||||||
|
}
|
||||||
|
if len(s.Nonce) != len(nonceBytes) {
|
||||||
|
panic("incorrect nonce size")
|
||||||
|
}
|
||||||
|
|
||||||
|
copy(keyBytes[:], key)
|
||||||
|
copy(nonceBytes[:], s.Nonce)
|
||||||
|
|
||||||
|
// ensure that we don't re-use nonces
|
||||||
|
if s.encrypted {
|
||||||
|
panic("Encrypt must only be called once for each cipher instance")
|
||||||
|
}
|
||||||
|
s.encrypted = true
|
||||||
|
|
||||||
|
return secretbox.Seal(nil, plaintext, &nonceBytes, &keyBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *secretBoxCipher) Decrypt(ciphertext, key []byte) ([]byte, error) {
|
||||||
|
var keyBytes [boxKeySize]byte
|
||||||
|
var nonceBytes [boxNonceSize]byte
|
||||||
|
|
||||||
|
if len(key) != len(keyBytes) {
|
||||||
|
panic("incorrect key size")
|
||||||
|
}
|
||||||
|
if len(s.Nonce) != len(nonceBytes) {
|
||||||
|
// return an error instead of panicking since the nonce is user input
|
||||||
|
return nil, errors.New("encrypted: incorrect nonce size")
|
||||||
|
}
|
||||||
|
|
||||||
|
copy(keyBytes[:], key)
|
||||||
|
copy(nonceBytes[:], s.Nonce)
|
||||||
|
|
||||||
|
res, ok := secretbox.Open(nil, ciphertext, &nonceBytes, &keyBytes)
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("encrypted: decryption failed")
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encrypt takes a passphrase and plaintext, and returns a JSON object
|
||||||
|
// containing ciphertext and the details necessary to decrypt it.
|
||||||
|
func Encrypt(plaintext, passphrase []byte) ([]byte, error) {
|
||||||
|
return EncryptWithCustomKDFParameters(plaintext, passphrase, Standard)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EncryptWithCustomKDFParameters takes a passphrase, the plaintext and a KDF
|
||||||
|
// parameter level (Legacy, Standard, or OWASP), and returns a JSON object
|
||||||
|
// containing ciphertext and the details necessary to decrypt it.
|
||||||
|
func EncryptWithCustomKDFParameters(plaintext, passphrase []byte, kdfLevel KDFParameterStrength) ([]byte, error) {
|
||||||
|
k, err := newScryptKDF(kdfLevel)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
key, err := k.Key(passphrase)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c, err := newSecretBoxCipher()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
data := &data{
|
||||||
|
KDF: k,
|
||||||
|
Cipher: c,
|
||||||
|
}
|
||||||
|
data.Ciphertext = c.Encrypt(plaintext, key)
|
||||||
|
|
||||||
|
return json.Marshal(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marshal encrypts the JSON encoding of v using passphrase.
|
||||||
|
func Marshal(v interface{}, passphrase []byte) ([]byte, error) {
|
||||||
|
return MarshalWithCustomKDFParameters(v, passphrase, Standard)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalWithCustomKDFParameters encrypts the JSON encoding of v using passphrase.
|
||||||
|
func MarshalWithCustomKDFParameters(v interface{}, passphrase []byte, kdfLevel KDFParameterStrength) ([]byte, error) {
|
||||||
|
data, err := json.MarshalIndent(v, "", "\t")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return EncryptWithCustomKDFParameters(data, passphrase, kdfLevel)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decrypt takes a JSON-encoded ciphertext object encrypted using Encrypt and
|
||||||
|
// tries to decrypt it using passphrase. If successful, it returns the
|
||||||
|
// plaintext.
|
||||||
|
func Decrypt(ciphertext, passphrase []byte) ([]byte, error) {
|
||||||
|
data := &data{}
|
||||||
|
if err := json.Unmarshal(ciphertext, data); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if data.KDF.Name != nameScrypt {
|
||||||
|
return nil, fmt.Errorf("encrypted: unknown kdf name %q", data.KDF.Name)
|
||||||
|
}
|
||||||
|
if data.Cipher.Name != nameSecretBox {
|
||||||
|
return nil, fmt.Errorf("encrypted: unknown cipher name %q", data.Cipher.Name)
|
||||||
|
}
|
||||||
|
if err := data.KDF.CheckParams(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
key, err := data.KDF.Key(passphrase)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return data.Cipher.Decrypt(data.Ciphertext, key)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal decrypts the data using passphrase and unmarshals the resulting
|
||||||
|
// plaintext into the value pointed to by v.
|
||||||
|
func Unmarshal(data []byte, v interface{}, passphrase []byte) error {
|
||||||
|
decrypted, err := Decrypt(data, passphrase)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return json.Unmarshal(decrypted, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func fillRandom(b []byte) error {
|
||||||
|
_, err := io.ReadFull(rand.Reader, b)
|
||||||
|
return err
|
||||||
|
}
|
1
vendor/github.com/sylabs/sif/v2/pkg/sif/descriptor_input.go
generated
vendored
1
vendor/github.com/sylabs/sif/v2/pkg/sif/descriptor_input.go
generated
vendored
@ -111,7 +111,6 @@ func (e *unexpectedDataTypeError) Error() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *unexpectedDataTypeError) Is(target error) bool {
|
func (e *unexpectedDataTypeError) Is(target error) bool {
|
||||||
//nolint:errorlint // don't compare wrapped errors in Is()
|
|
||||||
t, ok := target.(*unexpectedDataTypeError)
|
t, ok := target.(*unexpectedDataTypeError)
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
|
15
vendor/github.com/vbauerster/mpb/v8/CONTRIBUTING
generated
vendored
Normal file
15
vendor/github.com/vbauerster/mpb/v8/CONTRIBUTING
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
When contributing your first changes, please include an empty commit for
|
||||||
|
copyright waiver using the following message (replace 'John Doe' with
|
||||||
|
your name or nickname):
|
||||||
|
|
||||||
|
John Doe Copyright Waiver
|
||||||
|
|
||||||
|
I dedicate any and all copyright interest in this software to the
|
||||||
|
public domain. I make this dedication for the benefit of the public at
|
||||||
|
large and to the detriment of my heirs and successors. I intend this
|
||||||
|
dedication to be an overt act of relinquishment in perpetuity of all
|
||||||
|
present and future rights to this software under copyright law.
|
||||||
|
|
||||||
|
The command to create an empty commit from the command-line is:
|
||||||
|
|
||||||
|
git commit --allow-empty
|
2
vendor/github.com/vbauerster/mpb/v8/bar.go
generated
vendored
2
vendor/github.com/vbauerster/mpb/v8/bar.go
generated
vendored
@ -338,7 +338,7 @@ func (b *Bar) DecoratorAverageAdjust(start time.Time) {
|
|||||||
// priority, i.e. bar will be on top. If you don't need to set priority
|
// priority, i.e. bar will be on top. If you don't need to set priority
|
||||||
// dynamically, better use BarPriority option.
|
// dynamically, better use BarPriority option.
|
||||||
func (b *Bar) SetPriority(priority int) {
|
func (b *Bar) SetPriority(priority int) {
|
||||||
b.container.UpdateBarPriority(b, priority)
|
b.container.UpdateBarPriority(b, priority, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abort interrupts bar's running goroutine. Abort won't be engaged
|
// Abort interrupts bar's running goroutine. Abort won't be engaged
|
||||||
|
21
vendor/github.com/vbauerster/mpb/v8/decor/on_compete_or_on_abort.go
generated
vendored
Normal file
21
vendor/github.com/vbauerster/mpb/v8/decor/on_compete_or_on_abort.go
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package decor
|
||||||
|
|
||||||
|
// OnCompleteOrOnAbort wrap decorator.
|
||||||
|
// Displays provided message on complete or on abort event.
|
||||||
|
//
|
||||||
|
// `decorator` Decorator to wrap
|
||||||
|
// `message` message to display
|
||||||
|
func OnCompleteOrOnAbort(decorator Decorator, message string) Decorator {
|
||||||
|
return OnComplete(OnAbort(decorator, message), message)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnCompleteMetaOrOnAbortMeta wrap decorator.
|
||||||
|
// Provided fn is supposed to wrap output of given decorator
|
||||||
|
// with meta information like ANSI escape codes for example.
|
||||||
|
// Primary usage intention is to set SGR display attributes.
|
||||||
|
//
|
||||||
|
// `decorator` Decorator to wrap
|
||||||
|
// `fn` func to apply meta information
|
||||||
|
func OnCompleteMetaOrOnAbortMeta(decorator Decorator, fn func(string) string) Decorator {
|
||||||
|
return OnCompleteMeta(OnAbortMeta(decorator, fn), fn)
|
||||||
|
}
|
27
vendor/github.com/vbauerster/mpb/v8/heap_manager.go
generated
vendored
27
vendor/github.com/vbauerster/mpb/v8/heap_manager.go
generated
vendored
@ -1,8 +1,6 @@
|
|||||||
package mpb
|
package mpb
|
||||||
|
|
||||||
import (
|
import "container/heap"
|
||||||
"container/heap"
|
|
||||||
)
|
|
||||||
|
|
||||||
type heapManager chan heapRequest
|
type heapManager chan heapRequest
|
||||||
|
|
||||||
@ -36,6 +34,7 @@ type pushData struct {
|
|||||||
type fixData struct {
|
type fixData struct {
|
||||||
bar *Bar
|
bar *Bar
|
||||||
priority int
|
priority int
|
||||||
|
lazy bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m heapManager) run() {
|
func (m heapManager) run() {
|
||||||
@ -46,7 +45,6 @@ func (m heapManager) run() {
|
|||||||
var sync bool
|
var sync bool
|
||||||
|
|
||||||
for req := range m {
|
for req := range m {
|
||||||
next:
|
|
||||||
switch req.cmd {
|
switch req.cmd {
|
||||||
case h_push:
|
case h_push:
|
||||||
data := req.data.(pushData)
|
data := req.data.(pushData)
|
||||||
@ -75,34 +73,35 @@ func (m heapManager) run() {
|
|||||||
syncWidth(aMatrix, drop)
|
syncWidth(aMatrix, drop)
|
||||||
case h_iter:
|
case h_iter:
|
||||||
data := req.data.(iterData)
|
data := req.data.(iterData)
|
||||||
|
drop_iter:
|
||||||
for _, b := range bHeap {
|
for _, b := range bHeap {
|
||||||
select {
|
select {
|
||||||
case data.iter <- b:
|
case data.iter <- b:
|
||||||
case <-data.drop:
|
case <-data.drop:
|
||||||
close(data.iter)
|
break drop_iter
|
||||||
break next
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(data.iter)
|
close(data.iter)
|
||||||
case h_drain:
|
case h_drain:
|
||||||
data := req.data.(iterData)
|
data := req.data.(iterData)
|
||||||
|
drop_drain:
|
||||||
for bHeap.Len() != 0 {
|
for bHeap.Len() != 0 {
|
||||||
select {
|
select {
|
||||||
case data.iter <- heap.Pop(&bHeap).(*Bar):
|
case data.iter <- heap.Pop(&bHeap).(*Bar):
|
||||||
case <-data.drop:
|
case <-data.drop:
|
||||||
close(data.iter)
|
break drop_drain
|
||||||
break next
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(data.iter)
|
close(data.iter)
|
||||||
case h_fix:
|
case h_fix:
|
||||||
data := req.data.(fixData)
|
data := req.data.(fixData)
|
||||||
bar, priority := data.bar, data.priority
|
if data.bar.index < 0 {
|
||||||
if bar.index < 0 {
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
bar.priority = priority
|
data.bar.priority = data.priority
|
||||||
heap.Fix(&bHeap, bar.index)
|
if !data.lazy {
|
||||||
|
heap.Fix(&bHeap, data.bar.index)
|
||||||
|
}
|
||||||
case h_state:
|
case h_state:
|
||||||
ch := req.data.(chan<- bool)
|
ch := req.data.(chan<- bool)
|
||||||
ch <- sync || l != bHeap.Len()
|
ch <- sync || l != bHeap.Len()
|
||||||
@ -137,8 +136,8 @@ func (m heapManager) drain(iter chan<- *Bar, drop <-chan struct{}) {
|
|||||||
m <- heapRequest{cmd: h_drain, data: data}
|
m <- heapRequest{cmd: h_drain, data: data}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m heapManager) fix(b *Bar, priority int) {
|
func (m heapManager) fix(b *Bar, priority int, lazy bool) {
|
||||||
data := fixData{b, priority}
|
data := fixData{b, priority, lazy}
|
||||||
m <- heapRequest{cmd: h_fix, data: data}
|
m <- heapRequest{cmd: h_fix, data: data}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
vendor/github.com/vbauerster/mpb/v8/priority_queue.go
generated
vendored
15
vendor/github.com/vbauerster/mpb/v8/priority_queue.go
generated
vendored
@ -20,17 +20,18 @@ func (pq priorityQueue) Swap(i, j int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (pq *priorityQueue) Push(x interface{}) {
|
func (pq *priorityQueue) Push(x interface{}) {
|
||||||
s := *pq
|
n := len(*pq)
|
||||||
bar := x.(*Bar)
|
bar := x.(*Bar)
|
||||||
bar.index = len(s)
|
bar.index = n
|
||||||
s = append(s, bar)
|
*pq = append(*pq, bar)
|
||||||
*pq = s
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pq *priorityQueue) Pop() interface{} {
|
func (pq *priorityQueue) Pop() interface{} {
|
||||||
s := *pq
|
old := *pq
|
||||||
*pq = s[0 : len(s)-1]
|
n := len(old)
|
||||||
bar := s[len(s)-1]
|
bar := old[n-1]
|
||||||
|
old[n-1] = nil // avoid memory leak
|
||||||
bar.index = -1 // for safety
|
bar.index = -1 // for safety
|
||||||
|
*pq = old[:n-1]
|
||||||
return bar
|
return bar
|
||||||
}
|
}
|
||||||
|
11
vendor/github.com/vbauerster/mpb/v8/progress.go
generated
vendored
11
vendor/github.com/vbauerster/mpb/v8/progress.go
generated
vendored
@ -201,10 +201,15 @@ func (p *Progress) traverseBars(cb func(b *Bar) bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateBarPriority same as *Bar.SetPriority(int).
|
// UpdateBarPriority either immediately or lazy.
|
||||||
func (p *Progress) UpdateBarPriority(b *Bar, priority int) {
|
// With lazy flag order is updated after the next refresh cycle.
|
||||||
|
// If you don't care about laziness just use *Bar.SetPriority(int).
|
||||||
|
func (p *Progress) UpdateBarPriority(b *Bar, priority int, lazy bool) {
|
||||||
|
if b == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
case p.operateState <- func(s *pState) { s.hm.fix(b, priority) }:
|
case p.operateState <- func(s *pState) { s.hm.fix(b, priority, lazy) }:
|
||||||
case <-p.done:
|
case <-p.done:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
vendor/golang.org/x/mod/semver/semver.go
generated
vendored
6
vendor/golang.org/x/mod/semver/semver.go
generated
vendored
@ -140,7 +140,7 @@ func Compare(v, w string) int {
|
|||||||
// Max canonicalizes its arguments and then returns the version string
|
// Max canonicalizes its arguments and then returns the version string
|
||||||
// that compares greater.
|
// that compares greater.
|
||||||
//
|
//
|
||||||
// Deprecated: use Compare instead. In most cases, returning a canonicalized
|
// Deprecated: use [Compare] instead. In most cases, returning a canonicalized
|
||||||
// version is not expected or desired.
|
// version is not expected or desired.
|
||||||
func Max(v, w string) string {
|
func Max(v, w string) string {
|
||||||
v = Canonical(v)
|
v = Canonical(v)
|
||||||
@ -151,7 +151,7 @@ func Max(v, w string) string {
|
|||||||
return w
|
return w
|
||||||
}
|
}
|
||||||
|
|
||||||
// ByVersion implements sort.Interface for sorting semantic version strings.
|
// ByVersion implements [sort.Interface] for sorting semantic version strings.
|
||||||
type ByVersion []string
|
type ByVersion []string
|
||||||
|
|
||||||
func (vs ByVersion) Len() int { return len(vs) }
|
func (vs ByVersion) Len() int { return len(vs) }
|
||||||
@ -164,7 +164,7 @@ func (vs ByVersion) Less(i, j int) bool {
|
|||||||
return vs[i] < vs[j]
|
return vs[i] < vs[j]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort sorts a list of semantic version strings using ByVersion.
|
// Sort sorts a list of semantic version strings using [ByVersion].
|
||||||
func Sort(list []string) {
|
func Sort(list []string) {
|
||||||
sort.Sort(ByVersion(list))
|
sort.Sort(ByVersion(list))
|
||||||
}
|
}
|
||||||
|
38
vendor/golang.org/x/mod/sumdb/note/note.go
generated
vendored
38
vendor/golang.org/x/mod/sumdb/note/note.go
generated
vendored
@ -20,45 +20,45 @@
|
|||||||
//
|
//
|
||||||
// # Verifying Notes
|
// # Verifying Notes
|
||||||
//
|
//
|
||||||
// A Verifier allows verification of signatures by one server public key.
|
// A [Verifier] allows verification of signatures by one server public key.
|
||||||
// It can report the name of the server and the uint32 hash of the key,
|
// It can report the name of the server and the uint32 hash of the key,
|
||||||
// and it can verify a purported signature by that key.
|
// and it can verify a purported signature by that key.
|
||||||
//
|
//
|
||||||
// The standard implementation of a Verifier is constructed
|
// The standard implementation of a Verifier is constructed
|
||||||
// by NewVerifier starting from a verifier key, which is a
|
// by [NewVerifier] starting from a verifier key, which is a
|
||||||
// plain text string of the form "<name>+<hash>+<keydata>".
|
// plain text string of the form "<name>+<hash>+<keydata>".
|
||||||
//
|
//
|
||||||
// A Verifiers allows looking up a Verifier by the combination
|
// A [Verifiers] allows looking up a Verifier by the combination
|
||||||
// of server name and key hash.
|
// of server name and key hash.
|
||||||
//
|
//
|
||||||
// The standard implementation of a Verifiers is constructed
|
// The standard implementation of a Verifiers is constructed
|
||||||
// by VerifierList from a list of known verifiers.
|
// by VerifierList from a list of known verifiers.
|
||||||
//
|
//
|
||||||
// A Note represents a text with one or more signatures.
|
// A [Note] represents a text with one or more signatures.
|
||||||
// An implementation can reject a note with too many signatures
|
// An implementation can reject a note with too many signatures
|
||||||
// (for example, more than 100 signatures).
|
// (for example, more than 100 signatures).
|
||||||
//
|
//
|
||||||
// A Signature represents a signature on a note, verified or not.
|
// A [Signature] represents a signature on a note, verified or not.
|
||||||
//
|
//
|
||||||
// The Open function takes as input a signed message
|
// The [Open] function takes as input a signed message
|
||||||
// and a set of known verifiers. It decodes and verifies
|
// and a set of known verifiers. It decodes and verifies
|
||||||
// the message signatures and returns a Note structure
|
// the message signatures and returns a [Note] structure
|
||||||
// containing the message text and (verified or unverified) signatures.
|
// containing the message text and (verified or unverified) signatures.
|
||||||
//
|
//
|
||||||
// # Signing Notes
|
// # Signing Notes
|
||||||
//
|
//
|
||||||
// A Signer allows signing a text with a given key.
|
// A [Signer] allows signing a text with a given key.
|
||||||
// It can report the name of the server and the hash of the key
|
// It can report the name of the server and the hash of the key
|
||||||
// and can sign a raw text using that key.
|
// and can sign a raw text using that key.
|
||||||
//
|
//
|
||||||
// The standard implementation of a Signer is constructed
|
// The standard implementation of a Signer is constructed
|
||||||
// by NewSigner starting from an encoded signer key, which is a
|
// by [NewSigner] starting from an encoded signer key, which is a
|
||||||
// plain text string of the form "PRIVATE+KEY+<name>+<hash>+<keydata>".
|
// plain text string of the form "PRIVATE+KEY+<name>+<hash>+<keydata>".
|
||||||
// Anyone with an encoded signer key can sign messages using that key,
|
// Anyone with an encoded signer key can sign messages using that key,
|
||||||
// so it must be kept secret. The encoding begins with the literal text
|
// so it must be kept secret. The encoding begins with the literal text
|
||||||
// "PRIVATE+KEY" to avoid confusion with the public server key.
|
// "PRIVATE+KEY" to avoid confusion with the public server key.
|
||||||
//
|
//
|
||||||
// The Sign function takes as input a Note and a list of Signers
|
// The [Sign] function takes as input a Note and a list of Signers
|
||||||
// and returns an encoded, signed message.
|
// and returns an encoded, signed message.
|
||||||
//
|
//
|
||||||
// # Signed Note Format
|
// # Signed Note Format
|
||||||
@ -88,7 +88,7 @@
|
|||||||
// although doing so will require deploying the new algorithms to all clients
|
// although doing so will require deploying the new algorithms to all clients
|
||||||
// before starting to depend on them for signatures.
|
// before starting to depend on them for signatures.
|
||||||
//
|
//
|
||||||
// The GenerateKey function generates and returns a new signer
|
// The [GenerateKey] function generates and returns a new signer
|
||||||
// and corresponding verifier.
|
// and corresponding verifier.
|
||||||
//
|
//
|
||||||
// # Example
|
// # Example
|
||||||
@ -123,9 +123,9 @@
|
|||||||
// base URLs, the only syntactic requirement is that they
|
// base URLs, the only syntactic requirement is that they
|
||||||
// not contain spaces or newlines).
|
// not contain spaces or newlines).
|
||||||
//
|
//
|
||||||
// If Open is given access to a Verifiers including the
|
// If [Open] is given access to a [Verifiers] including the
|
||||||
// Verifier for this key, then it will succeed at verifying
|
// [Verifier] for this key, then it will succeed at verifying
|
||||||
// the encoded message and returning the parsed Note:
|
// the encoded message and returning the parsed [Note]:
|
||||||
//
|
//
|
||||||
// vkey := "PeterNeumann+c74f20a3+ARpc2QcUPDhMQegwxbzhKqiBfsVkmqq/LDE4izWy10TW"
|
// vkey := "PeterNeumann+c74f20a3+ARpc2QcUPDhMQegwxbzhKqiBfsVkmqq/LDE4izWy10TW"
|
||||||
// msg := []byte("If you think cryptography is the answer to your problem,\n" +
|
// msg := []byte("If you think cryptography is the answer to your problem,\n" +
|
||||||
@ -238,7 +238,7 @@ func isValidName(name string) bool {
|
|||||||
return name != "" && utf8.ValidString(name) && strings.IndexFunc(name, unicode.IsSpace) < 0 && !strings.Contains(name, "+")
|
return name != "" && utf8.ValidString(name) && strings.IndexFunc(name, unicode.IsSpace) < 0 && !strings.Contains(name, "+")
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewVerifier construct a new Verifier from an encoded verifier key.
|
// NewVerifier construct a new [Verifier] from an encoded verifier key.
|
||||||
func NewVerifier(vkey string) (Verifier, error) {
|
func NewVerifier(vkey string) (Verifier, error) {
|
||||||
name, vkey := chop(vkey, "+")
|
name, vkey := chop(vkey, "+")
|
||||||
hash16, key64 := chop(vkey, "+")
|
hash16, key64 := chop(vkey, "+")
|
||||||
@ -295,7 +295,7 @@ func (v *verifier) Name() string { return v.name }
|
|||||||
func (v *verifier) KeyHash() uint32 { return v.hash }
|
func (v *verifier) KeyHash() uint32 { return v.hash }
|
||||||
func (v *verifier) Verify(msg, sig []byte) bool { return v.verify(msg, sig) }
|
func (v *verifier) Verify(msg, sig []byte) bool { return v.verify(msg, sig) }
|
||||||
|
|
||||||
// NewSigner constructs a new Signer from an encoded signer key.
|
// NewSigner constructs a new [Signer] from an encoded signer key.
|
||||||
func NewSigner(skey string) (Signer, error) {
|
func NewSigner(skey string) (Signer, error) {
|
||||||
priv1, skey := chop(skey, "+")
|
priv1, skey := chop(skey, "+")
|
||||||
priv2, skey := chop(skey, "+")
|
priv2, skey := chop(skey, "+")
|
||||||
@ -409,7 +409,7 @@ func (e *UnknownVerifierError) Error() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// An ambiguousVerifierError indicates that the given name and hash
|
// An ambiguousVerifierError indicates that the given name and hash
|
||||||
// match multiple keys passed to VerifierList.
|
// match multiple keys passed to [VerifierList].
|
||||||
// (If this happens, some malicious actor has taken control of the
|
// (If this happens, some malicious actor has taken control of the
|
||||||
// verifier list, at which point we may as well give up entirely,
|
// verifier list, at which point we may as well give up entirely,
|
||||||
// but we diagnose the problem instead.)
|
// but we diagnose the problem instead.)
|
||||||
@ -422,7 +422,7 @@ func (e *ambiguousVerifierError) Error() string {
|
|||||||
return fmt.Sprintf("ambiguous key %s+%08x", e.name, e.hash)
|
return fmt.Sprintf("ambiguous key %s+%08x", e.name, e.hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
// VerifierList returns a Verifiers implementation that uses the given list of verifiers.
|
// VerifierList returns a [Verifiers] implementation that uses the given list of verifiers.
|
||||||
func VerifierList(list ...Verifier) Verifiers {
|
func VerifierList(list ...Verifier) Verifiers {
|
||||||
m := make(verifierMap)
|
m := make(verifierMap)
|
||||||
for _, v := range list {
|
for _, v := range list {
|
||||||
@ -510,7 +510,7 @@ var (
|
|||||||
// If known.Verifier returns any other error, Open returns that error.
|
// If known.Verifier returns any other error, Open returns that error.
|
||||||
//
|
//
|
||||||
// If no known verifier has signed an otherwise valid note,
|
// If no known verifier has signed an otherwise valid note,
|
||||||
// Open returns an UnverifiedNoteError.
|
// Open returns an [UnverifiedNoteError].
|
||||||
// In this case, the unverified note can be fetched from inside the error.
|
// In this case, the unverified note can be fetched from inside the error.
|
||||||
func Open(msg []byte, known Verifiers) (*Note, error) {
|
func Open(msg []byte, known Verifiers) (*Note, error) {
|
||||||
if known == nil {
|
if known == nil {
|
||||||
|
5
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
5
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
@ -38,7 +38,7 @@ var X86 struct {
|
|||||||
HasAVX512F bool // Advanced vector extension 512 Foundation Instructions
|
HasAVX512F bool // Advanced vector extension 512 Foundation Instructions
|
||||||
HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions
|
HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions
|
||||||
HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions
|
HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions
|
||||||
HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions Instructions
|
HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions
|
||||||
HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions
|
HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions
|
||||||
HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions
|
HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions
|
||||||
HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions
|
HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions
|
||||||
@ -54,6 +54,9 @@ var X86 struct {
|
|||||||
HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2
|
HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2
|
||||||
HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms
|
HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms
|
||||||
HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions
|
HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions
|
||||||
|
HasAMXTile bool // Advanced Matrix Extension Tile instructions
|
||||||
|
HasAMXInt8 bool // Advanced Matrix Extension Int8 instructions
|
||||||
|
HasAMXBF16 bool // Advanced Matrix Extension BFloat16 instructions
|
||||||
HasBMI1 bool // Bit manipulation instruction set 1
|
HasBMI1 bool // Bit manipulation instruction set 1
|
||||||
HasBMI2 bool // Bit manipulation instruction set 2
|
HasBMI2 bool // Bit manipulation instruction set 2
|
||||||
HasCX16 bool // Compare and exchange 16 Bytes
|
HasCX16 bool // Compare and exchange 16 Bytes
|
||||||
|
7
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
7
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
@ -37,6 +37,9 @@ func initOptions() {
|
|||||||
{Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2},
|
{Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2},
|
||||||
{Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG},
|
{Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG},
|
||||||
{Name: "avx512bf16", Feature: &X86.HasAVX512BF16},
|
{Name: "avx512bf16", Feature: &X86.HasAVX512BF16},
|
||||||
|
{Name: "amxtile", Feature: &X86.HasAMXTile},
|
||||||
|
{Name: "amxint8", Feature: &X86.HasAMXInt8},
|
||||||
|
{Name: "amxbf16", Feature: &X86.HasAMXBF16},
|
||||||
{Name: "bmi1", Feature: &X86.HasBMI1},
|
{Name: "bmi1", Feature: &X86.HasBMI1},
|
||||||
{Name: "bmi2", Feature: &X86.HasBMI2},
|
{Name: "bmi2", Feature: &X86.HasBMI2},
|
||||||
{Name: "cx16", Feature: &X86.HasCX16},
|
{Name: "cx16", Feature: &X86.HasCX16},
|
||||||
@ -138,6 +141,10 @@ func archInit() {
|
|||||||
eax71, _, _, _ := cpuid(7, 1)
|
eax71, _, _, _ := cpuid(7, 1)
|
||||||
X86.HasAVX512BF16 = isSet(5, eax71)
|
X86.HasAVX512BF16 = isSet(5, eax71)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
X86.HasAMXTile = isSet(24, edx7)
|
||||||
|
X86.HasAMXInt8 = isSet(25, edx7)
|
||||||
|
X86.HasAMXBF16 = isSet(22, edx7)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isSet(bitpos uint, value uint32) bool {
|
func isSet(bitpos uint, value uint32) bool {
|
||||||
|
1
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
1
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
@ -583,6 +583,7 @@ ccflags="$@"
|
|||||||
$2 ~ /^PERF_/ ||
|
$2 ~ /^PERF_/ ||
|
||||||
$2 ~ /^SECCOMP_MODE_/ ||
|
$2 ~ /^SECCOMP_MODE_/ ||
|
||||||
$2 ~ /^SEEK_/ ||
|
$2 ~ /^SEEK_/ ||
|
||||||
|
$2 ~ /^SCHED_/ ||
|
||||||
$2 ~ /^SPLICE_/ ||
|
$2 ~ /^SPLICE_/ ||
|
||||||
$2 ~ /^SYNC_FILE_RANGE_/ ||
|
$2 ~ /^SYNC_FILE_RANGE_/ ||
|
||||||
$2 !~ /IOC_MAGIC/ &&
|
$2 !~ /IOC_MAGIC/ &&
|
||||||
|
23
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
23
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
@ -2471,6 +2471,29 @@ func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *
|
|||||||
return pselect6(nfd, r, w, e, mutableTimeout, kernelMask)
|
return pselect6(nfd, r, w, e, mutableTimeout, kernelMask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys schedSetattr(pid int, attr *SchedAttr, flags uint) (err error)
|
||||||
|
//sys schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)
|
||||||
|
|
||||||
|
// SchedSetAttr is a wrapper for sched_setattr(2) syscall.
|
||||||
|
// https://man7.org/linux/man-pages/man2/sched_setattr.2.html
|
||||||
|
func SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {
|
||||||
|
if attr == nil {
|
||||||
|
return EINVAL
|
||||||
|
}
|
||||||
|
attr.Size = SizeofSchedAttr
|
||||||
|
return schedSetattr(pid, attr, flags)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SchedGetAttr is a wrapper for sched_getattr(2) syscall.
|
||||||
|
// https://man7.org/linux/man-pages/man2/sched_getattr.2.html
|
||||||
|
func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {
|
||||||
|
attr := &SchedAttr{}
|
||||||
|
if err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return attr, nil
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unimplemented
|
* Unimplemented
|
||||||
*/
|
*/
|
||||||
|
3
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
3
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
@ -549,6 +549,9 @@ func SetNonblock(fd int, nonblocking bool) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if (flag&O_NONBLOCK != 0) == nonblocking {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if nonblocking {
|
if nonblocking {
|
||||||
flag |= O_NONBLOCK
|
flag |= O_NONBLOCK
|
||||||
} else {
|
} else {
|
||||||
|
17
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
17
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
@ -2821,6 +2821,23 @@ const (
|
|||||||
RWF_SUPPORTED = 0x1f
|
RWF_SUPPORTED = 0x1f
|
||||||
RWF_SYNC = 0x4
|
RWF_SYNC = 0x4
|
||||||
RWF_WRITE_LIFE_NOT_SET = 0x0
|
RWF_WRITE_LIFE_NOT_SET = 0x0
|
||||||
|
SCHED_BATCH = 0x3
|
||||||
|
SCHED_DEADLINE = 0x6
|
||||||
|
SCHED_FIFO = 0x1
|
||||||
|
SCHED_FLAG_ALL = 0x7f
|
||||||
|
SCHED_FLAG_DL_OVERRUN = 0x4
|
||||||
|
SCHED_FLAG_KEEP_ALL = 0x18
|
||||||
|
SCHED_FLAG_KEEP_PARAMS = 0x10
|
||||||
|
SCHED_FLAG_KEEP_POLICY = 0x8
|
||||||
|
SCHED_FLAG_RECLAIM = 0x2
|
||||||
|
SCHED_FLAG_RESET_ON_FORK = 0x1
|
||||||
|
SCHED_FLAG_UTIL_CLAMP = 0x60
|
||||||
|
SCHED_FLAG_UTIL_CLAMP_MAX = 0x40
|
||||||
|
SCHED_FLAG_UTIL_CLAMP_MIN = 0x20
|
||||||
|
SCHED_IDLE = 0x5
|
||||||
|
SCHED_NORMAL = 0x0
|
||||||
|
SCHED_RESET_ON_FORK = 0x40000000
|
||||||
|
SCHED_RR = 0x2
|
||||||
SCM_CREDENTIALS = 0x2
|
SCM_CREDENTIALS = 0x2
|
||||||
SCM_RIGHTS = 0x1
|
SCM_RIGHTS = 0x1
|
||||||
SCM_TIMESTAMP = 0x1d
|
SCM_TIMESTAMP = 0x1d
|
||||||
|
20
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
20
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
@ -2197,3 +2197,23 @@ func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {
|
|||||||
RawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))
|
RawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) {
|
||||||
|
_, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
15
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
15
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
@ -5868,3 +5868,18 @@ const (
|
|||||||
VIRTIO_NET_HDR_GSO_UDP_L4 = 0x5
|
VIRTIO_NET_HDR_GSO_UDP_L4 = 0x5
|
||||||
VIRTIO_NET_HDR_GSO_ECN = 0x80
|
VIRTIO_NET_HDR_GSO_ECN = 0x80
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type SchedAttr struct {
|
||||||
|
Size uint32
|
||||||
|
Policy uint32
|
||||||
|
Flags uint64
|
||||||
|
Nice int32
|
||||||
|
Priority uint32
|
||||||
|
Runtime uint64
|
||||||
|
Deadline uint64
|
||||||
|
Period uint64
|
||||||
|
Util_min uint32
|
||||||
|
Util_max uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
const SizeofSchedAttr = 0x38
|
||||||
|
11
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
11
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
@ -216,7 +216,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath
|
//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath
|
||||||
//sys TerminateProcess(handle Handle, exitcode uint32) (err error)
|
//sys TerminateProcess(handle Handle, exitcode uint32) (err error)
|
||||||
//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
|
//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
|
||||||
//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW
|
//sys getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW
|
||||||
//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
|
//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
|
||||||
//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
|
//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
|
||||||
//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]
|
//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]
|
||||||
@ -437,6 +437,10 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute
|
//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute
|
||||||
//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute
|
//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute
|
||||||
|
|
||||||
|
// Windows Multimedia API
|
||||||
|
//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod
|
||||||
|
//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod
|
||||||
|
|
||||||
// syscall interface implementation for other packages
|
// syscall interface implementation for other packages
|
||||||
|
|
||||||
// GetCurrentProcess returns the handle for the current process.
|
// GetCurrentProcess returns the handle for the current process.
|
||||||
@ -1624,6 +1628,11 @@ func SetConsoleCursorPosition(console Handle, position Coord) error {
|
|||||||
return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))
|
return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetStartupInfo(startupInfo *StartupInfo) error {
|
||||||
|
getStartupInfo(startupInfo)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s NTStatus) Errno() syscall.Errno {
|
func (s NTStatus) Errno() syscall.Errno {
|
||||||
return rtlNtStatusToDosErrorNoTeb(s)
|
return rtlNtStatusToDosErrorNoTeb(s)
|
||||||
}
|
}
|
||||||
|
26
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
26
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
@ -55,6 +55,7 @@ var (
|
|||||||
moduser32 = NewLazySystemDLL("user32.dll")
|
moduser32 = NewLazySystemDLL("user32.dll")
|
||||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
modversion = NewLazySystemDLL("version.dll")
|
modversion = NewLazySystemDLL("version.dll")
|
||||||
|
modwinmm = NewLazySystemDLL("winmm.dll")
|
||||||
modwintrust = NewLazySystemDLL("wintrust.dll")
|
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||||
@ -468,6 +469,8 @@ var (
|
|||||||
procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW")
|
procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW")
|
||||||
procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW")
|
procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW")
|
||||||
procVerQueryValueW = modversion.NewProc("VerQueryValueW")
|
procVerQueryValueW = modversion.NewProc("VerQueryValueW")
|
||||||
|
proctimeBeginPeriod = modwinmm.NewProc("timeBeginPeriod")
|
||||||
|
proctimeEndPeriod = modwinmm.NewProc("timeEndPeriod")
|
||||||
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
@ -2367,11 +2370,8 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStartupInfo(startupInfo *StartupInfo) (err error) {
|
func getStartupInfo(startupInfo *StartupInfo) {
|
||||||
r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
|
syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
|
||||||
if r1 == 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4017,6 +4017,22 @@ func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPoint
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TimeBeginPeriod(period uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0)
|
||||||
|
if r1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func TimeEndPeriod(period uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(proctimeEndPeriod.Addr(), 1, uintptr(period), 0, 0)
|
||||||
|
if r1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
||||||
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
|
11
vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
generated
vendored
11
vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
generated
vendored
@ -8,7 +8,6 @@ package packagesdriver
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/types"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.org/x/tools/internal/gocommand"
|
"golang.org/x/tools/internal/gocommand"
|
||||||
@ -16,7 +15,7 @@ import (
|
|||||||
|
|
||||||
var debug = false
|
var debug = false
|
||||||
|
|
||||||
func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (types.Sizes, error) {
|
func GetSizesForArgsGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (string, string, error) {
|
||||||
inv.Verb = "list"
|
inv.Verb = "list"
|
||||||
inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"}
|
inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"}
|
||||||
stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)
|
stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)
|
||||||
@ -29,21 +28,21 @@ func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *
|
|||||||
inv.Args = []string{"GOARCH"}
|
inv.Args = []string{"GOARCH"}
|
||||||
envout, enverr := gocmdRunner.Run(ctx, inv)
|
envout, enverr := gocmdRunner.Run(ctx, inv)
|
||||||
if enverr != nil {
|
if enverr != nil {
|
||||||
return nil, enverr
|
return "", "", enverr
|
||||||
}
|
}
|
||||||
goarch = strings.TrimSpace(envout.String())
|
goarch = strings.TrimSpace(envout.String())
|
||||||
compiler = "gc"
|
compiler = "gc"
|
||||||
} else {
|
} else {
|
||||||
return nil, friendlyErr
|
return "", "", friendlyErr
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fields := strings.Fields(stdout.String())
|
fields := strings.Fields(stdout.String())
|
||||||
if len(fields) < 2 {
|
if len(fields) < 2 {
|
||||||
return nil, fmt.Errorf("could not parse GOARCH and Go compiler in format \"<GOARCH> <compiler>\":\nstdout: <<%s>>\nstderr: <<%s>>",
|
return "", "", fmt.Errorf("could not parse GOARCH and Go compiler in format \"<GOARCH> <compiler>\":\nstdout: <<%s>>\nstderr: <<%s>>",
|
||||||
stdout.String(), stderr.String())
|
stdout.String(), stderr.String())
|
||||||
}
|
}
|
||||||
goarch = fields[0]
|
goarch = fields[0]
|
||||||
compiler = fields[1]
|
compiler = fields[1]
|
||||||
}
|
}
|
||||||
return types.SizesFor(compiler, goarch), nil
|
return compiler, goarch, nil
|
||||||
}
|
}
|
||||||
|
12
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
12
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
@ -9,7 +9,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/types"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
@ -153,10 +152,10 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
|
|||||||
if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 {
|
if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 {
|
||||||
sizeswg.Add(1)
|
sizeswg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
var sizes types.Sizes
|
compiler, arch, err := packagesdriver.GetSizesForArgsGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner)
|
||||||
sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner)
|
sizeserr = err
|
||||||
// types.SizesFor always returns nil or a *types.StdSizes.
|
response.dr.Compiler = compiler
|
||||||
response.dr.Sizes, _ = sizes.(*types.StdSizes)
|
response.dr.Arch = arch
|
||||||
sizeswg.Done()
|
sizeswg.Done()
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -671,6 +670,9 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
|
|||||||
// Temporary work-around for golang/go#39986. Parse filenames out of
|
// Temporary work-around for golang/go#39986. Parse filenames out of
|
||||||
// error messages. This happens if there are unrecoverable syntax
|
// error messages. This happens if there are unrecoverable syntax
|
||||||
// errors in the source, so we can't match on a specific error message.
|
// errors in the source, so we can't match on a specific error message.
|
||||||
|
//
|
||||||
|
// TODO(rfindley): remove this heuristic, in favor of considering
|
||||||
|
// InvalidGoFiles from the list driver.
|
||||||
if err := p.Error; err != nil && state.shouldAddFilenameFromError(p) {
|
if err := p.Error; err != nil && state.shouldAddFilenameFromError(p) {
|
||||||
addFilenameFromPos := func(pos string) bool {
|
addFilenameFromPos := func(pos string) bool {
|
||||||
split := strings.Split(pos, ":")
|
split := strings.Split(pos, ":")
|
||||||
|
13
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
13
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
@ -220,8 +220,10 @@ type driverResponse struct {
|
|||||||
// lists of multiple drivers, go/packages will fall back to the next driver.
|
// lists of multiple drivers, go/packages will fall back to the next driver.
|
||||||
NotHandled bool
|
NotHandled bool
|
||||||
|
|
||||||
// Sizes, if not nil, is the types.Sizes to use when type checking.
|
// Compiler and Arch are the arguments pass of types.SizesFor
|
||||||
Sizes *types.StdSizes
|
// to get a types.Sizes to use when type checking.
|
||||||
|
Compiler string
|
||||||
|
Arch string
|
||||||
|
|
||||||
// Roots is the set of package IDs that make up the root packages.
|
// Roots is the set of package IDs that make up the root packages.
|
||||||
// We have to encode this separately because when we encode a single package
|
// We have to encode this separately because when we encode a single package
|
||||||
@ -262,7 +264,7 @@ func Load(cfg *Config, patterns ...string) ([]*Package, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
l.sizes = response.Sizes
|
l.sizes = types.SizesFor(response.Compiler, response.Arch)
|
||||||
return l.refine(response)
|
return l.refine(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +632,7 @@ func newLoader(cfg *Config) *loader {
|
|||||||
return ld
|
return ld
|
||||||
}
|
}
|
||||||
|
|
||||||
// refine connects the supplied packages into a graph and then adds type and
|
// refine connects the supplied packages into a graph and then adds type
|
||||||
// and syntax information as requested by the LoadMode.
|
// and syntax information as requested by the LoadMode.
|
||||||
func (ld *loader) refine(response *driverResponse) ([]*Package, error) {
|
func (ld *loader) refine(response *driverResponse) ([]*Package, error) {
|
||||||
roots := response.Roots
|
roots := response.Roots
|
||||||
@ -1043,6 +1045,9 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) {
|
|||||||
Error: appendError,
|
Error: appendError,
|
||||||
Sizes: ld.sizes,
|
Sizes: ld.sizes,
|
||||||
}
|
}
|
||||||
|
if lpkg.Module != nil && lpkg.Module.GoVersion != "" {
|
||||||
|
typesinternal.SetGoVersion(tc, "go"+lpkg.Module.GoVersion)
|
||||||
|
}
|
||||||
if (ld.Mode & typecheckCgo) != 0 {
|
if (ld.Mode & typecheckCgo) != 0 {
|
||||||
if !typesinternal.SetUsesCgo(tc) {
|
if !typesinternal.SetUsesCgo(tc) {
|
||||||
appendError(Error{
|
appendError(Error{
|
||||||
|
827
vendor/golang.org/x/tools/go/types/objectpath/objectpath.go
generated
vendored
Normal file
827
vendor/golang.org/x/tools/go/types/objectpath/objectpath.go
generated
vendored
Normal file
@ -0,0 +1,827 @@
|
|||||||
|
// Copyright 2018 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 objectpath defines a naming scheme for types.Objects
|
||||||
|
// (that is, named entities in Go programs) relative to their enclosing
|
||||||
|
// package.
|
||||||
|
//
|
||||||
|
// Type-checker objects are canonical, so they are usually identified by
|
||||||
|
// their address in memory (a pointer), but a pointer has meaning only
|
||||||
|
// within one address space. By contrast, objectpath names allow the
|
||||||
|
// identity of an object to be sent from one program to another,
|
||||||
|
// establishing a correspondence between types.Object variables that are
|
||||||
|
// distinct but logically equivalent.
|
||||||
|
//
|
||||||
|
// A single object may have multiple paths. In this example,
|
||||||
|
//
|
||||||
|
// type A struct{ X int }
|
||||||
|
// type B A
|
||||||
|
//
|
||||||
|
// the field X has two paths due to its membership of both A and B.
|
||||||
|
// The For(obj) function always returns one of these paths, arbitrarily
|
||||||
|
// but consistently.
|
||||||
|
package objectpath
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"go/types"
|
||||||
|
"sort"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
_ "unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/typeparams"
|
||||||
|
"golang.org/x/tools/internal/typesinternal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// A Path is an opaque name that identifies a types.Object
|
||||||
|
// relative to its package. Conceptually, the name consists of a
|
||||||
|
// sequence of destructuring operations applied to the package scope
|
||||||
|
// to obtain the original object.
|
||||||
|
// The name does not include the package itself.
|
||||||
|
type Path string
|
||||||
|
|
||||||
|
// Encoding
|
||||||
|
//
|
||||||
|
// An object path is a textual and (with training) human-readable encoding
|
||||||
|
// of a sequence of destructuring operators, starting from a types.Package.
|
||||||
|
// The sequences represent a path through the package/object/type graph.
|
||||||
|
// We classify these operators by their type:
|
||||||
|
//
|
||||||
|
// PO package->object Package.Scope.Lookup
|
||||||
|
// OT object->type Object.Type
|
||||||
|
// TT type->type Type.{Elem,Key,Params,Results,Underlying} [EKPRU]
|
||||||
|
// TO type->object Type.{At,Field,Method,Obj} [AFMO]
|
||||||
|
//
|
||||||
|
// All valid paths start with a package and end at an object
|
||||||
|
// and thus may be defined by the regular language:
|
||||||
|
//
|
||||||
|
// objectpath = PO (OT TT* TO)*
|
||||||
|
//
|
||||||
|
// The concrete encoding follows directly:
|
||||||
|
// - The only PO operator is Package.Scope.Lookup, which requires an identifier.
|
||||||
|
// - The only OT operator is Object.Type,
|
||||||
|
// which we encode as '.' because dot cannot appear in an identifier.
|
||||||
|
// - The TT operators are encoded as [EKPRUTC];
|
||||||
|
// one of these (TypeParam) requires an integer operand,
|
||||||
|
// which is encoded as a string of decimal digits.
|
||||||
|
// - The TO operators are encoded as [AFMO];
|
||||||
|
// three of these (At,Field,Method) require an integer operand,
|
||||||
|
// which is encoded as a string of decimal digits.
|
||||||
|
// These indices are stable across different representations
|
||||||
|
// of the same package, even source and export data.
|
||||||
|
// The indices used are implementation specific and may not correspond to
|
||||||
|
// the argument to the go/types function.
|
||||||
|
//
|
||||||
|
// In the example below,
|
||||||
|
//
|
||||||
|
// package p
|
||||||
|
//
|
||||||
|
// type T interface {
|
||||||
|
// f() (a string, b struct{ X int })
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// field X has the path "T.UM0.RA1.F0",
|
||||||
|
// representing the following sequence of operations:
|
||||||
|
//
|
||||||
|
// p.Lookup("T") T
|
||||||
|
// .Type().Underlying().Method(0). f
|
||||||
|
// .Type().Results().At(1) b
|
||||||
|
// .Type().Field(0) X
|
||||||
|
//
|
||||||
|
// The encoding is not maximally compact---every R or P is
|
||||||
|
// followed by an A, for example---but this simplifies the
|
||||||
|
// encoder and decoder.
|
||||||
|
const (
|
||||||
|
// object->type operators
|
||||||
|
opType = '.' // .Type() (Object)
|
||||||
|
|
||||||
|
// type->type operators
|
||||||
|
opElem = 'E' // .Elem() (Pointer, Slice, Array, Chan, Map)
|
||||||
|
opKey = 'K' // .Key() (Map)
|
||||||
|
opParams = 'P' // .Params() (Signature)
|
||||||
|
opResults = 'R' // .Results() (Signature)
|
||||||
|
opUnderlying = 'U' // .Underlying() (Named)
|
||||||
|
opTypeParam = 'T' // .TypeParams.At(i) (Named, Signature)
|
||||||
|
opConstraint = 'C' // .Constraint() (TypeParam)
|
||||||
|
|
||||||
|
// type->object operators
|
||||||
|
opAt = 'A' // .At(i) (Tuple)
|
||||||
|
opField = 'F' // .Field(i) (Struct)
|
||||||
|
opMethod = 'M' // .Method(i) (Named or Interface; not Struct: "promoted" names are ignored)
|
||||||
|
opObj = 'O' // .Obj() (Named, TypeParam)
|
||||||
|
)
|
||||||
|
|
||||||
|
// For is equivalent to new(Encoder).For(obj).
|
||||||
|
//
|
||||||
|
// It may be more efficient to reuse a single Encoder across several calls.
|
||||||
|
func For(obj types.Object) (Path, error) {
|
||||||
|
return new(Encoder).For(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
// An Encoder amortizes the cost of encoding the paths of multiple objects.
|
||||||
|
// The zero value of an Encoder is ready to use.
|
||||||
|
type Encoder struct {
|
||||||
|
scopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects
|
||||||
|
namedMethodsMemo map[*types.Named][]*types.Func // memoization of namedMethods()
|
||||||
|
skipMethodSorting bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Expose back doors so that gopls can avoid method sorting, which can dominate
|
||||||
|
// analysis on certain repositories.
|
||||||
|
//
|
||||||
|
// TODO(golang/go#61443): remove this.
|
||||||
|
func init() {
|
||||||
|
typesinternal.SkipEncoderMethodSorting = func(enc interface{}) {
|
||||||
|
enc.(*Encoder).skipMethodSorting = true
|
||||||
|
}
|
||||||
|
typesinternal.ObjectpathObject = object
|
||||||
|
}
|
||||||
|
|
||||||
|
// For returns the path to an object relative to its package,
|
||||||
|
// or an error if the object is not accessible from the package's Scope.
|
||||||
|
//
|
||||||
|
// The For function guarantees to return a path only for the following objects:
|
||||||
|
// - package-level types
|
||||||
|
// - exported package-level non-types
|
||||||
|
// - methods
|
||||||
|
// - parameter and result variables
|
||||||
|
// - struct fields
|
||||||
|
// These objects are sufficient to define the API of their package.
|
||||||
|
// The objects described by a package's export data are drawn from this set.
|
||||||
|
//
|
||||||
|
// The set of objects accessible from a package's Scope depends on
|
||||||
|
// whether the package was produced by type-checking syntax, or
|
||||||
|
// reading export data; the latter may have a smaller Scope since
|
||||||
|
// export data trims objects that are not reachable from an exported
|
||||||
|
// declaration. For example, the For function will return a path for
|
||||||
|
// an exported method of an unexported type that is not reachable
|
||||||
|
// from any public declaration; this path will cause the Object
|
||||||
|
// function to fail if called on a package loaded from export data.
|
||||||
|
// TODO(adonovan): is this a bug or feature? Should this package
|
||||||
|
// compute accessibility in the same way?
|
||||||
|
//
|
||||||
|
// For does not return a path for predeclared names, imported package
|
||||||
|
// names, local names, and unexported package-level names (except
|
||||||
|
// types).
|
||||||
|
//
|
||||||
|
// Example: given this definition,
|
||||||
|
//
|
||||||
|
// package p
|
||||||
|
//
|
||||||
|
// type T interface {
|
||||||
|
// f() (a string, b struct{ X int })
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// For(X) would return a path that denotes the following sequence of operations:
|
||||||
|
//
|
||||||
|
// p.Scope().Lookup("T") (TypeName T)
|
||||||
|
// .Type().Underlying().Method(0). (method Func f)
|
||||||
|
// .Type().Results().At(1) (field Var b)
|
||||||
|
// .Type().Field(0) (field Var X)
|
||||||
|
//
|
||||||
|
// where p is the package (*types.Package) to which X belongs.
|
||||||
|
func (enc *Encoder) For(obj types.Object) (Path, error) {
|
||||||
|
pkg := obj.Pkg()
|
||||||
|
|
||||||
|
// This table lists the cases of interest.
|
||||||
|
//
|
||||||
|
// Object Action
|
||||||
|
// ------ ------
|
||||||
|
// nil reject
|
||||||
|
// builtin reject
|
||||||
|
// pkgname reject
|
||||||
|
// label reject
|
||||||
|
// var
|
||||||
|
// package-level accept
|
||||||
|
// func param/result accept
|
||||||
|
// local reject
|
||||||
|
// struct field accept
|
||||||
|
// const
|
||||||
|
// package-level accept
|
||||||
|
// local reject
|
||||||
|
// func
|
||||||
|
// package-level accept
|
||||||
|
// init functions reject
|
||||||
|
// concrete method accept
|
||||||
|
// interface method accept
|
||||||
|
// type
|
||||||
|
// package-level accept
|
||||||
|
// local reject
|
||||||
|
//
|
||||||
|
// The only accessible package-level objects are members of pkg itself.
|
||||||
|
//
|
||||||
|
// The cases are handled in four steps:
|
||||||
|
//
|
||||||
|
// 1. reject nil and builtin
|
||||||
|
// 2. accept package-level objects
|
||||||
|
// 3. reject obviously invalid objects
|
||||||
|
// 4. search the API for the path to the param/result/field/method.
|
||||||
|
|
||||||
|
// 1. reference to nil or builtin?
|
||||||
|
if pkg == nil {
|
||||||
|
return "", fmt.Errorf("predeclared %s has no path", obj)
|
||||||
|
}
|
||||||
|
scope := pkg.Scope()
|
||||||
|
|
||||||
|
// 2. package-level object?
|
||||||
|
if scope.Lookup(obj.Name()) == obj {
|
||||||
|
// Only exported objects (and non-exported types) have a path.
|
||||||
|
// Non-exported types may be referenced by other objects.
|
||||||
|
if _, ok := obj.(*types.TypeName); !ok && !obj.Exported() {
|
||||||
|
return "", fmt.Errorf("no path for non-exported %v", obj)
|
||||||
|
}
|
||||||
|
return Path(obj.Name()), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Not a package-level object.
|
||||||
|
// Reject obviously non-viable cases.
|
||||||
|
switch obj := obj.(type) {
|
||||||
|
case *types.TypeName:
|
||||||
|
if _, ok := obj.Type().(*typeparams.TypeParam); !ok {
|
||||||
|
// With the exception of type parameters, only package-level type names
|
||||||
|
// have a path.
|
||||||
|
return "", fmt.Errorf("no path for %v", obj)
|
||||||
|
}
|
||||||
|
case *types.Const, // Only package-level constants have a path.
|
||||||
|
*types.Label, // Labels are function-local.
|
||||||
|
*types.PkgName: // PkgNames are file-local.
|
||||||
|
return "", fmt.Errorf("no path for %v", obj)
|
||||||
|
|
||||||
|
case *types.Var:
|
||||||
|
// Could be:
|
||||||
|
// - a field (obj.IsField())
|
||||||
|
// - a func parameter or result
|
||||||
|
// - a local var.
|
||||||
|
// Sadly there is no way to distinguish
|
||||||
|
// a param/result from a local
|
||||||
|
// so we must proceed to the find.
|
||||||
|
|
||||||
|
case *types.Func:
|
||||||
|
// A func, if not package-level, must be a method.
|
||||||
|
if recv := obj.Type().(*types.Signature).Recv(); recv == nil {
|
||||||
|
return "", fmt.Errorf("func is not a method: %v", obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
if path, ok := enc.concreteMethod(obj); ok {
|
||||||
|
// Fast path for concrete methods that avoids looping over scope.
|
||||||
|
return path, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
panic(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Search the API for the path to the var (field/param/result) or method.
|
||||||
|
|
||||||
|
// First inspect package-level named types.
|
||||||
|
// In the presence of path aliases, these give
|
||||||
|
// the best paths because non-types may
|
||||||
|
// refer to types, but not the reverse.
|
||||||
|
empty := make([]byte, 0, 48) // initial space
|
||||||
|
objs := enc.scopeObjects(scope)
|
||||||
|
for _, o := range objs {
|
||||||
|
tname, ok := o.(*types.TypeName)
|
||||||
|
if !ok {
|
||||||
|
continue // handle non-types in second pass
|
||||||
|
}
|
||||||
|
|
||||||
|
path := append(empty, o.Name()...)
|
||||||
|
path = append(path, opType)
|
||||||
|
|
||||||
|
T := o.Type()
|
||||||
|
|
||||||
|
if tname.IsAlias() {
|
||||||
|
// type alias
|
||||||
|
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, nil); r != nil {
|
||||||
|
// generic named type
|
||||||
|
return Path(r), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// defined (named) type
|
||||||
|
if r := find(obj, T.Underlying(), append(path, opUnderlying), nil); r != nil {
|
||||||
|
return Path(r), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then inspect everything else:
|
||||||
|
// non-types, and declared methods of defined types.
|
||||||
|
for _, o := range objs {
|
||||||
|
path := append(empty, o.Name()...)
|
||||||
|
if _, ok := o.(*types.TypeName); !ok {
|
||||||
|
if o.Exported() {
|
||||||
|
// exported non-type (const, var, func)
|
||||||
|
if r := find(obj, o.Type(), append(path, opType), nil); r != nil {
|
||||||
|
return Path(r), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inspect declared methods of defined types.
|
||||||
|
if T, ok := o.Type().(*types.Named); ok {
|
||||||
|
path = append(path, opType)
|
||||||
|
if !enc.skipMethodSorting {
|
||||||
|
// Note that method index here is always with respect
|
||||||
|
// to canonical ordering of methods, regardless of how
|
||||||
|
// they appear in the underlying type.
|
||||||
|
for i, m := range enc.namedMethods(T) {
|
||||||
|
path2 := appendOpArg(path, opMethod, i)
|
||||||
|
if m == obj {
|
||||||
|
return Path(path2), nil // found declared method
|
||||||
|
}
|
||||||
|
if r := find(obj, m.Type(), append(path2, opType), nil); r != nil {
|
||||||
|
return Path(r), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// This branch must match the logic in the branch above, using go/types
|
||||||
|
// APIs without sorting.
|
||||||
|
for i := 0; i < T.NumMethods(); i++ {
|
||||||
|
m := T.Method(i)
|
||||||
|
path2 := appendOpArg(path, opMethod, i)
|
||||||
|
if m == obj {
|
||||||
|
return Path(path2), nil // found declared method
|
||||||
|
}
|
||||||
|
if r := find(obj, m.Type(), append(path2, opType), nil); r != nil {
|
||||||
|
return Path(r), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("can't find path for %v in %s", obj, pkg.Path())
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendOpArg(path []byte, op byte, arg int) []byte {
|
||||||
|
path = append(path, op)
|
||||||
|
path = strconv.AppendInt(path, int64(arg), 10)
|
||||||
|
return path
|
||||||
|
}
|
||||||
|
|
||||||
|
// concreteMethod returns the path for meth, which must have a non-nil receiver.
|
||||||
|
// The second return value indicates success and may be false if the method is
|
||||||
|
// an interface method or if it is an instantiated method.
|
||||||
|
//
|
||||||
|
// This function is just an optimization that avoids the general scope walking
|
||||||
|
// approach. You are expected to fall back to the general approach if this
|
||||||
|
// function fails.
|
||||||
|
func (enc *Encoder) concreteMethod(meth *types.Func) (Path, bool) {
|
||||||
|
// Concrete methods can only be declared on package-scoped named types. For
|
||||||
|
// that reason we can skip the expensive walk over the package scope: the
|
||||||
|
// path will always be package -> named type -> method. We can trivially get
|
||||||
|
// the type name from the receiver, and only have to look over the type's
|
||||||
|
// methods to find the method index.
|
||||||
|
//
|
||||||
|
// Methods on generic types require special consideration, however. Consider
|
||||||
|
// the following package:
|
||||||
|
//
|
||||||
|
// L1: type S[T any] struct{}
|
||||||
|
// L2: func (recv S[A]) Foo() { recv.Bar() }
|
||||||
|
// L3: func (recv S[B]) Bar() { }
|
||||||
|
// L4: type Alias = S[int]
|
||||||
|
// L5: func _[T any]() { var s S[int]; s.Foo() }
|
||||||
|
//
|
||||||
|
// The receivers of methods on generic types are instantiations. L2 and L3
|
||||||
|
// instantiate S with the type-parameters A and B, which are scoped to the
|
||||||
|
// respective methods. L4 and L5 each instantiate S with int. Each of these
|
||||||
|
// instantiations has its own method set, full of methods (and thus objects)
|
||||||
|
// with receivers whose types are the respective instantiations. In other
|
||||||
|
// words, we have
|
||||||
|
//
|
||||||
|
// S[A].Foo, S[A].Bar
|
||||||
|
// S[B].Foo, S[B].Bar
|
||||||
|
// S[int].Foo, S[int].Bar
|
||||||
|
//
|
||||||
|
// We may thus be trying to produce object paths for any of these objects.
|
||||||
|
//
|
||||||
|
// S[A].Foo and S[B].Bar are the origin methods, and their paths are S.Foo
|
||||||
|
// and S.Bar, which are the paths that this function naturally produces.
|
||||||
|
//
|
||||||
|
// S[A].Bar, S[B].Foo, and both methods on S[int] are instantiations that
|
||||||
|
// don't correspond to the origin methods. For S[int], this is significant.
|
||||||
|
// The most precise object path for S[int].Foo, for example, is Alias.Foo,
|
||||||
|
// not S.Foo. Our function, however, would produce S.Foo, which would
|
||||||
|
// resolve to a different object.
|
||||||
|
//
|
||||||
|
// For S[A].Bar and S[B].Foo it could be argued that S.Bar and S.Foo are
|
||||||
|
// still the correct paths, since only the origin methods have meaningful
|
||||||
|
// paths. But this is likely only true for trivial cases and has edge cases.
|
||||||
|
// Since this function is only an optimization, we err on the side of giving
|
||||||
|
// up, deferring to the slower but definitely correct algorithm. Most users
|
||||||
|
// of objectpath will only be giving us origin methods, anyway, as referring
|
||||||
|
// to instantiated methods is usually not useful.
|
||||||
|
|
||||||
|
if typeparams.OriginMethod(meth) != meth {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
recvT := meth.Type().(*types.Signature).Recv().Type()
|
||||||
|
if ptr, ok := recvT.(*types.Pointer); ok {
|
||||||
|
recvT = ptr.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
named, ok := recvT.(*types.Named)
|
||||||
|
if !ok {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
if types.IsInterface(named) {
|
||||||
|
// Named interfaces don't have to be package-scoped
|
||||||
|
//
|
||||||
|
// TODO(dominikh): opt: if scope.Lookup(name) == named, then we can apply this optimization to interface
|
||||||
|
// methods, too, I think.
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Preallocate space for the name, opType, opMethod, and some digits.
|
||||||
|
name := named.Obj().Name()
|
||||||
|
path := make([]byte, 0, len(name)+8)
|
||||||
|
path = append(path, name...)
|
||||||
|
path = append(path, opType)
|
||||||
|
|
||||||
|
if !enc.skipMethodSorting {
|
||||||
|
for i, m := range enc.namedMethods(named) {
|
||||||
|
if m == meth {
|
||||||
|
path = appendOpArg(path, opMethod, i)
|
||||||
|
return Path(path), true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// This branch must match the logic of the branch above, using go/types
|
||||||
|
// APIs without sorting.
|
||||||
|
for i := 0; i < named.NumMethods(); i++ {
|
||||||
|
m := named.Method(i)
|
||||||
|
if m == meth {
|
||||||
|
path = appendOpArg(path, opMethod, i)
|
||||||
|
return Path(path), true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Due to golang/go#59944, go/types fails to associate the receiver with
|
||||||
|
// certain methods on cgo types.
|
||||||
|
//
|
||||||
|
// TODO(rfindley): replace this panic once golang/go#59944 is fixed in all Go
|
||||||
|
// versions gopls supports.
|
||||||
|
return "", false
|
||||||
|
// panic(fmt.Sprintf("couldn't find method %s on type %s; methods: %#v", meth, named, enc.namedMethods(named)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// find finds obj within type T, returning the path to it, or nil if not found.
|
||||||
|
//
|
||||||
|
// 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), seen)
|
||||||
|
case *types.Slice:
|
||||||
|
return find(obj, T.Elem(), append(path, opElem), seen)
|
||||||
|
case *types.Array:
|
||||||
|
return find(obj, T.Elem(), append(path, opElem), seen)
|
||||||
|
case *types.Chan:
|
||||||
|
return find(obj, T.Elem(), append(path, opElem), seen)
|
||||||
|
case *types.Map:
|
||||||
|
if r := find(obj, T.Key(), append(path, opKey), seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
return find(obj, T.Elem(), append(path, opElem), seen)
|
||||||
|
case *types.Signature:
|
||||||
|
if r := findTypeParam(obj, typeparams.ForSignature(T), path, seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
if r := find(obj, T.Params(), append(path, opParams), seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
return find(obj, T.Results(), append(path, opResults), seen)
|
||||||
|
case *types.Struct:
|
||||||
|
for i := 0; i < T.NumFields(); i++ {
|
||||||
|
fld := T.Field(i)
|
||||||
|
path2 := appendOpArg(path, opField, i)
|
||||||
|
if fld == obj {
|
||||||
|
return path2 // found field var
|
||||||
|
}
|
||||||
|
if r := find(obj, fld.Type(), append(path2, opType), seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
case *types.Tuple:
|
||||||
|
for i := 0; i < T.Len(); i++ {
|
||||||
|
v := T.At(i)
|
||||||
|
path2 := appendOpArg(path, opAt, i)
|
||||||
|
if v == obj {
|
||||||
|
return path2 // found param/result var
|
||||||
|
}
|
||||||
|
if r := find(obj, v.Type(), append(path2, opType), seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
case *types.Interface:
|
||||||
|
for i := 0; i < T.NumMethods(); i++ {
|
||||||
|
m := T.Method(i)
|
||||||
|
path2 := appendOpArg(path, opMethod, i)
|
||||||
|
if m == obj {
|
||||||
|
return path2 // found interface method
|
||||||
|
}
|
||||||
|
if r := find(obj, m.Type(), append(path2, opType), seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
case *typeparams.TypeParam:
|
||||||
|
name := T.Obj()
|
||||||
|
if name == obj {
|
||||||
|
return append(path, opObj)
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
panic(T)
|
||||||
|
}
|
||||||
|
|
||||||
|
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, seen); r != nil {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Object returns the object denoted by path p within the package pkg.
|
||||||
|
func Object(pkg *types.Package, p Path) (types.Object, error) {
|
||||||
|
return object(pkg, string(p), false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: the skipMethodSorting parameter must match the value of
|
||||||
|
// Encoder.skipMethodSorting used during encoding.
|
||||||
|
func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.Object, error) {
|
||||||
|
if pathstr == "" {
|
||||||
|
return nil, fmt.Errorf("empty path")
|
||||||
|
}
|
||||||
|
|
||||||
|
var pkgobj, suffix string
|
||||||
|
if dot := strings.IndexByte(pathstr, opType); dot < 0 {
|
||||||
|
pkgobj = pathstr
|
||||||
|
} else {
|
||||||
|
pkgobj = pathstr[:dot]
|
||||||
|
suffix = pathstr[dot:] // suffix starts with "."
|
||||||
|
}
|
||||||
|
|
||||||
|
obj := pkg.Scope().Lookup(pkgobj)
|
||||||
|
if obj == nil {
|
||||||
|
return nil, fmt.Errorf("package %s does not contain %q", pkg.Path(), pkgobj)
|
||||||
|
}
|
||||||
|
|
||||||
|
// abstraction of *types.{Pointer,Slice,Array,Chan,Map}
|
||||||
|
type hasElem interface {
|
||||||
|
Elem() types.Type
|
||||||
|
}
|
||||||
|
// abstraction of *types.{Named,Signature}
|
||||||
|
type hasTypeParams interface {
|
||||||
|
TypeParams() *typeparams.TypeParamList
|
||||||
|
}
|
||||||
|
// abstraction of *types.{Named,TypeParam}
|
||||||
|
type hasObj interface {
|
||||||
|
Obj() *types.TypeName
|
||||||
|
}
|
||||||
|
|
||||||
|
// The loop state is the pair (t, obj),
|
||||||
|
// exactly one of which is non-nil, initially obj.
|
||||||
|
// All suffixes start with '.' (the only object->type operation),
|
||||||
|
// followed by optional type->type operations,
|
||||||
|
// then a type->object operation.
|
||||||
|
// The cycle then repeats.
|
||||||
|
var t types.Type
|
||||||
|
for suffix != "" {
|
||||||
|
code := suffix[0]
|
||||||
|
suffix = suffix[1:]
|
||||||
|
|
||||||
|
// Codes [AFM] have an integer operand.
|
||||||
|
var index int
|
||||||
|
switch code {
|
||||||
|
case opAt, opField, opMethod, opTypeParam:
|
||||||
|
rest := strings.TrimLeft(suffix, "0123456789")
|
||||||
|
numerals := suffix[:len(suffix)-len(rest)]
|
||||||
|
suffix = rest
|
||||||
|
i, err := strconv.Atoi(numerals)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid path: bad numeric operand %q for code %q", numerals, code)
|
||||||
|
}
|
||||||
|
index = int(i)
|
||||||
|
case opObj:
|
||||||
|
// no operand
|
||||||
|
default:
|
||||||
|
// The suffix must end with a type->object operation.
|
||||||
|
if suffix == "" {
|
||||||
|
return nil, fmt.Errorf("invalid path: ends with %q, want [AFMO]", code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if code == opType {
|
||||||
|
if t != nil {
|
||||||
|
return nil, fmt.Errorf("invalid path: unexpected %q in type context", opType)
|
||||||
|
}
|
||||||
|
t = obj.Type()
|
||||||
|
obj = nil
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if t == nil {
|
||||||
|
return nil, fmt.Errorf("invalid path: code %q in object context", code)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inv: t != nil, obj == nil
|
||||||
|
|
||||||
|
switch code {
|
||||||
|
case opElem:
|
||||||
|
hasElem, ok := t.(hasElem) // Pointer, Slice, Array, Chan, Map
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want pointer, slice, array, chan or map)", code, t, t)
|
||||||
|
}
|
||||||
|
t = hasElem.Elem()
|
||||||
|
|
||||||
|
case opKey:
|
||||||
|
mapType, ok := t.(*types.Map)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want map)", code, t, t)
|
||||||
|
}
|
||||||
|
t = mapType.Key()
|
||||||
|
|
||||||
|
case opParams:
|
||||||
|
sig, ok := t.(*types.Signature)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want signature)", code, t, t)
|
||||||
|
}
|
||||||
|
t = sig.Params()
|
||||||
|
|
||||||
|
case opResults:
|
||||||
|
sig, ok := t.(*types.Signature)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want signature)", code, t, t)
|
||||||
|
}
|
||||||
|
t = sig.Results()
|
||||||
|
|
||||||
|
case opUnderlying:
|
||||||
|
named, ok := t.(*types.Named)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want named)", code, t, t)
|
||||||
|
}
|
||||||
|
t = named.Underlying()
|
||||||
|
|
||||||
|
case opTypeParam:
|
||||||
|
hasTypeParams, ok := t.(hasTypeParams) // Named, Signature
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want named or signature)", code, t, t)
|
||||||
|
}
|
||||||
|
tparams := hasTypeParams.TypeParams()
|
||||||
|
if n := tparams.Len(); index >= n {
|
||||||
|
return nil, fmt.Errorf("tuple index %d out of range [0-%d)", index, n)
|
||||||
|
}
|
||||||
|
t = tparams.At(index)
|
||||||
|
|
||||||
|
case opConstraint:
|
||||||
|
tparam, ok := t.(*typeparams.TypeParam)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want type parameter)", code, t, t)
|
||||||
|
}
|
||||||
|
t = tparam.Constraint()
|
||||||
|
|
||||||
|
case opAt:
|
||||||
|
tuple, ok := t.(*types.Tuple)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want tuple)", code, t, t)
|
||||||
|
}
|
||||||
|
if n := tuple.Len(); index >= n {
|
||||||
|
return nil, fmt.Errorf("tuple index %d out of range [0-%d)", index, n)
|
||||||
|
}
|
||||||
|
obj = tuple.At(index)
|
||||||
|
t = nil
|
||||||
|
|
||||||
|
case opField:
|
||||||
|
structType, ok := t.(*types.Struct)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want struct)", code, t, t)
|
||||||
|
}
|
||||||
|
if n := structType.NumFields(); index >= n {
|
||||||
|
return nil, fmt.Errorf("field index %d out of range [0-%d)", index, n)
|
||||||
|
}
|
||||||
|
obj = structType.Field(index)
|
||||||
|
t = nil
|
||||||
|
|
||||||
|
case opMethod:
|
||||||
|
switch t := t.(type) {
|
||||||
|
case *types.Interface:
|
||||||
|
if index >= t.NumMethods() {
|
||||||
|
return nil, fmt.Errorf("method index %d out of range [0-%d)", index, t.NumMethods())
|
||||||
|
}
|
||||||
|
obj = t.Method(index) // Id-ordered
|
||||||
|
|
||||||
|
case *types.Named:
|
||||||
|
if index >= t.NumMethods() {
|
||||||
|
return nil, fmt.Errorf("method index %d out of range [0-%d)", index, t.NumMethods())
|
||||||
|
}
|
||||||
|
if skipMethodSorting {
|
||||||
|
obj = t.Method(index)
|
||||||
|
} else {
|
||||||
|
methods := namedMethods(t) // (unmemoized)
|
||||||
|
obj = methods[index] // Id-ordered
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want interface or named)", code, t, t)
|
||||||
|
}
|
||||||
|
t = nil
|
||||||
|
|
||||||
|
case opObj:
|
||||||
|
hasObj, ok := t.(hasObj)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want named or type param)", code, t, t)
|
||||||
|
}
|
||||||
|
obj = hasObj.Obj()
|
||||||
|
t = nil
|
||||||
|
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("invalid path: unknown code %q", code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if obj.Pkg() != pkg {
|
||||||
|
return nil, fmt.Errorf("path denotes %s, which belongs to a different package", obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj, nil // success
|
||||||
|
}
|
||||||
|
|
||||||
|
// namedMethods returns the methods of a Named type in ascending Id order.
|
||||||
|
func namedMethods(named *types.Named) []*types.Func {
|
||||||
|
methods := make([]*types.Func, named.NumMethods())
|
||||||
|
for i := range methods {
|
||||||
|
methods[i] = named.Method(i)
|
||||||
|
}
|
||||||
|
sort.Slice(methods, func(i, j int) bool {
|
||||||
|
return methods[i].Id() < methods[j].Id()
|
||||||
|
})
|
||||||
|
return methods
|
||||||
|
}
|
||||||
|
|
||||||
|
// namedMethods is a memoization of the namedMethods function. Callers must not modify the result.
|
||||||
|
func (enc *Encoder) namedMethods(named *types.Named) []*types.Func {
|
||||||
|
m := enc.namedMethodsMemo
|
||||||
|
if m == nil {
|
||||||
|
m = make(map[*types.Named][]*types.Func)
|
||||||
|
enc.namedMethodsMemo = m
|
||||||
|
}
|
||||||
|
methods, ok := m[named]
|
||||||
|
if !ok {
|
||||||
|
methods = namedMethods(named) // allocates and sorts
|
||||||
|
m[named] = methods
|
||||||
|
}
|
||||||
|
return methods
|
||||||
|
}
|
||||||
|
|
||||||
|
// scopeObjects is a memoization of scope objects.
|
||||||
|
// Callers must not modify the result.
|
||||||
|
func (enc *Encoder) scopeObjects(scope *types.Scope) []types.Object {
|
||||||
|
m := enc.scopeMemo
|
||||||
|
if m == nil {
|
||||||
|
m = make(map[*types.Scope][]types.Object)
|
||||||
|
enc.scopeMemo = m
|
||||||
|
}
|
||||||
|
objs, ok := m[scope]
|
||||||
|
if !ok {
|
||||||
|
names := scope.Names() // allocates and sorts
|
||||||
|
objs = make([]types.Object, len(names))
|
||||||
|
for i, name := range names {
|
||||||
|
objs[i] = scope.Lookup(name)
|
||||||
|
}
|
||||||
|
m[scope] = objs
|
||||||
|
}
|
||||||
|
return objs
|
||||||
|
}
|
2
vendor/golang.org/x/tools/internal/event/tag/tag.go
generated
vendored
2
vendor/golang.org/x/tools/internal/event/tag/tag.go
generated
vendored
@ -19,7 +19,7 @@ var (
|
|||||||
File = keys.NewString("file", "")
|
File = keys.NewString("file", "")
|
||||||
Directory = keys.New("directory", "")
|
Directory = keys.New("directory", "")
|
||||||
URI = keys.New("URI", "")
|
URI = keys.New("URI", "")
|
||||||
Package = keys.NewString("package", "") // Package ID
|
Package = keys.NewString("package", "") // sorted comma-separated list of Package IDs
|
||||||
PackagePath = keys.NewString("package_path", "")
|
PackagePath = keys.NewString("package_path", "")
|
||||||
Query = keys.New("query", "")
|
Query = keys.New("query", "")
|
||||||
Snapshot = keys.NewUInt64("snapshot", "")
|
Snapshot = keys.NewUInt64("snapshot", "")
|
||||||
|
171
vendor/golang.org/x/tools/internal/gcimporter/iexport.go
generated
vendored
171
vendor/golang.org/x/tools/internal/gcimporter/iexport.go
generated
vendored
@ -22,17 +22,23 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/types/objectpath"
|
||||||
"golang.org/x/tools/internal/tokeninternal"
|
"golang.org/x/tools/internal/tokeninternal"
|
||||||
"golang.org/x/tools/internal/typeparams"
|
"golang.org/x/tools/internal/typeparams"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IExportShallow encodes "shallow" export data for the specified package.
|
// IExportShallow encodes "shallow" export data for the specified package.
|
||||||
//
|
//
|
||||||
// No promises are made about the encoding other than that it can be
|
// No promises are made about the encoding other than that it can be decoded by
|
||||||
// decoded by the same version of IIExportShallow. If you plan to save
|
// the same version of IIExportShallow. If you plan to save export data in the
|
||||||
// export data in the file system, be sure to include a cryptographic
|
// file system, be sure to include a cryptographic digest of the executable in
|
||||||
// digest of the executable in the key to avoid version skew.
|
// the key to avoid version skew.
|
||||||
func IExportShallow(fset *token.FileSet, pkg *types.Package) ([]byte, error) {
|
//
|
||||||
|
// If the provided reportf func is non-nil, it will be used for reporting bugs
|
||||||
|
// encountered during export.
|
||||||
|
// TODO(rfindley): remove reportf when we are confident enough in the new
|
||||||
|
// objectpath encoding.
|
||||||
|
func IExportShallow(fset *token.FileSet, pkg *types.Package, reportf ReportFunc) ([]byte, error) {
|
||||||
// In principle this operation can only fail if out.Write fails,
|
// In principle this operation can only fail if out.Write fails,
|
||||||
// but that's impossible for bytes.Buffer---and as a matter of
|
// but that's impossible for bytes.Buffer---and as a matter of
|
||||||
// fact iexportCommon doesn't even check for I/O errors.
|
// fact iexportCommon doesn't even check for I/O errors.
|
||||||
@ -47,19 +53,27 @@ func IExportShallow(fset *token.FileSet, pkg *types.Package) ([]byte, error) {
|
|||||||
// IImportShallow decodes "shallow" types.Package data encoded by
|
// IImportShallow decodes "shallow" types.Package data encoded by
|
||||||
// IExportShallow in the same executable. This function cannot import data from
|
// IExportShallow in the same executable. This function cannot import data from
|
||||||
// cmd/compile or gcexportdata.Write.
|
// cmd/compile or gcexportdata.Write.
|
||||||
func IImportShallow(fset *token.FileSet, getPackage GetPackageFunc, data []byte, path string, insert InsertType) (*types.Package, error) {
|
//
|
||||||
|
// The importer calls getPackages to obtain package symbols for all
|
||||||
|
// packages mentioned in the export data, including the one being
|
||||||
|
// decoded.
|
||||||
|
//
|
||||||
|
// If the provided reportf func is non-nil, it will be used for reporting bugs
|
||||||
|
// encountered during import.
|
||||||
|
// TODO(rfindley): remove reportf when we are confident enough in the new
|
||||||
|
// objectpath encoding.
|
||||||
|
func IImportShallow(fset *token.FileSet, getPackages GetPackagesFunc, data []byte, path string, reportf ReportFunc) (*types.Package, error) {
|
||||||
const bundle = false
|
const bundle = false
|
||||||
pkgs, err := iimportCommon(fset, getPackage, data, bundle, path, insert)
|
const shallow = true
|
||||||
|
pkgs, err := iimportCommon(fset, getPackages, data, bundle, path, shallow, reportf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return pkgs[0], nil
|
return pkgs[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// InsertType is the type of a function that creates a types.TypeName
|
// ReportFunc is the type of a function used to report formatted bugs.
|
||||||
// object for a named type and inserts it into the scope of the
|
type ReportFunc = func(string, ...interface{})
|
||||||
// specified Package.
|
|
||||||
type InsertType = func(pkg *types.Package, name string)
|
|
||||||
|
|
||||||
// Current bundled export format version. Increase with each format change.
|
// Current bundled export format version. Increase with each format change.
|
||||||
// 0: initial implementation
|
// 0: initial implementation
|
||||||
@ -314,6 +328,7 @@ type iexporter struct {
|
|||||||
version int
|
version int
|
||||||
|
|
||||||
shallow bool // don't put types from other packages in the index
|
shallow bool // don't put types from other packages in the index
|
||||||
|
objEncoder *objectpath.Encoder // encodes objects from other packages in shallow mode; lazily allocated
|
||||||
localpkg *types.Package // (nil in bundle mode)
|
localpkg *types.Package // (nil in bundle mode)
|
||||||
|
|
||||||
// allPkgs tracks all packages that have been referenced by
|
// allPkgs tracks all packages that have been referenced by
|
||||||
@ -354,6 +369,17 @@ func (p *iexporter) trace(format string, args ...interface{}) {
|
|||||||
fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...)
|
fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// objectpathEncoder returns the lazily allocated objectpath.Encoder to use
|
||||||
|
// when encoding objects in other packages during shallow export.
|
||||||
|
//
|
||||||
|
// Using a shared Encoder amortizes some of cost of objectpath search.
|
||||||
|
func (p *iexporter) objectpathEncoder() *objectpath.Encoder {
|
||||||
|
if p.objEncoder == nil {
|
||||||
|
p.objEncoder = new(objectpath.Encoder)
|
||||||
|
}
|
||||||
|
return p.objEncoder
|
||||||
|
}
|
||||||
|
|
||||||
// stringOff returns the offset of s within the string section.
|
// stringOff returns the offset of s within the string section.
|
||||||
// If not already present, it's added to the end.
|
// If not already present, it's added to the end.
|
||||||
func (p *iexporter) stringOff(s string) uint64 {
|
func (p *iexporter) stringOff(s string) uint64 {
|
||||||
@ -413,7 +439,6 @@ type exportWriter struct {
|
|||||||
p *iexporter
|
p *iexporter
|
||||||
|
|
||||||
data intWriter
|
data intWriter
|
||||||
currPkg *types.Package
|
|
||||||
prevFile string
|
prevFile string
|
||||||
prevLine int64
|
prevLine int64
|
||||||
prevColumn int64
|
prevColumn int64
|
||||||
@ -436,7 +461,6 @@ func (p *iexporter) doDecl(obj types.Object) {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
w := p.newWriter()
|
w := p.newWriter()
|
||||||
w.setPkg(obj.Pkg(), false)
|
|
||||||
|
|
||||||
switch obj := obj.(type) {
|
switch obj := obj.(type) {
|
||||||
case *types.Var:
|
case *types.Var:
|
||||||
@ -673,6 +697,9 @@ func (w *exportWriter) qualifiedType(obj *types.TypeName) {
|
|||||||
w.pkg(obj.Pkg())
|
w.pkg(obj.Pkg())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(rfindley): what does 'pkg' even mean here? It would be better to pass
|
||||||
|
// it in explicitly into signatures and structs that may use it for
|
||||||
|
// constructing fields.
|
||||||
func (w *exportWriter) typ(t types.Type, pkg *types.Package) {
|
func (w *exportWriter) typ(t types.Type, pkg *types.Package) {
|
||||||
w.data.uint64(w.p.typOff(t, pkg))
|
w.data.uint64(w.p.typOff(t, pkg))
|
||||||
}
|
}
|
||||||
@ -764,30 +791,53 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) {
|
|||||||
|
|
||||||
case *types.Signature:
|
case *types.Signature:
|
||||||
w.startType(signatureType)
|
w.startType(signatureType)
|
||||||
w.setPkg(pkg, true)
|
w.pkg(pkg)
|
||||||
w.signature(t)
|
w.signature(t)
|
||||||
|
|
||||||
case *types.Struct:
|
case *types.Struct:
|
||||||
w.startType(structType)
|
w.startType(structType)
|
||||||
n := t.NumFields()
|
n := t.NumFields()
|
||||||
|
// Even for struct{} we must emit some qualifying package, because that's
|
||||||
|
// what the compiler does, and thus that's what the importer expects.
|
||||||
|
fieldPkg := pkg
|
||||||
if n > 0 {
|
if n > 0 {
|
||||||
w.setPkg(t.Field(0).Pkg(), true) // qualifying package for field objects
|
fieldPkg = t.Field(0).Pkg()
|
||||||
} else {
|
|
||||||
w.setPkg(pkg, true)
|
|
||||||
}
|
}
|
||||||
|
if fieldPkg == nil {
|
||||||
|
// TODO(rfindley): improve this very hacky logic.
|
||||||
|
//
|
||||||
|
// The importer expects a package to be set for all struct types, even
|
||||||
|
// those with no fields. A better encoding might be to set NumFields
|
||||||
|
// before pkg. setPkg panics with a nil package, which may be possible
|
||||||
|
// to reach with invalid packages (and perhaps valid packages, too?), so
|
||||||
|
// (arbitrarily) set the localpkg if available.
|
||||||
|
//
|
||||||
|
// Alternatively, we may be able to simply guarantee that pkg != nil, by
|
||||||
|
// reconsidering the encoding of constant values.
|
||||||
|
if w.p.shallow {
|
||||||
|
fieldPkg = w.p.localpkg
|
||||||
|
} else {
|
||||||
|
panic(internalErrorf("no package to set for empty struct"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
w.pkg(fieldPkg)
|
||||||
w.uint64(uint64(n))
|
w.uint64(uint64(n))
|
||||||
|
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
f := t.Field(i)
|
f := t.Field(i)
|
||||||
|
if w.p.shallow {
|
||||||
|
w.objectPath(f)
|
||||||
|
}
|
||||||
w.pos(f.Pos())
|
w.pos(f.Pos())
|
||||||
w.string(f.Name()) // unexported fields implicitly qualified by prior setPkg
|
w.string(f.Name()) // unexported fields implicitly qualified by prior setPkg
|
||||||
w.typ(f.Type(), pkg)
|
w.typ(f.Type(), fieldPkg)
|
||||||
w.bool(f.Anonymous())
|
w.bool(f.Anonymous())
|
||||||
w.string(t.Tag(i)) // note (or tag)
|
w.string(t.Tag(i)) // note (or tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case *types.Interface:
|
case *types.Interface:
|
||||||
w.startType(interfaceType)
|
w.startType(interfaceType)
|
||||||
w.setPkg(pkg, true)
|
w.pkg(pkg)
|
||||||
|
|
||||||
n := t.NumEmbeddeds()
|
n := t.NumEmbeddeds()
|
||||||
w.uint64(uint64(n))
|
w.uint64(uint64(n))
|
||||||
@ -802,10 +852,16 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) {
|
|||||||
w.typ(ft, tPkg)
|
w.typ(ft, tPkg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// See comment for struct fields. In shallow mode we change the encoding
|
||||||
|
// for interface methods that are promoted from other packages.
|
||||||
|
|
||||||
n = t.NumExplicitMethods()
|
n = t.NumExplicitMethods()
|
||||||
w.uint64(uint64(n))
|
w.uint64(uint64(n))
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
m := t.ExplicitMethod(i)
|
m := t.ExplicitMethod(i)
|
||||||
|
if w.p.shallow {
|
||||||
|
w.objectPath(m)
|
||||||
|
}
|
||||||
w.pos(m.Pos())
|
w.pos(m.Pos())
|
||||||
w.string(m.Name())
|
w.string(m.Name())
|
||||||
sig, _ := m.Type().(*types.Signature)
|
sig, _ := m.Type().(*types.Signature)
|
||||||
@ -827,12 +883,61 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *exportWriter) setPkg(pkg *types.Package, write bool) {
|
// objectPath writes the package and objectPath to use to look up obj in a
|
||||||
if write {
|
// different package, when encoding in "shallow" mode.
|
||||||
w.pkg(pkg)
|
//
|
||||||
|
// When doing a shallow import, the importer creates only the local package,
|
||||||
|
// and requests package symbols for dependencies from the client.
|
||||||
|
// However, certain types defined in the local package may hold objects defined
|
||||||
|
// (perhaps deeply) within another package.
|
||||||
|
//
|
||||||
|
// For example, consider the following:
|
||||||
|
//
|
||||||
|
// package a
|
||||||
|
// func F() chan * map[string] struct { X int }
|
||||||
|
//
|
||||||
|
// package b
|
||||||
|
// import "a"
|
||||||
|
// var B = a.F()
|
||||||
|
//
|
||||||
|
// In this example, the type of b.B holds fields defined in package a.
|
||||||
|
// In order to have the correct canonical objects for the field defined in the
|
||||||
|
// type of B, they are encoded as objectPaths and later looked up in the
|
||||||
|
// importer. The same problem applies to interface methods.
|
||||||
|
func (w *exportWriter) objectPath(obj types.Object) {
|
||||||
|
if obj.Pkg() == nil || obj.Pkg() == w.p.localpkg {
|
||||||
|
// obj.Pkg() may be nil for the builtin error.Error.
|
||||||
|
// In this case, or if obj is declared in the local package, no need to
|
||||||
|
// encode.
|
||||||
|
w.string("")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
objectPath, err := w.p.objectpathEncoder().For(obj)
|
||||||
w.currPkg = pkg
|
if err != nil {
|
||||||
|
// Fall back to the empty string, which will cause the importer to create a
|
||||||
|
// new object, which matches earlier behavior. Creating a new object is
|
||||||
|
// sufficient for many purposes (such as type checking), but causes certain
|
||||||
|
// references algorithms to fail (golang/go#60819). However, we didn't
|
||||||
|
// notice this problem during months of gopls@v0.12.0 testing.
|
||||||
|
//
|
||||||
|
// TODO(golang/go#61674): this workaround is insufficient, as in the case
|
||||||
|
// where the field forwarded from an instantiated type that may not appear
|
||||||
|
// in the export data of the original package:
|
||||||
|
//
|
||||||
|
// // package a
|
||||||
|
// type A[P any] struct{ F P }
|
||||||
|
//
|
||||||
|
// // package b
|
||||||
|
// type B a.A[int]
|
||||||
|
//
|
||||||
|
// We need to update references algorithms not to depend on this
|
||||||
|
// de-duplication, at which point we may want to simply remove the
|
||||||
|
// workaround here.
|
||||||
|
w.string("")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.string(string(objectPath))
|
||||||
|
w.pkg(obj.Pkg())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *exportWriter) signature(sig *types.Signature) {
|
func (w *exportWriter) signature(sig *types.Signature) {
|
||||||
@ -913,6 +1018,17 @@ func (w *exportWriter) value(typ types.Type, v constant.Value) {
|
|||||||
w.int64(int64(v.Kind()))
|
w.int64(int64(v.Kind()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v.Kind() == constant.Unknown {
|
||||||
|
// golang/go#60605: treat unknown constant values as if they have invalid type
|
||||||
|
//
|
||||||
|
// This loses some fidelity over the package type-checked from source, but that
|
||||||
|
// is acceptable.
|
||||||
|
//
|
||||||
|
// TODO(rfindley): we should switch on the recorded constant kind rather
|
||||||
|
// than the constant type
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType {
|
switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType {
|
||||||
case types.IsBoolean:
|
case types.IsBoolean:
|
||||||
w.bool(constant.BoolVal(v))
|
w.bool(constant.BoolVal(v))
|
||||||
@ -1194,6 +1310,13 @@ type internalError string
|
|||||||
|
|
||||||
func (e internalError) Error() string { return "gcimporter: " + string(e) }
|
func (e internalError) Error() string { return "gcimporter: " + string(e) }
|
||||||
|
|
||||||
|
// TODO(adonovan): make this call panic, so that it's symmetric with errorf.
|
||||||
|
// Otherwise it's easy to forget to do anything with the error.
|
||||||
|
//
|
||||||
|
// TODO(adonovan): also, consider switching the names "errorf" and
|
||||||
|
// "internalErrorf" as the former is used for bugs, whose cause is
|
||||||
|
// internal inconsistency, whereas the latter is used for ordinary
|
||||||
|
// situations like bad input, whose cause is external.
|
||||||
func internalErrorf(format string, args ...interface{}) error {
|
func internalErrorf(format string, args ...interface{}) error {
|
||||||
return internalError(fmt.Sprintf(format, args...))
|
return internalError(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
188
vendor/golang.org/x/tools/internal/gcimporter/iimport.go
generated
vendored
188
vendor/golang.org/x/tools/internal/gcimporter/iimport.go
generated
vendored
@ -21,6 +21,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/types/objectpath"
|
||||||
"golang.org/x/tools/internal/typeparams"
|
"golang.org/x/tools/internal/typeparams"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -85,7 +86,7 @@ const (
|
|||||||
// If the export data version is not recognized or the format is otherwise
|
// If the export data version is not recognized or the format is otherwise
|
||||||
// compromised, an error is returned.
|
// compromised, an error is returned.
|
||||||
func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) {
|
func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) {
|
||||||
pkgs, err := iimportCommon(fset, GetPackageFromMap(imports), data, false, path, nil)
|
pkgs, err := iimportCommon(fset, GetPackagesFromMap(imports), data, false, path, false, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, nil, err
|
return 0, nil, err
|
||||||
}
|
}
|
||||||
@ -94,33 +95,49 @@ func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []
|
|||||||
|
|
||||||
// IImportBundle imports a set of packages from the serialized package bundle.
|
// IImportBundle imports a set of packages from the serialized package bundle.
|
||||||
func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) {
|
func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) {
|
||||||
return iimportCommon(fset, GetPackageFromMap(imports), data, true, "", nil)
|
return iimportCommon(fset, GetPackagesFromMap(imports), data, true, "", false, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// A GetPackageFunc is a function that gets the package with the given path
|
// A GetPackagesFunc function obtains the non-nil symbols for a set of
|
||||||
// from the importer state, creating it (with the specified name) if necessary.
|
// packages, creating and recursively importing them as needed. An
|
||||||
// It is an abstraction of the map historically used to memoize package creation.
|
// implementation should store each package symbol is in the Pkg
|
||||||
|
// field of the items array.
|
||||||
//
|
//
|
||||||
// Two calls with the same path must return the same package.
|
// Any error causes importing to fail. This can be used to quickly read
|
||||||
//
|
// the import manifest of an export data file without fully decoding it.
|
||||||
// If the given getPackage func returns nil, the import will fail.
|
type GetPackagesFunc = func(items []GetPackagesItem) error
|
||||||
type GetPackageFunc = func(path, name string) *types.Package
|
|
||||||
|
|
||||||
// GetPackageFromMap returns a GetPackageFunc that retrieves packages from the
|
// A GetPackagesItem is a request from the importer for the package
|
||||||
// given map of package path -> package.
|
// symbol of the specified name and path.
|
||||||
|
type GetPackagesItem struct {
|
||||||
|
Name, Path string
|
||||||
|
Pkg *types.Package // to be filled in by GetPackagesFunc call
|
||||||
|
|
||||||
|
// private importer state
|
||||||
|
pathOffset uint64
|
||||||
|
nameIndex map[string]uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPackagesFromMap returns a GetPackagesFunc that retrieves
|
||||||
|
// packages from the given map of package path to package.
|
||||||
//
|
//
|
||||||
// The resulting func may mutate m: if a requested package is not found, a new
|
// The returned function may mutate m: each requested package that is not
|
||||||
// package will be inserted into m.
|
// found is created with types.NewPackage and inserted into m.
|
||||||
func GetPackageFromMap(m map[string]*types.Package) GetPackageFunc {
|
func GetPackagesFromMap(m map[string]*types.Package) GetPackagesFunc {
|
||||||
return func(path, name string) *types.Package {
|
return func(items []GetPackagesItem) error {
|
||||||
if _, ok := m[path]; !ok {
|
for i, item := range items {
|
||||||
m[path] = types.NewPackage(path, name)
|
pkg, ok := m[item.Path]
|
||||||
|
if !ok {
|
||||||
|
pkg = types.NewPackage(item.Path, item.Name)
|
||||||
|
m[item.Path] = pkg
|
||||||
}
|
}
|
||||||
return m[path]
|
items[i].Pkg = pkg
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte, bundle bool, path string, insert InsertType) (pkgs []*types.Package, err error) {
|
func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte, bundle bool, path string, shallow bool, reportf ReportFunc) (pkgs []*types.Package, err error) {
|
||||||
const currentVersion = iexportVersionCurrent
|
const currentVersion = iexportVersionCurrent
|
||||||
version := int64(-1)
|
version := int64(-1)
|
||||||
if !debug {
|
if !debug {
|
||||||
@ -159,7 +176,7 @@ func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte,
|
|||||||
sLen := int64(r.uint64())
|
sLen := int64(r.uint64())
|
||||||
var fLen int64
|
var fLen int64
|
||||||
var fileOffset []uint64
|
var fileOffset []uint64
|
||||||
if insert != nil {
|
if shallow {
|
||||||
// Shallow mode uses a different position encoding.
|
// Shallow mode uses a different position encoding.
|
||||||
fLen = int64(r.uint64())
|
fLen = int64(r.uint64())
|
||||||
fileOffset = make([]uint64, r.uint64())
|
fileOffset = make([]uint64, r.uint64())
|
||||||
@ -178,7 +195,8 @@ func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte,
|
|||||||
p := iimporter{
|
p := iimporter{
|
||||||
version: int(version),
|
version: int(version),
|
||||||
ipath: path,
|
ipath: path,
|
||||||
insert: insert,
|
shallow: shallow,
|
||||||
|
reportf: reportf,
|
||||||
|
|
||||||
stringData: stringData,
|
stringData: stringData,
|
||||||
stringCache: make(map[uint64]string),
|
stringCache: make(map[uint64]string),
|
||||||
@ -205,8 +223,9 @@ func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte,
|
|||||||
p.typCache[uint64(i)] = pt
|
p.typCache[uint64(i)] = pt
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgList := make([]*types.Package, r.uint64())
|
// Gather the relevant packages from the manifest.
|
||||||
for i := range pkgList {
|
items := make([]GetPackagesItem, r.uint64())
|
||||||
|
for i := range items {
|
||||||
pkgPathOff := r.uint64()
|
pkgPathOff := r.uint64()
|
||||||
pkgPath := p.stringAt(pkgPathOff)
|
pkgPath := p.stringAt(pkgPathOff)
|
||||||
pkgName := p.stringAt(r.uint64())
|
pkgName := p.stringAt(r.uint64())
|
||||||
@ -215,29 +234,42 @@ func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte,
|
|||||||
if pkgPath == "" {
|
if pkgPath == "" {
|
||||||
pkgPath = path
|
pkgPath = path
|
||||||
}
|
}
|
||||||
pkg := getPackage(pkgPath, pkgName)
|
items[i].Name = pkgName
|
||||||
if pkg == nil {
|
items[i].Path = pkgPath
|
||||||
errorf("internal error: getPackage returned nil package for %s", pkgPath)
|
items[i].pathOffset = pkgPathOff
|
||||||
} else if pkg.Name() != pkgName {
|
|
||||||
errorf("conflicting names %s and %s for package %q", pkg.Name(), pkgName, path)
|
|
||||||
}
|
|
||||||
if i == 0 && !bundle {
|
|
||||||
p.localpkg = pkg
|
|
||||||
}
|
|
||||||
|
|
||||||
p.pkgCache[pkgPathOff] = pkg
|
|
||||||
|
|
||||||
// Read index for package.
|
// Read index for package.
|
||||||
nameIndex := make(map[string]uint64)
|
nameIndex := make(map[string]uint64)
|
||||||
nSyms := r.uint64()
|
nSyms := r.uint64()
|
||||||
// In shallow mode we don't expect an index for other packages.
|
// In shallow mode, only the current package (i=0) has an index.
|
||||||
assert(nSyms == 0 || p.localpkg == pkg || p.insert == nil)
|
assert(!(shallow && i > 0 && nSyms != 0))
|
||||||
for ; nSyms > 0; nSyms-- {
|
for ; nSyms > 0; nSyms-- {
|
||||||
name := p.stringAt(r.uint64())
|
name := p.stringAt(r.uint64())
|
||||||
nameIndex[name] = r.uint64()
|
nameIndex[name] = r.uint64()
|
||||||
}
|
}
|
||||||
|
|
||||||
p.pkgIndex[pkg] = nameIndex
|
items[i].nameIndex = nameIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request packages all at once from the client,
|
||||||
|
// enabling a parallel implementation.
|
||||||
|
if err := getPackages(items); err != nil {
|
||||||
|
return nil, err // don't wrap this error
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the results and complete the index.
|
||||||
|
pkgList := make([]*types.Package, len(items))
|
||||||
|
for i, item := range items {
|
||||||
|
pkg := item.Pkg
|
||||||
|
if pkg == nil {
|
||||||
|
errorf("internal error: getPackages returned nil package for %q", item.Path)
|
||||||
|
} else if pkg.Path() != item.Path {
|
||||||
|
errorf("internal error: getPackages returned wrong path %q, want %q", pkg.Path(), item.Path)
|
||||||
|
} else if pkg.Name() != item.Name {
|
||||||
|
errorf("internal error: getPackages returned wrong name %s for package %q, want %s", pkg.Name(), item.Path, item.Name)
|
||||||
|
}
|
||||||
|
p.pkgCache[item.pathOffset] = pkg
|
||||||
|
p.pkgIndex[pkg] = item.nameIndex
|
||||||
pkgList[i] = pkg
|
pkgList[i] = pkg
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,6 +328,13 @@ func iimportCommon(fset *token.FileSet, getPackage GetPackageFunc, data []byte,
|
|||||||
typ.Complete()
|
typ.Complete()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Workaround for golang/go#61561. See the doc for instanceList for details.
|
||||||
|
for _, typ := range p.instanceList {
|
||||||
|
if iface, _ := typ.Underlying().(*types.Interface); iface != nil {
|
||||||
|
iface.Complete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return pkgs, nil
|
return pkgs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,8 +347,8 @@ type iimporter struct {
|
|||||||
version int
|
version int
|
||||||
ipath string
|
ipath string
|
||||||
|
|
||||||
localpkg *types.Package
|
shallow bool
|
||||||
insert func(pkg *types.Package, name string) // "shallow" mode only
|
reportf ReportFunc // if non-nil, used to report bugs
|
||||||
|
|
||||||
stringData []byte
|
stringData []byte
|
||||||
stringCache map[uint64]string
|
stringCache map[uint64]string
|
||||||
@ -326,6 +365,12 @@ type iimporter struct {
|
|||||||
fake fakeFileSet
|
fake fakeFileSet
|
||||||
interfaceList []*types.Interface
|
interfaceList []*types.Interface
|
||||||
|
|
||||||
|
// Workaround for the go/types bug golang/go#61561: instances produced during
|
||||||
|
// instantiation may contain incomplete interfaces. Here we only complete the
|
||||||
|
// underlying type of the instance, which is the most common case but doesn't
|
||||||
|
// handle parameterized interface literals defined deeper in the type.
|
||||||
|
instanceList []types.Type // instances for later completion (see golang/go#61561)
|
||||||
|
|
||||||
// Arguments for calls to SetConstraint that are deferred due to recursive types
|
// Arguments for calls to SetConstraint that are deferred due to recursive types
|
||||||
later []setConstraintArgs
|
later []setConstraintArgs
|
||||||
|
|
||||||
@ -357,13 +402,9 @@ func (p *iimporter) doDecl(pkg *types.Package, name string) {
|
|||||||
|
|
||||||
off, ok := p.pkgIndex[pkg][name]
|
off, ok := p.pkgIndex[pkg][name]
|
||||||
if !ok {
|
if !ok {
|
||||||
// In "shallow" mode, call back to the application to
|
// In deep mode, the index should be complete. In shallow
|
||||||
// find the object and insert it into the package scope.
|
// mode, we should have already recursively loaded necessary
|
||||||
if p.insert != nil {
|
// dependencies so the above Lookup succeeds.
|
||||||
assert(pkg != p.localpkg)
|
|
||||||
p.insert(pkg, name) // "can't fail"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
errorf("%v.%v not in index", pkg, name)
|
errorf("%v.%v not in index", pkg, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,7 +771,8 @@ func (r *importReader) qualifiedIdent() (*types.Package, string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *importReader) pos() token.Pos {
|
func (r *importReader) pos() token.Pos {
|
||||||
if r.p.insert != nil { // shallow mode
|
if r.p.shallow {
|
||||||
|
// precise offsets are encoded only in shallow mode
|
||||||
return r.posv2()
|
return r.posv2()
|
||||||
}
|
}
|
||||||
if r.p.version >= iexportVersionPosCol {
|
if r.p.version >= iexportVersionPosCol {
|
||||||
@ -831,13 +873,28 @@ func (r *importReader) doType(base *types.Named) (res types.Type) {
|
|||||||
fields := make([]*types.Var, r.uint64())
|
fields := make([]*types.Var, r.uint64())
|
||||||
tags := make([]string, len(fields))
|
tags := make([]string, len(fields))
|
||||||
for i := range fields {
|
for i := range fields {
|
||||||
|
var field *types.Var
|
||||||
|
if r.p.shallow {
|
||||||
|
field, _ = r.objectPathObject().(*types.Var)
|
||||||
|
}
|
||||||
|
|
||||||
fpos := r.pos()
|
fpos := r.pos()
|
||||||
fname := r.ident()
|
fname := r.ident()
|
||||||
ftyp := r.typ()
|
ftyp := r.typ()
|
||||||
emb := r.bool()
|
emb := r.bool()
|
||||||
tag := r.string()
|
tag := r.string()
|
||||||
|
|
||||||
fields[i] = types.NewField(fpos, r.currPkg, fname, ftyp, emb)
|
// Either this is not a shallow import, the field is local, or the
|
||||||
|
// encoded objectPath failed to produce an object (a bug).
|
||||||
|
//
|
||||||
|
// Even in this last, buggy case, fall back on creating a new field. As
|
||||||
|
// discussed in iexport.go, this is not correct, but mostly works and is
|
||||||
|
// preferable to failing (for now at least).
|
||||||
|
if field == nil {
|
||||||
|
field = types.NewField(fpos, r.currPkg, fname, ftyp, emb)
|
||||||
|
}
|
||||||
|
|
||||||
|
fields[i] = field
|
||||||
tags[i] = tag
|
tags[i] = tag
|
||||||
}
|
}
|
||||||
return types.NewStruct(fields, tags)
|
return types.NewStruct(fields, tags)
|
||||||
@ -853,6 +910,11 @@ func (r *importReader) doType(base *types.Named) (res types.Type) {
|
|||||||
|
|
||||||
methods := make([]*types.Func, r.uint64())
|
methods := make([]*types.Func, r.uint64())
|
||||||
for i := range methods {
|
for i := range methods {
|
||||||
|
var method *types.Func
|
||||||
|
if r.p.shallow {
|
||||||
|
method, _ = r.objectPathObject().(*types.Func)
|
||||||
|
}
|
||||||
|
|
||||||
mpos := r.pos()
|
mpos := r.pos()
|
||||||
mname := r.ident()
|
mname := r.ident()
|
||||||
|
|
||||||
@ -862,9 +924,12 @@ func (r *importReader) doType(base *types.Named) (res types.Type) {
|
|||||||
if base != nil {
|
if base != nil {
|
||||||
recv = types.NewVar(token.NoPos, r.currPkg, "", base)
|
recv = types.NewVar(token.NoPos, r.currPkg, "", base)
|
||||||
}
|
}
|
||||||
|
|
||||||
msig := r.signature(recv, nil, nil)
|
msig := r.signature(recv, nil, nil)
|
||||||
methods[i] = types.NewFunc(mpos, r.currPkg, mname, msig)
|
|
||||||
|
if method == nil {
|
||||||
|
method = types.NewFunc(mpos, r.currPkg, mname, msig)
|
||||||
|
}
|
||||||
|
methods[i] = method
|
||||||
}
|
}
|
||||||
|
|
||||||
typ := newInterface(methods, embeddeds)
|
typ := newInterface(methods, embeddeds)
|
||||||
@ -902,6 +967,9 @@ func (r *importReader) doType(base *types.Named) (res types.Type) {
|
|||||||
// we must always use the methods of the base (orig) type.
|
// we must always use the methods of the base (orig) type.
|
||||||
// TODO provide a non-nil *Environment
|
// TODO provide a non-nil *Environment
|
||||||
t, _ := typeparams.Instantiate(nil, baseType, targs, false)
|
t, _ := typeparams.Instantiate(nil, baseType, targs, false)
|
||||||
|
|
||||||
|
// Workaround for golang/go#61561. See the doc for instanceList for details.
|
||||||
|
r.p.instanceList = append(r.p.instanceList, t)
|
||||||
return t
|
return t
|
||||||
|
|
||||||
case unionType:
|
case unionType:
|
||||||
@ -920,6 +988,26 @@ func (r *importReader) kind() itag {
|
|||||||
return itag(r.uint64())
|
return itag(r.uint64())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// objectPathObject is the inverse of exportWriter.objectPath.
|
||||||
|
//
|
||||||
|
// In shallow mode, certain fields and methods may need to be looked up in an
|
||||||
|
// imported package. See the doc for exportWriter.objectPath for a full
|
||||||
|
// explanation.
|
||||||
|
func (r *importReader) objectPathObject() types.Object {
|
||||||
|
objPath := objectpath.Path(r.string())
|
||||||
|
if objPath == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
pkg := r.pkg()
|
||||||
|
obj, err := objectpath.Object(pkg, objPath)
|
||||||
|
if err != nil {
|
||||||
|
if r.p.reportf != nil {
|
||||||
|
r.p.reportf("failed to find object for objectPath %q: %v", objPath, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
|
||||||
func (r *importReader) signature(recv *types.Var, rparams []*typeparams.TypeParam, tparams []*typeparams.TypeParam) *types.Signature {
|
func (r *importReader) signature(recv *types.Var, rparams []*typeparams.TypeParam, tparams []*typeparams.TypeParam) *types.Signature {
|
||||||
params := r.paramList()
|
params := r.paramList()
|
||||||
results := r.paramList()
|
results := r.paramList()
|
||||||
|
4
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
4
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
@ -319,7 +319,7 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) (err error) {
|
|||||||
// Per https://pkg.go.dev/os#File.Close, the call to stdoutR.Close
|
// Per https://pkg.go.dev/os#File.Close, the call to stdoutR.Close
|
||||||
// should cause the Read call in io.Copy to unblock and return
|
// should cause the Read call in io.Copy to unblock and return
|
||||||
// immediately, but we still need to receive from stdoutErr to confirm
|
// immediately, but we still need to receive from stdoutErr to confirm
|
||||||
// that that has happened.
|
// that it has happened.
|
||||||
<-stdoutErr
|
<-stdoutErr
|
||||||
err2 = ctx.Err()
|
err2 = ctx.Err()
|
||||||
}
|
}
|
||||||
@ -333,7 +333,7 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) (err error) {
|
|||||||
// one goroutine at a time will call Write.”
|
// one goroutine at a time will call Write.”
|
||||||
//
|
//
|
||||||
// Since we're starting a goroutine that writes to cmd.Stdout, we must
|
// Since we're starting a goroutine that writes to cmd.Stdout, we must
|
||||||
// also update cmd.Stderr so that that still holds.
|
// also update cmd.Stderr so that it still holds.
|
||||||
func() {
|
func() {
|
||||||
defer func() { recover() }()
|
defer func() { recover() }()
|
||||||
if cmd.Stderr == prevStdout {
|
if cmd.Stderr == prevStdout {
|
||||||
|
26
vendor/golang.org/x/tools/internal/typeparams/common.go
generated
vendored
26
vendor/golang.org/x/tools/internal/typeparams/common.go
generated
vendored
@ -23,6 +23,7 @@
|
|||||||
package typeparams
|
package typeparams
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
"go/types"
|
"go/types"
|
||||||
@ -105,6 +106,31 @@ func OriginMethod(fn *types.Func) *types.Func {
|
|||||||
}
|
}
|
||||||
orig := NamedTypeOrigin(named)
|
orig := NamedTypeOrigin(named)
|
||||||
gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name())
|
gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name())
|
||||||
|
|
||||||
|
// This is a fix for a gopls crash (#60628) due to a go/types bug (#60634). In:
|
||||||
|
// package p
|
||||||
|
// type T *int
|
||||||
|
// func (*T) f() {}
|
||||||
|
// LookupFieldOrMethod(T, true, p, f)=nil, but NewMethodSet(*T)={(*T).f}.
|
||||||
|
// Here we make them consistent by force.
|
||||||
|
// (The go/types bug is general, but this workaround is reached only
|
||||||
|
// for generic T thanks to the early return above.)
|
||||||
|
if gfn == nil {
|
||||||
|
mset := types.NewMethodSet(types.NewPointer(orig))
|
||||||
|
for i := 0; i < mset.Len(); i++ {
|
||||||
|
m := mset.At(i)
|
||||||
|
if m.Obj().Id() == fn.Id() {
|
||||||
|
gfn = m.Obj()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// In golang/go#61196, we observe another crash, this time inexplicable.
|
||||||
|
if gfn == nil {
|
||||||
|
panic(fmt.Sprintf("missing origin method for %s.%s; named == origin: %t, named.NumMethods(): %d, origin.NumMethods(): %d", named, fn, named == orig, named.NumMethods(), orig.NumMethods()))
|
||||||
|
}
|
||||||
|
|
||||||
return gfn.(*types.Func)
|
return gfn.(*types.Func)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
generated
vendored
2
vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go
generated
vendored
@ -129,7 +129,7 @@ func NamedTypeArgs(*types.Named) *TypeList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NamedTypeOrigin is the identity method at this Go version.
|
// NamedTypeOrigin is the identity method at this Go version.
|
||||||
func NamedTypeOrigin(named *types.Named) types.Type {
|
func NamedTypeOrigin(named *types.Named) *types.Named {
|
||||||
return named
|
return named
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
generated
vendored
2
vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go
generated
vendored
@ -103,7 +103,7 @@ func NamedTypeArgs(named *types.Named) *TypeList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NamedTypeOrigin returns named.Orig().
|
// NamedTypeOrigin returns named.Orig().
|
||||||
func NamedTypeOrigin(named *types.Named) types.Type {
|
func NamedTypeOrigin(named *types.Named) *types.Named {
|
||||||
return named.Origin()
|
return named.Origin()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
vendor/golang.org/x/tools/internal/typesinternal/objectpath.go
generated
vendored
Normal file
24
vendor/golang.org/x/tools/internal/typesinternal/objectpath.go
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Copyright 2023 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 typesinternal
|
||||||
|
|
||||||
|
import "go/types"
|
||||||
|
|
||||||
|
// This file contains back doors that allow gopls to avoid method sorting when
|
||||||
|
// using the objectpath package.
|
||||||
|
//
|
||||||
|
// This is performance-critical in certain repositories, but changing the
|
||||||
|
// behavior of the objectpath package is still being discussed in
|
||||||
|
// golang/go#61443. If we decide to remove the sorting in objectpath we can
|
||||||
|
// simply delete these back doors. Otherwise, we should add a new API to
|
||||||
|
// objectpath that allows controlling the sorting.
|
||||||
|
|
||||||
|
// SkipEncoderMethodSorting marks enc (which must be an *objectpath.Encoder) as
|
||||||
|
// not requiring sorted methods.
|
||||||
|
var SkipEncoderMethodSorting func(enc interface{})
|
||||||
|
|
||||||
|
// ObjectpathObject is like objectpath.Object, but allows suppressing method
|
||||||
|
// sorting.
|
||||||
|
var ObjectpathObject func(pkg *types.Package, p string, skipMethodSorting bool) (types.Object, error)
|
28
vendor/modules.txt
vendored
28
vendor/modules.txt
vendored
@ -70,7 +70,7 @@ github.com/containers/common/pkg/flag
|
|||||||
github.com/containers/common/pkg/report
|
github.com/containers/common/pkg/report
|
||||||
github.com/containers/common/pkg/report/camelcase
|
github.com/containers/common/pkg/report/camelcase
|
||||||
github.com/containers/common/pkg/retry
|
github.com/containers/common/pkg/retry
|
||||||
# github.com/containers/image/v5 v5.27.1-0.20230814071742-35192da58823
|
# github.com/containers/image/v5 v5.27.1-0.20230904180722-58d5eb632da1
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/containers/image/v5/copy
|
github.com/containers/image/v5/copy
|
||||||
github.com/containers/image/v5/directory
|
github.com/containers/image/v5/directory
|
||||||
@ -341,7 +341,7 @@ github.com/google/go-containerregistry/pkg/v1/types
|
|||||||
# github.com/google/go-intervals v0.0.2
|
# github.com/google/go-intervals v0.0.2
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
github.com/google/go-intervals/intervalset
|
github.com/google/go-intervals/intervalset
|
||||||
# github.com/google/uuid v1.3.0
|
# github.com/google/uuid v1.3.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/google/uuid
|
github.com/google/uuid
|
||||||
# github.com/gorilla/mux v1.8.0
|
# github.com/gorilla/mux v1.8.0
|
||||||
@ -394,7 +394,7 @@ github.com/letsencrypt/boulder/revocation
|
|||||||
github.com/mailru/easyjson/buffer
|
github.com/mailru/easyjson/buffer
|
||||||
github.com/mailru/easyjson/jlexer
|
github.com/mailru/easyjson/jlexer
|
||||||
github.com/mailru/easyjson/jwriter
|
github.com/mailru/easyjson/jwriter
|
||||||
# github.com/mattn/go-runewidth v0.0.14
|
# github.com/mattn/go-runewidth v0.0.15
|
||||||
## explicit; go 1.9
|
## explicit; go 1.9
|
||||||
github.com/mattn/go-runewidth
|
github.com/mattn/go-runewidth
|
||||||
# github.com/mattn/go-shellwords v1.0.12
|
# github.com/mattn/go-shellwords v1.0.12
|
||||||
@ -467,6 +467,9 @@ github.com/proglottis/gpgme
|
|||||||
github.com/rivo/uniseg
|
github.com/rivo/uniseg
|
||||||
# github.com/russross/blackfriday v2.0.0+incompatible
|
# github.com/russross/blackfriday v2.0.0+incompatible
|
||||||
## explicit
|
## explicit
|
||||||
|
# github.com/secure-systems-lab/go-securesystemslib v0.7.0
|
||||||
|
## explicit; go 1.20
|
||||||
|
github.com/secure-systems-lab/go-securesystemslib/encrypted
|
||||||
# github.com/segmentio/ksuid v1.0.4
|
# github.com/segmentio/ksuid v1.0.4
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
github.com/segmentio/ksuid
|
github.com/segmentio/ksuid
|
||||||
@ -484,7 +487,7 @@ github.com/sigstore/rekor/pkg/generated/client/pubkey
|
|||||||
github.com/sigstore/rekor/pkg/generated/client/tlog
|
github.com/sigstore/rekor/pkg/generated/client/tlog
|
||||||
github.com/sigstore/rekor/pkg/generated/models
|
github.com/sigstore/rekor/pkg/generated/models
|
||||||
github.com/sigstore/rekor/pkg/util
|
github.com/sigstore/rekor/pkg/util
|
||||||
# github.com/sigstore/sigstore v1.7.2
|
# github.com/sigstore/sigstore v1.7.3
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/sigstore/sigstore/pkg/cryptoutils
|
github.com/sigstore/sigstore/pkg/cryptoutils
|
||||||
github.com/sigstore/sigstore/pkg/oauth
|
github.com/sigstore/sigstore/pkg/oauth
|
||||||
@ -512,8 +515,8 @@ github.com/stefanberger/go-pkcs11uri
|
|||||||
github.com/stretchr/testify/assert
|
github.com/stretchr/testify/assert
|
||||||
github.com/stretchr/testify/require
|
github.com/stretchr/testify/require
|
||||||
github.com/stretchr/testify/suite
|
github.com/stretchr/testify/suite
|
||||||
# github.com/sylabs/sif/v2 v2.12.0
|
# github.com/sylabs/sif/v2 v2.13.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.20
|
||||||
github.com/sylabs/sif/v2/pkg/sif
|
github.com/sylabs/sif/v2/pkg/sif
|
||||||
# github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
# github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
||||||
## explicit
|
## explicit
|
||||||
@ -538,7 +541,7 @@ github.com/ulikunitz/xz/lzma
|
|||||||
github.com/vbatts/tar-split/archive/tar
|
github.com/vbatts/tar-split/archive/tar
|
||||||
github.com/vbatts/tar-split/tar/asm
|
github.com/vbatts/tar-split/tar/asm
|
||||||
github.com/vbatts/tar-split/tar/storage
|
github.com/vbatts/tar-split/tar/storage
|
||||||
# github.com/vbauerster/mpb/v8 v8.5.2
|
# github.com/vbauerster/mpb/v8 v8.6.1
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
github.com/vbauerster/mpb/v8
|
github.com/vbauerster/mpb/v8
|
||||||
github.com/vbauerster/mpb/v8/cwriter
|
github.com/vbauerster/mpb/v8/cwriter
|
||||||
@ -613,12 +616,12 @@ golang.org/x/crypto/pbkdf2
|
|||||||
golang.org/x/crypto/salsa20/salsa
|
golang.org/x/crypto/salsa20/salsa
|
||||||
golang.org/x/crypto/scrypt
|
golang.org/x/crypto/scrypt
|
||||||
golang.org/x/crypto/sha3
|
golang.org/x/crypto/sha3
|
||||||
# golang.org/x/exp v0.0.0-20230810033253-352e893a4cad
|
# golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63
|
||||||
## explicit; go 1.20
|
## explicit; go 1.20
|
||||||
golang.org/x/exp/constraints
|
golang.org/x/exp/constraints
|
||||||
golang.org/x/exp/maps
|
golang.org/x/exp/maps
|
||||||
golang.org/x/exp/slices
|
golang.org/x/exp/slices
|
||||||
# golang.org/x/mod v0.11.0
|
# golang.org/x/mod v0.12.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
golang.org/x/mod/semver
|
golang.org/x/mod/semver
|
||||||
golang.org/x/mod/sumdb/note
|
golang.org/x/mod/sumdb/note
|
||||||
@ -641,7 +644,7 @@ golang.org/x/oauth2/internal
|
|||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
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.11.0
|
# golang.org/x/sys v0.12.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
golang.org/x/sys/execabs
|
golang.org/x/sys/execabs
|
||||||
@ -650,7 +653,7 @@ golang.org/x/sys/plan9
|
|||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
golang.org/x/sys/windows/registry
|
golang.org/x/sys/windows/registry
|
||||||
# golang.org/x/term v0.11.0
|
# golang.org/x/term v0.12.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
golang.org/x/term
|
golang.org/x/term
|
||||||
# golang.org/x/text v0.12.0
|
# golang.org/x/text v0.12.0
|
||||||
@ -659,12 +662,13 @@ golang.org/x/text/secure/bidirule
|
|||||||
golang.org/x/text/transform
|
golang.org/x/text/transform
|
||||||
golang.org/x/text/unicode/bidi
|
golang.org/x/text/unicode/bidi
|
||||||
golang.org/x/text/unicode/norm
|
golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/tools v0.9.3
|
# golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/tools/cmd/stringer
|
golang.org/x/tools/cmd/stringer
|
||||||
golang.org/x/tools/go/gcexportdata
|
golang.org/x/tools/go/gcexportdata
|
||||||
golang.org/x/tools/go/internal/packagesdriver
|
golang.org/x/tools/go/internal/packagesdriver
|
||||||
golang.org/x/tools/go/packages
|
golang.org/x/tools/go/packages
|
||||||
|
golang.org/x/tools/go/types/objectpath
|
||||||
golang.org/x/tools/internal/event
|
golang.org/x/tools/internal/event
|
||||||
golang.org/x/tools/internal/event/core
|
golang.org/x/tools/internal/event/core
|
||||||
golang.org/x/tools/internal/event/keys
|
golang.org/x/tools/internal/event/keys
|
||||||
|
Loading…
Reference in New Issue
Block a user