mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
make vendor-update
This commit is contained in:
parent
cc5fe0b315
commit
b459919250
176 changed files with 15270 additions and 8314 deletions
16
go.mod
16
go.mod
|
@ -1,24 +1,24 @@
|
||||||
module github.com/VictoriaMetrics/VictoriaMetrics
|
module github.com/VictoriaMetrics/VictoriaMetrics
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.53.0 // indirect
|
cloud.google.com/go/storage v1.6.0
|
||||||
cloud.google.com/go/storage v1.5.0
|
|
||||||
github.com/VictoriaMetrics/fastcache v1.5.7
|
github.com/VictoriaMetrics/fastcache v1.5.7
|
||||||
github.com/VictoriaMetrics/metrics v1.11.0
|
github.com/VictoriaMetrics/metrics v1.11.0
|
||||||
github.com/aws/aws-sdk-go v1.29.3
|
github.com/aws/aws-sdk-go v1.29.10
|
||||||
github.com/cespare/xxhash/v2 v2.1.1
|
github.com/cespare/xxhash/v2 v2.1.1
|
||||||
github.com/golang/snappy v0.0.1
|
github.com/golang/snappy v0.0.1
|
||||||
github.com/klauspost/compress v1.10.0
|
github.com/klauspost/compress v1.10.1
|
||||||
github.com/valyala/fasthttp v1.9.0
|
github.com/valyala/fasthttp v1.9.0
|
||||||
github.com/valyala/fastjson v1.5.0
|
github.com/valyala/fastjson v1.5.0
|
||||||
github.com/valyala/fastrand v1.0.0
|
github.com/valyala/fastrand v1.0.0
|
||||||
github.com/valyala/gozstd v1.6.4
|
github.com/valyala/gozstd v1.6.4
|
||||||
github.com/valyala/histogram v1.0.1
|
github.com/valyala/histogram v1.0.1
|
||||||
github.com/valyala/quicktemplate v1.4.1
|
github.com/valyala/quicktemplate v1.4.1
|
||||||
golang.org/x/exp v0.0.0-20200213203834-85f925bdd4d0 // indirect
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b // indirect
|
||||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae
|
||||||
golang.org/x/tools v0.0.0-20200214225126-5916a50871fb // indirect
|
golang.org/x/tools v0.0.0-20200226180945-26f6a1b6802d // indirect
|
||||||
google.golang.org/api v0.17.0
|
google.golang.org/api v0.19.0
|
||||||
|
google.golang.org/genproto v0.0.0-20200225123651-fc8f55426688 // indirect
|
||||||
gopkg.in/yaml.v2 v2.2.8
|
gopkg.in/yaml.v2 v2.2.8
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
54
go.sum
54
go.sum
|
@ -6,19 +6,28 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK
|
||||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||||
|
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||||
cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8=
|
cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8=
|
||||||
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||||
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
||||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||||
|
cloud.google.com/go/bigquery v1.4.0 h1:xE3CPsOgttP4ACBePh79zTKALtXwn/Edhcr16R5hMWU=
|
||||||
|
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||||
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
||||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||||
|
cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=
|
||||||
|
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||||
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
||||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||||
|
cloud.google.com/go/pubsub v1.2.0 h1:Lpy6hKgdcl7a3WGSfJIFmxmcdjSpP6OmBEfcOv1Y680=
|
||||||
|
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||||
cloud.google.com/go/storage v1.5.0 h1:RPUcBvDeYgQFMfQu1eBMq6piD1SXmLH+vK3qjewZPus=
|
cloud.google.com/go/storage v1.5.0 h1:RPUcBvDeYgQFMfQu1eBMq6piD1SXmLH+vK3qjewZPus=
|
||||||
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||||
|
cloud.google.com/go/storage v1.6.0 h1:UDpwYIwla4jHGzZJaEJYx1tOejbgSoNqsAfHAUYe2r8=
|
||||||
|
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
@ -29,8 +38,8 @@ github.com/VictoriaMetrics/metrics v1.11.0 h1:sfRmbgk7hGrxNXrziwyTmU8FZFLFrPNC7g
|
||||||
github.com/VictoriaMetrics/metrics v1.11.0/go.mod h1:LU2j9qq7xqZYXz8tF3/RQnB2z2MbZms5TDiIg9/NHiQ=
|
github.com/VictoriaMetrics/metrics v1.11.0/go.mod h1:LU2j9qq7xqZYXz8tF3/RQnB2z2MbZms5TDiIg9/NHiQ=
|
||||||
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
|
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
|
||||||
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
||||||
github.com/aws/aws-sdk-go v1.29.3 h1:yvEwt1IvgiWpWWayQBQHCK0knTmHKyI7FCrliOV5Pd8=
|
github.com/aws/aws-sdk-go v1.29.10 h1:QJOQq1xNmdrY5mXUmC8CHXzZPve8134Bx/Ux0o6s38s=
|
||||||
github.com/aws/aws-sdk-go v1.29.3/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
|
github.com/aws/aws-sdk-go v1.29.10/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
@ -45,6 +54,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
@ -77,6 +87,7 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
|
@ -94,8 +105,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
|
||||||
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.10.0 h1:92XGj1AcYzA6UrVdd4qIIBrT8OroryvRvdmg/IfmC7Y=
|
github.com/klauspost/compress v1.10.1 h1:a/QY0o9S6wCi0XhxaMX/QmusicNUqCqFugR6WKPOSoQ=
|
||||||
github.com/klauspost/compress v1.10.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||||
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
|
@ -146,10 +157,11 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd h1:zkO/Lhoka23X63N9OSzpSeROEUQ5ODw47tM3YWjygbs=
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd h1:zkO/Lhoka23X63N9OSzpSeROEUQ5ODw47tM3YWjygbs=
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
golang.org/x/exp v0.0.0-20200213203834-85f925bdd4d0 h1:tm4MMkqdvahr61SDpB2su1XZfifRH4XMRQODT1z3p2Q=
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y=
|
||||||
golang.org/x/exp v0.0.0-20200213203834-85f925bdd4d0/go.mod h1:IX6Eufr4L0ErOUlzqX/aFlHqsiKZRbV42Kb69e9VsTE=
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
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=
|
||||||
|
@ -186,8 +198,12 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
|
||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
@ -213,8 +229,13 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo=
|
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo=
|
||||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
|
||||||
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
@ -222,6 +243,7 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
@ -241,13 +263,18 @@ golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200214225126-5916a50871fb h1:v/vJOBYLZ/j1iLRnB+xIrKSrcDL2mEvX8M8yx6cvs7M=
|
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200214225126-5916a50871fb/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200226180945-26f6a1b6802d h1:pUSEBYeASep5mmhgY5ZgD6zz3TDJ4SWJwaepxO+tJog=
|
||||||
|
golang.org/x/tools v0.0.0-20200226180945-26f6a1b6802d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
@ -262,6 +289,9 @@ google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
||||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
google.golang.org/api v0.17.0 h1:0q95w+VuFtv4PAx4PZVQdBMmYbaCHbnfKaEiDIcVyag=
|
google.golang.org/api v0.17.0 h1:0q95w+VuFtv4PAx4PZVQdBMmYbaCHbnfKaEiDIcVyag=
|
||||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.19.0 h1:GwFK8+l5/gdsOYKz5p6M4UK+QT8OvmHWZPJCnf+5DjA=
|
||||||
|
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
@ -280,8 +310,14 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce h1:1mbrb1tUU+Zmt5C94IGKADBTJZjZXAd+BubWi7r9EiI=
|
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce h1:1mbrb1tUU+Zmt5C94IGKADBTJZjZXAd+BubWi7r9EiI=
|
||||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200225123651-fc8f55426688 h1:1+0Z5cgv1eDXJD9z2tdQF9PSSQnJXwism490hJydMRI=
|
||||||
|
google.golang.org/genproto v0.0.0-20200225123651-fc8f55426688/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||||
|
@ -305,6 +341,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
|
|
12
vendor/cloud.google.com/go/storage/.repo-metadata.json
generated
vendored
12
vendor/cloud.google.com/go/storage/.repo-metadata.json
generated
vendored
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
"name": "storage",
|
|
||||||
"name_pretty": "storage",
|
|
||||||
"product_documentation": "https://cloud.google.com/storage",
|
|
||||||
"client_documentation": "https://godoc.org/cloud.google.com/go/storage",
|
|
||||||
"release_level": "ga",
|
|
||||||
"language": "go",
|
|
||||||
"repo": "googleapis/google-cloud-go",
|
|
||||||
"distribution_name": "cloud.google.com/go/storage",
|
|
||||||
"api_id": "storage:v2",
|
|
||||||
"requires_billing": true
|
|
||||||
}
|
|
6
vendor/cloud.google.com/go/storage/CHANGES.md
generated
vendored
6
vendor/cloud.google.com/go/storage/CHANGES.md
generated
vendored
|
@ -1,5 +1,11 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
## v1.6.0
|
||||||
|
|
||||||
|
- Updated option handling:
|
||||||
|
- Don't drop custom scopes (#1756)
|
||||||
|
- Don't drop port in provided endpoint (#1737)
|
||||||
|
|
||||||
## v1.5.0
|
## v1.5.0
|
||||||
|
|
||||||
- Honor WithEndpoint client option for reads as well as writes.
|
- Honor WithEndpoint client option for reads as well as writes.
|
||||||
|
|
7
vendor/cloud.google.com/go/storage/bucket.go
generated
vendored
7
vendor/cloud.google.com/go/storage/bucket.go
generated
vendored
|
@ -986,12 +986,11 @@ func toLifecycle(rl *raw.BucketLifecycle) Lifecycle {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
switch {
|
if rr.Condition.IsLive == nil {
|
||||||
case rr.Condition.IsLive == nil:
|
|
||||||
r.Condition.Liveness = LiveAndArchived
|
r.Condition.Liveness = LiveAndArchived
|
||||||
case *rr.Condition.IsLive == true:
|
} else if *rr.Condition.IsLive {
|
||||||
r.Condition.Liveness = Live
|
r.Condition.Liveness = Live
|
||||||
case *rr.Condition.IsLive == false:
|
} else {
|
||||||
r.Condition.Liveness = Archived
|
r.Condition.Liveness = Archived
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
30
vendor/cloud.google.com/go/storage/go.mod
generated
vendored
30
vendor/cloud.google.com/go/storage/go.mod
generated
vendored
|
@ -3,22 +3,18 @@ module cloud.google.com/go/storage
|
||||||
go 1.11
|
go 1.11
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.50.0
|
cloud.google.com/go v0.53.0
|
||||||
cloud.google.com/go/bigquery v1.3.0 // indirect
|
cloud.google.com/go/datastore v1.1.0 // indirect
|
||||||
cloud.google.com/go/pubsub v1.1.0 // indirect
|
github.com/golang/protobuf v1.3.3
|
||||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 // indirect
|
github.com/google/go-cmp v0.4.0
|
||||||
github.com/golang/protobuf v1.3.2
|
|
||||||
github.com/google/go-cmp v0.3.1
|
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5
|
github.com/googleapis/gax-go/v2 v2.0.5
|
||||||
github.com/jstemmer/go-junit-report v0.9.1 // indirect
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 // indirect
|
||||||
go.opencensus.io v0.22.2 // indirect
|
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 // indirect
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
|
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2 // indirect
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 // indirect
|
google.golang.org/api v0.18.0
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4 // indirect
|
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63
|
||||||
google.golang.org/api v0.15.0
|
google.golang.org/grpc v1.27.1
|
||||||
google.golang.org/appengine v1.6.5 // indirect
|
honnef.co/go/tools v0.0.1-2020.1.3 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb
|
|
||||||
google.golang.org/grpc v1.26.0
|
|
||||||
)
|
)
|
||||||
|
|
107
vendor/cloud.google.com/go/storage/go.sum
generated
vendored
107
vendor/cloud.google.com/go/storage/go.sum
generated
vendored
|
@ -6,53 +6,75 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK
|
||||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||||
cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y=
|
cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y=
|
||||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||||
cloud.google.com/go v0.50.0 h1:0E3eE8MX426vUOs7aHfI7aN1BrIzzzf4ccKCSfSjGmc=
|
|
||||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||||
|
cloud.google.com/go v0.52.0 h1:GGslhk/BU052LPlnI1vpp3fcbUs+hQ3E+Doti/3/vF8=
|
||||||
|
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||||
|
cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8=
|
||||||
|
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||||
cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU=
|
cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU=
|
||||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||||
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
||||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||||
|
cloud.google.com/go/bigquery v1.4.0 h1:xE3CPsOgttP4ACBePh79zTKALtXwn/Edhcr16R5hMWU=
|
||||||
|
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||||
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
||||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||||
|
cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=
|
||||||
|
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||||
cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8=
|
cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8=
|
||||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||||
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
||||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||||
|
cloud.google.com/go/pubsub v1.2.0 h1:Lpy6hKgdcl7a3WGSfJIFmxmcdjSpP6OmBEfcOv1Y680=
|
||||||
|
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||||
|
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
||||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
|
||||||
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||||
|
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
|
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
|
||||||
|
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
|
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
|
||||||
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
||||||
|
@ -60,6 +82,7 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
|
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
|
||||||
|
@ -78,6 +101,8 @@ go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
|
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
|
||||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
|
go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8=
|
||||||
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
@ -88,10 +113,15 @@ golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxT
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587 h1:5Uz0rkjCFu9BC9gCRN7EkwVvhNyQgGWb8KNJrPwBoHY=
|
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a h1:7Wlg8L54In96HTWOaI4sreLJ6qfyGuvSau5el3fK41Y=
|
||||||
|
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd h1:zkO/Lhoka23X63N9OSzpSeROEUQ5ODw47tM3YWjygbs=
|
||||||
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y=
|
||||||
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
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=
|
||||||
|
@ -104,11 +134,17 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||||
|
golang.org/x/lint v0.0.0-20200130185559-910be7a94367 h1:0IiAsCRByjO2QjX7ZPkw5oU9x+n1YqRL802rjC0c3Aw=
|
||||||
|
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee h1:WG0RUwxtNT4qqaXX3DPA8zHFNm/D9xaBpxzHt1WcA/E=
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
@ -121,14 +157,20 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
|
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
|
||||||
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 h1:MsuvTghUPjX762sGLnGsxC3HM0B5r83wEtYcYR8/vRs=
|
||||||
|
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -147,14 +189,27 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 h1:JA8d3MPx/IToSyXZG/RhwYEtfrKO1Fxrqe8KrkiLXKM=
|
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 h1:gZpLHxUX5BdYLA08Lj4YCJNN/jk7KtquiArPoeX0WvA=
|
||||||
|
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 h1:ywK/j/KkyTHcdyYSZNXGjMwgmDSfjglYZ3vStQ/gSCU=
|
||||||
|
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0=
|
||||||
|
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo=
|
||||||
|
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
|
||||||
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
@ -173,12 +228,27 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/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-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4 h1:Toz2IK7k8rbltAXwNAxKcn9OzqyNfMUhUNjz3sL0NMk=
|
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200117161641-43d50277825c h1:2EA2K0k9bcvvEDlqD8xdlOhCOqq+O/p9Voqi4x9W1YU=
|
||||||
|
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a h1:7YaEqUc1tUg0yDwvdX+3U5bwrBg7u3FFAZ5D8gUs4/c=
|
||||||
|
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74 h1:KW20qMcLRWuIgjdCpHFJbVZA7zsDKtFXPNcm7/eI5ZA=
|
||||||
|
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56 h1:DFtSed2q3HtNuVazwVDZ4nSRS/JrZEig0gz2BY4VNrg=
|
||||||
|
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2 h1:L/G4KZvrQn7FWLN/LlulBtBzrLUhqjiGfTWWDmrh+IQ=
|
||||||
|
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
|
@ -188,6 +258,10 @@ google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb
|
||||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
||||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
google.golang.org/api v0.17.0 h1:0q95w+VuFtv4PAx4PZVQdBMmYbaCHbnfKaEiDIcVyag=
|
||||||
|
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.18.0 h1:TgDr+1inK2XVUKZx3BYAqQg/GwucGdBkzZjWaTg/I+A=
|
||||||
|
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
@ -207,8 +281,17 @@ google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBr
|
||||||
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb h1:ADPHZzpzM4tk4V4S5cnCrr5SwzvlrPRmqqCuJDB8UTs=
|
|
||||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM=
|
||||||
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150 h1:VPpdpQkGvFicX9yo4G5oxZPi9ALBnEOZblPSa/Wa2m4=
|
||||||
|
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90 h1:7THRSvPuzF1bql5kyFzX0JM0vpGhwuhskgJrJsbZ80Y=
|
||||||
|
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||||
|
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce h1:1mbrb1tUU+Zmt5C94IGKADBTJZjZXAd+BubWi7r9EiI=
|
||||||
|
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 h1:YzfoEYWbODU5Fbt37+h7X16BWQbad7Q4S6gclTKFXM8=
|
||||||
|
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
||||||
|
@ -216,6 +299,10 @@ google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
|
google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
|
||||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
|
||||||
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk=
|
||||||
|
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
|
@ -226,4 +313,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
|
|
34
vendor/cloud.google.com/go/storage/iam.go
generated
vendored
34
vendor/cloud.google.com/go/storage/iam.go
generated
vendored
|
@ -21,6 +21,7 @@ import (
|
||||||
"cloud.google.com/go/internal/trace"
|
"cloud.google.com/go/internal/trace"
|
||||||
raw "google.golang.org/api/storage/v1"
|
raw "google.golang.org/api/storage/v1"
|
||||||
iampb "google.golang.org/genproto/googleapis/iam/v1"
|
iampb "google.golang.org/genproto/googleapis/iam/v1"
|
||||||
|
"google.golang.org/genproto/googleapis/type/expr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IAM provides access to IAM access control for the bucket.
|
// IAM provides access to IAM access control for the bucket.
|
||||||
|
@ -38,10 +39,14 @@ type iamClient struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *iamClient) Get(ctx context.Context, resource string) (p *iampb.Policy, err error) {
|
func (c *iamClient) Get(ctx context.Context, resource string) (p *iampb.Policy, err error) {
|
||||||
|
return c.GetWithVersion(ctx, resource, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *iamClient) GetWithVersion(ctx context.Context, resource string, requestedPolicyVersion int32) (p *iampb.Policy, err error) {
|
||||||
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.IAM.Get")
|
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.IAM.Get")
|
||||||
defer func() { trace.EndSpan(ctx, err) }()
|
defer func() { trace.EndSpan(ctx, err) }()
|
||||||
|
|
||||||
call := c.raw.Buckets.GetIamPolicy(resource)
|
call := c.raw.Buckets.GetIamPolicy(resource).OptionsRequestedPolicyVersion(int64(requestedPolicyVersion))
|
||||||
setClientHeader(call.Header())
|
setClientHeader(call.Header())
|
||||||
if c.userProject != "" {
|
if c.userProject != "" {
|
||||||
call.UserProject(c.userProject)
|
call.UserProject(c.userProject)
|
||||||
|
@ -97,6 +102,7 @@ func iamToStoragePolicy(ip *iampb.Policy) *raw.Policy {
|
||||||
return &raw.Policy{
|
return &raw.Policy{
|
||||||
Bindings: iamToStorageBindings(ip.Bindings),
|
Bindings: iamToStorageBindings(ip.Bindings),
|
||||||
Etag: string(ip.Etag),
|
Etag: string(ip.Etag),
|
||||||
|
Version: int64(ip.Version),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,11 +112,24 @@ func iamToStorageBindings(ibs []*iampb.Binding) []*raw.PolicyBindings {
|
||||||
rbs = append(rbs, &raw.PolicyBindings{
|
rbs = append(rbs, &raw.PolicyBindings{
|
||||||
Role: ib.Role,
|
Role: ib.Role,
|
||||||
Members: ib.Members,
|
Members: ib.Members,
|
||||||
|
Condition: iamToStorageCondition(ib.Condition),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return rbs
|
return rbs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func iamToStorageCondition(exprpb *expr.Expr) *raw.Expr {
|
||||||
|
if exprpb == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &raw.Expr{
|
||||||
|
Expression: exprpb.Expression,
|
||||||
|
Description: exprpb.Description,
|
||||||
|
Location: exprpb.Location,
|
||||||
|
Title: exprpb.Title,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func iamFromStoragePolicy(rp *raw.Policy) *iampb.Policy {
|
func iamFromStoragePolicy(rp *raw.Policy) *iampb.Policy {
|
||||||
return &iampb.Policy{
|
return &iampb.Policy{
|
||||||
Bindings: iamFromStorageBindings(rp.Bindings),
|
Bindings: iamFromStorageBindings(rp.Bindings),
|
||||||
|
@ -124,7 +143,20 @@ func iamFromStorageBindings(rbs []*raw.PolicyBindings) []*iampb.Binding {
|
||||||
ibs = append(ibs, &iampb.Binding{
|
ibs = append(ibs, &iampb.Binding{
|
||||||
Role: rb.Role,
|
Role: rb.Role,
|
||||||
Members: rb.Members,
|
Members: rb.Members,
|
||||||
|
Condition: iamFromStorageCondition(rb.Condition),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return ibs
|
return ibs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func iamFromStorageCondition(rawexpr *raw.Expr) *expr.Expr {
|
||||||
|
if rawexpr == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &expr.Expr{
|
||||||
|
Expression: rawexpr.Expression,
|
||||||
|
Description: rawexpr.Description,
|
||||||
|
Location: rawexpr.Location,
|
||||||
|
Title: rawexpr.Title,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
9
vendor/cloud.google.com/go/storage/storage.go
generated
vendored
9
vendor/cloud.google.com/go/storage/storage.go
generated
vendored
|
@ -100,19 +100,20 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error
|
||||||
scheme = "https"
|
scheme = "https"
|
||||||
readHost = "storage.googleapis.com"
|
readHost = "storage.googleapis.com"
|
||||||
|
|
||||||
opts = append(opts, option.WithScopes(ScopeFullControl), option.WithUserAgent(userAgent))
|
// Prepend default options to avoid overriding options passed by the user.
|
||||||
|
opts = append([]option.ClientOption{option.WithScopes(ScopeFullControl), option.WithUserAgent(userAgent)}, opts...)
|
||||||
} else {
|
} else {
|
||||||
scheme = "http"
|
scheme = "http"
|
||||||
readHost = host
|
readHost = host
|
||||||
|
|
||||||
opts = append(opts, option.WithoutAuthentication())
|
opts = append([]option.ClientOption{option.WithoutAuthentication()}, opts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
hc, ep, err := htransport.NewClient(ctx, opts...)
|
hc, ep, err := htransport.NewClient(ctx, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("dialing: %v", err)
|
return nil, fmt.Errorf("dialing: %v", err)
|
||||||
}
|
}
|
||||||
rawService, err := raw.New(hc)
|
rawService, err := raw.NewService(ctx, option.WithHTTPClient(hc))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("storage client: %v", err)
|
return nil, fmt.Errorf("storage client: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -128,7 +129,7 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("supplied endpoint %v is not valid: %v", ep, err)
|
return nil, fmt.Errorf("supplied endpoint %v is not valid: %v", ep, err)
|
||||||
}
|
}
|
||||||
readHost = u.Hostname()
|
readHost = u.Host
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Client{
|
return &Client{
|
||||||
|
|
24
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
24
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
|
@ -1571,6 +1571,17 @@ var awsPartition = partition{
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"elastic-inference": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
|
"eu-west-1": endpoint{},
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-2": endpoint{},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"elasticache": service{
|
"elasticache": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -2447,6 +2458,12 @@ var awsPartition = partition{
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"managedblockchain": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"marketplacecommerceanalytics": service{
|
"marketplacecommerceanalytics": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -4415,6 +4432,13 @@ var awscnPartition = partition{
|
||||||
"cn-northwest-1": endpoint{},
|
"cn-northwest-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"backup": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
"cn-northwest-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"batch": service{
|
"batch": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
|
@ -5,4 +5,4 @@ package aws
|
||||||
const SDKName = "aws-sdk-go"
|
const SDKName = "aws-sdk-go"
|
||||||
|
|
||||||
// SDKVersion is the version of this SDK
|
// SDKVersion is the version of this SDK
|
||||||
const SDKVersion = "1.29.3"
|
const SDKVersion = "1.29.10"
|
||||||
|
|
33
vendor/github.com/klauspost/compress/flate/deflate.go
generated
vendored
33
vendor/github.com/klauspost/compress/flate/deflate.go
generated
vendored
|
@ -59,15 +59,13 @@ type compressionLevel struct {
|
||||||
// See https://blog.klauspost.com/rebalancing-deflate-compression-levels/
|
// See https://blog.klauspost.com/rebalancing-deflate-compression-levels/
|
||||||
var levels = []compressionLevel{
|
var levels = []compressionLevel{
|
||||||
{}, // 0
|
{}, // 0
|
||||||
// Level 1-4 uses specialized algorithm - values not used
|
// Level 1-6 uses specialized algorithm - values not used
|
||||||
{0, 0, 0, 0, 0, 1},
|
{0, 0, 0, 0, 0, 1},
|
||||||
{0, 0, 0, 0, 0, 2},
|
{0, 0, 0, 0, 0, 2},
|
||||||
{0, 0, 0, 0, 0, 3},
|
{0, 0, 0, 0, 0, 3},
|
||||||
{0, 0, 0, 0, 0, 4},
|
{0, 0, 0, 0, 0, 4},
|
||||||
// For levels 5-6 we don't bother trying with lazy matches.
|
{0, 0, 0, 0, 0, 5},
|
||||||
// Lazy matching is at least 30% slower, with 1.5% increase.
|
{0, 0, 0, 0, 0, 6},
|
||||||
{6, 0, 12, 8, 12, 5},
|
|
||||||
{8, 0, 24, 16, 16, 6},
|
|
||||||
// Levels 7-9 use increasingly more lazy matching
|
// Levels 7-9 use increasingly more lazy matching
|
||||||
// and increasingly stringent conditions for "good enough".
|
// and increasingly stringent conditions for "good enough".
|
||||||
{8, 8, 24, 16, skipNever, 7},
|
{8, 8, 24, 16, skipNever, 7},
|
||||||
|
@ -203,9 +201,8 @@ func (d *compressor) writeBlockSkip(tok *tokens, index int, eof bool) error {
|
||||||
// This is much faster than doing a full encode.
|
// This is much faster than doing a full encode.
|
||||||
// Should only be used after a start/reset.
|
// Should only be used after a start/reset.
|
||||||
func (d *compressor) fillWindow(b []byte) {
|
func (d *compressor) fillWindow(b []byte) {
|
||||||
// Do not fill window if we are in store-only mode,
|
// Do not fill window if we are in store-only or huffman mode.
|
||||||
// use constant or Snappy compression.
|
if d.level <= 0 {
|
||||||
if d.level == 0 {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if d.fast != nil {
|
if d.fast != nil {
|
||||||
|
@ -667,6 +664,7 @@ func (d *compressor) init(w io.Writer, level int) (err error) {
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("flate: invalid compression level %d: want value in range [-2, 9]", level)
|
return fmt.Errorf("flate: invalid compression level %d: want value in range [-2, 9]", level)
|
||||||
}
|
}
|
||||||
|
d.level = level
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,6 +718,7 @@ func (d *compressor) close() error {
|
||||||
return d.w.err
|
return d.w.err
|
||||||
}
|
}
|
||||||
d.w.flush()
|
d.w.flush()
|
||||||
|
d.w.reset(nil)
|
||||||
return d.w.err
|
return d.w.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -750,8 +749,7 @@ func NewWriter(w io.Writer, level int) (*Writer, error) {
|
||||||
// can only be decompressed by a Reader initialized with the
|
// can only be decompressed by a Reader initialized with the
|
||||||
// same dictionary.
|
// same dictionary.
|
||||||
func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error) {
|
func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error) {
|
||||||
dw := &dictWriter{w}
|
zw, err := NewWriter(w, level)
|
||||||
zw, err := NewWriter(dw, level)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -760,14 +758,6 @@ func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error) {
|
||||||
return zw, err
|
return zw, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type dictWriter struct {
|
|
||||||
w io.Writer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *dictWriter) Write(b []byte) (n int, err error) {
|
|
||||||
return w.w.Write(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
// A Writer takes data written to it and writes the compressed
|
// A Writer takes data written to it and writes the compressed
|
||||||
// form of that data to an underlying writer (see NewWriter).
|
// form of that data to an underlying writer (see NewWriter).
|
||||||
type Writer struct {
|
type Writer struct {
|
||||||
|
@ -805,11 +795,12 @@ func (w *Writer) Close() error {
|
||||||
// the result of NewWriter or NewWriterDict called with dst
|
// the result of NewWriter or NewWriterDict called with dst
|
||||||
// and w's level and dictionary.
|
// and w's level and dictionary.
|
||||||
func (w *Writer) Reset(dst io.Writer) {
|
func (w *Writer) Reset(dst io.Writer) {
|
||||||
if dw, ok := w.d.w.writer.(*dictWriter); ok {
|
if len(w.dict) > 0 {
|
||||||
// w was created with NewWriterDict
|
// w was created with NewWriterDict
|
||||||
dw.w = dst
|
w.d.reset(dst)
|
||||||
w.d.reset(dw)
|
if dst != nil {
|
||||||
w.d.fillWindow(w.dict)
|
w.d.fillWindow(w.dict)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// w was created with NewWriter
|
// w was created with NewWriter
|
||||||
w.d.reset(dst)
|
w.d.reset(dst)
|
||||||
|
|
8
vendor/github.com/klauspost/compress/zstd/blockenc.go
generated
vendored
8
vendor/github.com/klauspost/compress/zstd/blockenc.go
generated
vendored
|
@ -806,7 +806,7 @@ func (b *blockEnc) genCodes() {
|
||||||
mlH[v]++
|
mlH[v]++
|
||||||
if v > mlMax {
|
if v > mlMax {
|
||||||
mlMax = v
|
mlMax = v
|
||||||
if debug && mlMax > maxMatchLengthSymbol {
|
if debugAsserts && mlMax > maxMatchLengthSymbol {
|
||||||
panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d), matchlen: %d", mlMax, seq.matchLen))
|
panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d), matchlen: %d", mlMax, seq.matchLen))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -821,13 +821,13 @@ func (b *blockEnc) genCodes() {
|
||||||
}
|
}
|
||||||
return int(max)
|
return int(max)
|
||||||
}
|
}
|
||||||
if mlMax > maxMatchLengthSymbol {
|
if debugAsserts && mlMax > maxMatchLengthSymbol {
|
||||||
panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d)", mlMax))
|
panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d)", mlMax))
|
||||||
}
|
}
|
||||||
if ofMax > maxOffsetBits {
|
if debugAsserts && ofMax > maxOffsetBits {
|
||||||
panic(fmt.Errorf("ofMax > maxOffsetBits (%d)", ofMax))
|
panic(fmt.Errorf("ofMax > maxOffsetBits (%d)", ofMax))
|
||||||
}
|
}
|
||||||
if llMax > maxLiteralLengthSymbol {
|
if debugAsserts && llMax > maxLiteralLengthSymbol {
|
||||||
panic(fmt.Errorf("llMax > maxLiteralLengthSymbol (%d)", llMax))
|
panic(fmt.Errorf("llMax > maxLiteralLengthSymbol (%d)", llMax))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
vendor/github.com/klauspost/compress/zstd/bytebuf.go
generated
vendored
4
vendor/github.com/klauspost/compress/zstd/bytebuf.go
generated
vendored
|
@ -30,7 +30,7 @@ type byteBuffer interface {
|
||||||
type byteBuf []byte
|
type byteBuf []byte
|
||||||
|
|
||||||
func (b *byteBuf) readSmall(n int) []byte {
|
func (b *byteBuf) readSmall(n int) []byte {
|
||||||
if debug && n > 8 {
|
if debugAsserts && n > 8 {
|
||||||
panic(fmt.Errorf("small read > 8 (%d). use readBig", n))
|
panic(fmt.Errorf("small read > 8 (%d). use readBig", n))
|
||||||
}
|
}
|
||||||
bb := *b
|
bb := *b
|
||||||
|
@ -82,7 +82,7 @@ type readerWrapper struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *readerWrapper) readSmall(n int) []byte {
|
func (r *readerWrapper) readSmall(n int) []byte {
|
||||||
if debug && n > 8 {
|
if debugAsserts && n > 8 {
|
||||||
panic(fmt.Errorf("small read > 8 (%d). use readBig", n))
|
panic(fmt.Errorf("small read > 8 (%d). use readBig", n))
|
||||||
}
|
}
|
||||||
n2, err := io.ReadFull(r.r, r.tmp[:n])
|
n2, err := io.ReadFull(r.r, r.tmp[:n])
|
||||||
|
|
47
vendor/github.com/klauspost/compress/zstd/enc_dfast.go
generated
vendored
47
vendor/github.com/klauspost/compress/zstd/enc_dfast.go
generated
vendored
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
package zstd
|
package zstd
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
dFastLongTableBits = 17 // Bits used in the long match table
|
dFastLongTableBits = 17 // Bits used in the long match table
|
||||||
dFastLongTableSize = 1 << dFastLongTableBits // Size of the table
|
dFastLongTableSize = 1 << dFastLongTableBits // Size of the table
|
||||||
|
@ -29,7 +31,7 @@ func (e *doubleFastEncoder) Encode(blk *blockEnc, src []byte) {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Protect against e.cur wraparound.
|
// Protect against e.cur wraparound.
|
||||||
for e.cur > (1<<30)+e.maxMatchOff {
|
for e.cur >= bufferReset {
|
||||||
if len(e.hist) == 0 {
|
if len(e.hist) == 0 {
|
||||||
for i := range e.table[:] {
|
for i := range e.table[:] {
|
||||||
e.table[i] = tableEntry{}
|
e.table[i] = tableEntry{}
|
||||||
|
@ -61,6 +63,7 @@ func (e *doubleFastEncoder) Encode(blk *blockEnc, src []byte) {
|
||||||
e.longTable[i].offset = v
|
e.longTable[i].offset = v
|
||||||
}
|
}
|
||||||
e.cur = e.maxMatchOff
|
e.cur = e.maxMatchOff
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
s := e.addBlock(src)
|
s := e.addBlock(src)
|
||||||
|
@ -110,7 +113,7 @@ encodeLoop:
|
||||||
canRepeat := len(blk.sequences) > 2
|
canRepeat := len(blk.sequences) > 2
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if debug && canRepeat && offset1 == 0 {
|
if debugAsserts && canRepeat && offset1 == 0 {
|
||||||
panic("offset0 was 0")
|
panic("offset0 was 0")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,10 +232,10 @@ encodeLoop:
|
||||||
// Reference encoder checks all 8 bytes, we only check 4,
|
// Reference encoder checks all 8 bytes, we only check 4,
|
||||||
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
||||||
t = candidateL.offset - e.cur
|
t = candidateL.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debugMatches {
|
if debugMatches {
|
||||||
|
@ -266,13 +269,13 @@ encodeLoop:
|
||||||
}
|
}
|
||||||
|
|
||||||
t = candidateS.offset - e.cur
|
t = candidateS.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debug && t < 0 {
|
if debugAsserts && t < 0 {
|
||||||
panic("t<0")
|
panic("t<0")
|
||||||
}
|
}
|
||||||
if debugMatches {
|
if debugMatches {
|
||||||
|
@ -294,11 +297,11 @@ encodeLoop:
|
||||||
offset2 = offset1
|
offset2 = offset1
|
||||||
offset1 = s - t
|
offset1 = s - t
|
||||||
|
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
|
|
||||||
if debug && canRepeat && int(offset1) > len(src) {
|
if debugAsserts && canRepeat && int(offset1) > len(src) {
|
||||||
panic("invalid offset")
|
panic("invalid offset")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +427,7 @@ func (e *doubleFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Protect against e.cur wraparound.
|
// Protect against e.cur wraparound.
|
||||||
if e.cur > (1<<30)+e.maxMatchOff {
|
if e.cur >= bufferReset {
|
||||||
for i := range e.table[:] {
|
for i := range e.table[:] {
|
||||||
e.table[i] = tableEntry{}
|
e.table[i] = tableEntry{}
|
||||||
}
|
}
|
||||||
|
@ -545,10 +548,10 @@ encodeLoop:
|
||||||
// Reference encoder checks all 8 bytes, we only check 4,
|
// Reference encoder checks all 8 bytes, we only check 4,
|
||||||
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
||||||
t = candidateL.offset - e.cur
|
t = candidateL.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debugMatches {
|
if debugMatches {
|
||||||
|
@ -582,13 +585,13 @@ encodeLoop:
|
||||||
}
|
}
|
||||||
|
|
||||||
t = candidateS.offset - e.cur
|
t = candidateS.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debug && t < 0 {
|
if debugAsserts && t < 0 {
|
||||||
panic("t<0")
|
panic("t<0")
|
||||||
}
|
}
|
||||||
if debugMatches {
|
if debugMatches {
|
||||||
|
@ -610,8 +613,8 @@ encodeLoop:
|
||||||
offset2 = offset1
|
offset2 = offset1
|
||||||
offset1 = s - t
|
offset1 = s - t
|
||||||
|
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extend the 4-byte match as long as possible.
|
// Extend the 4-byte match as long as possible.
|
||||||
|
|
65
vendor/github.com/klauspost/compress/zstd/enc_fast.go
generated
vendored
65
vendor/github.com/klauspost/compress/zstd/enc_fast.go
generated
vendored
|
@ -5,6 +5,7 @@
|
||||||
package zstd
|
package zstd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"math/bits"
|
"math/bits"
|
||||||
|
|
||||||
"github.com/klauspost/compress/zstd/internal/xxhash"
|
"github.com/klauspost/compress/zstd/internal/xxhash"
|
||||||
|
@ -74,7 +75,7 @@ func (e *fastEncoder) Encode(blk *blockEnc, src []byte) {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Protect against e.cur wraparound.
|
// Protect against e.cur wraparound.
|
||||||
for e.cur > (1<<30)+e.maxMatchOff {
|
for e.cur >= bufferReset {
|
||||||
if len(e.hist) == 0 {
|
if len(e.hist) == 0 {
|
||||||
for i := range e.table[:] {
|
for i := range e.table[:] {
|
||||||
e.table[i] = tableEntry{}
|
e.table[i] = tableEntry{}
|
||||||
|
@ -94,6 +95,7 @@ func (e *fastEncoder) Encode(blk *blockEnc, src []byte) {
|
||||||
e.table[i].offset = v
|
e.table[i].offset = v
|
||||||
}
|
}
|
||||||
e.cur = e.maxMatchOff
|
e.cur = e.maxMatchOff
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
s := e.addBlock(src)
|
s := e.addBlock(src)
|
||||||
|
@ -151,7 +153,7 @@ encodeLoop:
|
||||||
canRepeat := len(blk.sequences) > 2
|
canRepeat := len(blk.sequences) > 2
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if debug && canRepeat && offset1 == 0 {
|
if debugAsserts && canRepeat && offset1 == 0 {
|
||||||
panic("offset0 was 0")
|
panic("offset0 was 0")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,10 +214,10 @@ encodeLoop:
|
||||||
if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val {
|
if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val {
|
||||||
// found a regular match
|
// found a regular match
|
||||||
t = candidate.offset - e.cur
|
t = candidate.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
@ -225,13 +227,13 @@ encodeLoop:
|
||||||
// found a regular match
|
// found a regular match
|
||||||
t = candidate2.offset - e.cur
|
t = candidate2.offset - e.cur
|
||||||
s++
|
s++
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debug && t < 0 {
|
if debugAsserts && t < 0 {
|
||||||
panic("t<0")
|
panic("t<0")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
@ -246,11 +248,11 @@ encodeLoop:
|
||||||
offset2 = offset1
|
offset2 = offset1
|
||||||
offset1 = s - t
|
offset1 = s - t
|
||||||
|
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
|
|
||||||
if debug && canRepeat && int(offset1) > len(src) {
|
if debugAsserts && canRepeat && int(offset1) > len(src) {
|
||||||
panic("invalid offset")
|
panic("invalid offset")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +345,7 @@ func (e *fastEncoder) EncodeNoHist(blk *blockEnc, src []byte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Protect against e.cur wraparound.
|
// Protect against e.cur wraparound.
|
||||||
if e.cur > (1<<30)+e.maxMatchOff {
|
if e.cur >= bufferReset {
|
||||||
for i := range e.table[:] {
|
for i := range e.table[:] {
|
||||||
e.table[i] = tableEntry{}
|
e.table[i] = tableEntry{}
|
||||||
}
|
}
|
||||||
|
@ -456,10 +458,10 @@ encodeLoop:
|
||||||
if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val {
|
if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val {
|
||||||
// found a regular match
|
// found a regular match
|
||||||
t = candidate.offset - e.cur
|
t = candidate.offset - e.cur
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
@ -469,13 +471,13 @@ encodeLoop:
|
||||||
// found a regular match
|
// found a regular match
|
||||||
t = candidate2.offset - e.cur
|
t = candidate2.offset - e.cur
|
||||||
s++
|
s++
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
if debug && s-t > e.maxMatchOff {
|
if debugAsserts && s-t > e.maxMatchOff {
|
||||||
panic("s - t >e.maxMatchOff")
|
panic("s - t >e.maxMatchOff")
|
||||||
}
|
}
|
||||||
if debug && t < 0 {
|
if debugAsserts && t < 0 {
|
||||||
panic("t<0")
|
panic("t<0")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
@ -490,8 +492,8 @@ encodeLoop:
|
||||||
offset2 = offset1
|
offset2 = offset1
|
||||||
offset1 = s - t
|
offset1 = s - t
|
||||||
|
|
||||||
if debug && s <= t {
|
if debugAsserts && s <= t {
|
||||||
panic("s <= t")
|
panic(fmt.Sprintf("s (%d) <= t (%d)", s, t))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extend the 4-byte match as long as possible.
|
// Extend the 4-byte match as long as possible.
|
||||||
|
@ -570,6 +572,9 @@ encodeLoop:
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *fastEncoder) addBlock(src []byte) int32 {
|
func (e *fastEncoder) addBlock(src []byte) int32 {
|
||||||
|
if debugAsserts && e.cur > bufferReset {
|
||||||
|
panic(fmt.Sprintf("ecur (%d) > buffer reset (%d)", e.cur, bufferReset))
|
||||||
|
}
|
||||||
// check if we have space already
|
// check if we have space already
|
||||||
if len(e.hist)+len(src) > cap(e.hist) {
|
if len(e.hist)+len(src) > cap(e.hist) {
|
||||||
if cap(e.hist) == 0 {
|
if cap(e.hist) == 0 {
|
||||||
|
@ -608,15 +613,18 @@ func (e *fastEncoder) matchlenNoHist(s, t int32, src []byte) int32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *fastEncoder) matchlen(s, t int32, src []byte) int32 {
|
func (e *fastEncoder) matchlen(s, t int32, src []byte) int32 {
|
||||||
if debug {
|
if debugAsserts {
|
||||||
if s < 0 {
|
if s < 0 {
|
||||||
panic("s<0")
|
err := fmt.Sprintf("s (%d) < 0", s)
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
if t < 0 {
|
if t < 0 {
|
||||||
panic("t<0")
|
err := fmt.Sprintf("s (%d) < 0", s)
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
if s-t > e.maxMatchOff {
|
if s-t > e.maxMatchOff {
|
||||||
panic(s - t)
|
err := fmt.Sprintf("s (%d) - t (%d) > maxMatchOff (%d)", s, t, e.maxMatchOff)
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s1 := int(s) + maxMatchLength - 4
|
s1 := int(s) + maxMatchLength - 4
|
||||||
|
@ -650,7 +658,10 @@ func (e *fastEncoder) Reset() {
|
||||||
}
|
}
|
||||||
e.hist = make([]byte, 0, l)
|
e.hist = make([]byte, 0, l)
|
||||||
}
|
}
|
||||||
// We offset current position so everything will be out of reach
|
// We offset current position so everything will be out of reach.
|
||||||
|
// If above reset line, history will be purged.
|
||||||
|
if e.cur < bufferReset {
|
||||||
e.cur += e.maxMatchOff + int32(len(e.hist))
|
e.cur += e.maxMatchOff + int32(len(e.hist))
|
||||||
|
}
|
||||||
e.hist = e.hist[:0]
|
e.hist = e.hist[:0]
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/klauspost/compress/zstd/encoder.go
generated
vendored
2
vendor/github.com/klauspost/compress/zstd/encoder.go
generated
vendored
|
@ -156,7 +156,7 @@ func (e *Encoder) Write(p []byte) (n int, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
if debug && len(s.filling) > 0 {
|
if debugAsserts && len(s.filling) > 0 {
|
||||||
panic(len(s.filling))
|
panic(len(s.filling))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/klauspost/compress/zstd/framedec.go
generated
vendored
2
vendor/github.com/klauspost/compress/zstd/framedec.go
generated
vendored
|
@ -50,7 +50,7 @@ type frameDec struct {
|
||||||
const (
|
const (
|
||||||
// The minimum Window_Size is 1 KB.
|
// The minimum Window_Size is 1 KB.
|
||||||
MinWindowSize = 1 << 10
|
MinWindowSize = 1 << 10
|
||||||
MaxWindowSize = 1 << 30
|
MaxWindowSize = 1 << 29
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
2
vendor/github.com/klauspost/compress/zstd/fse_decoder.go
generated
vendored
2
vendor/github.com/klauspost/compress/zstd/fse_decoder.go
generated
vendored
|
@ -118,7 +118,7 @@ func (s *fseDecoder) readNCount(b *byteReader, maxSymbol uint16) error {
|
||||||
|
|
||||||
if int32(bitStream)&(threshold-1) < max {
|
if int32(bitStream)&(threshold-1) < max {
|
||||||
count = int32(bitStream) & (threshold - 1)
|
count = int32(bitStream) & (threshold - 1)
|
||||||
if debug && nbBits < 1 {
|
if debugAsserts && nbBits < 1 {
|
||||||
panic("nbBits underflow")
|
panic("nbBits underflow")
|
||||||
}
|
}
|
||||||
bitCount += nbBits - 1
|
bitCount += nbBits - 1
|
||||||
|
|
8
vendor/github.com/klauspost/compress/zstd/fse_encoder.go
generated
vendored
8
vendor/github.com/klauspost/compress/zstd/fse_encoder.go
generated
vendored
|
@ -327,7 +327,7 @@ func (s *fseEncoder) normalizeCount(length int) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if debug {
|
if debugAsserts {
|
||||||
err = s.validateNorm()
|
err = s.validateNorm()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -336,7 +336,7 @@ func (s *fseEncoder) normalizeCount(length int) error {
|
||||||
return s.buildCTable()
|
return s.buildCTable()
|
||||||
}
|
}
|
||||||
s.norm[largest] += stillToDistribute
|
s.norm[largest] += stillToDistribute
|
||||||
if debug {
|
if debugAsserts {
|
||||||
err := s.validateNorm()
|
err := s.validateNorm()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -619,7 +619,7 @@ func (s *fseEncoder) writeCount(out []byte) ([]byte, error) {
|
||||||
func (s *fseEncoder) bitCost(symbolValue uint8, accuracyLog uint32) uint32 {
|
func (s *fseEncoder) bitCost(symbolValue uint8, accuracyLog uint32) uint32 {
|
||||||
minNbBits := s.ct.symbolTT[symbolValue].deltaNbBits >> 16
|
minNbBits := s.ct.symbolTT[symbolValue].deltaNbBits >> 16
|
||||||
threshold := (minNbBits + 1) << 16
|
threshold := (minNbBits + 1) << 16
|
||||||
if debug {
|
if debugAsserts {
|
||||||
if !(s.actualTableLog < 16) {
|
if !(s.actualTableLog < 16) {
|
||||||
panic("!s.actualTableLog < 16")
|
panic("!s.actualTableLog < 16")
|
||||||
}
|
}
|
||||||
|
@ -633,7 +633,7 @@ func (s *fseEncoder) bitCost(symbolValue uint8, accuracyLog uint32) uint32 {
|
||||||
// linear interpolation (very approximate)
|
// linear interpolation (very approximate)
|
||||||
normalizedDeltaFromThreshold := (deltaFromThreshold << accuracyLog) >> s.actualTableLog
|
normalizedDeltaFromThreshold := (deltaFromThreshold << accuracyLog) >> s.actualTableLog
|
||||||
bitMultiplier := uint32(1) << accuracyLog
|
bitMultiplier := uint32(1) << accuracyLog
|
||||||
if debug {
|
if debugAsserts {
|
||||||
if s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold {
|
if s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold {
|
||||||
panic("s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold")
|
panic("s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold")
|
||||||
}
|
}
|
||||||
|
|
12
vendor/github.com/klauspost/compress/zstd/zstd.go
generated
vendored
12
vendor/github.com/klauspost/compress/zstd/zstd.go
generated
vendored
|
@ -6,11 +6,20 @@ package zstd
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
|
"math"
|
||||||
"math/bits"
|
"math/bits"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// enable debug printing
|
||||||
const debug = false
|
const debug = false
|
||||||
|
|
||||||
|
// Enable extra assertions.
|
||||||
|
const debugAsserts = debug || false
|
||||||
|
|
||||||
|
// print sequence details
|
||||||
const debugSequences = false
|
const debugSequences = false
|
||||||
|
|
||||||
|
// print detailed matching information
|
||||||
const debugMatches = false
|
const debugMatches = false
|
||||||
|
|
||||||
// force encoder to use predefined tables.
|
// force encoder to use predefined tables.
|
||||||
|
@ -19,6 +28,9 @@ const forcePreDef = false
|
||||||
// zstdMinMatch is the minimum zstd match length.
|
// zstdMinMatch is the minimum zstd match length.
|
||||||
const zstdMinMatch = 3
|
const zstdMinMatch = 3
|
||||||
|
|
||||||
|
// Reset the buffer offset when reaching this.
|
||||||
|
const bufferReset = math.MaxInt32 - MaxWindowSize
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// ErrReservedBlockType is returned when a reserved block type is found.
|
// ErrReservedBlockType is returned when a reserved block type is found.
|
||||||
// Typically this indicates wrong or corrupted input.
|
// Typically this indicates wrong or corrupted input.
|
||||||
|
|
6
vendor/golang.org/x/net/http2/http2.go
generated
vendored
6
vendor/golang.org/x/net/http2/http2.go
generated
vendored
|
@ -19,7 +19,6 @@ package http2 // import "golang.org/x/net/http2"
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -173,11 +172,6 @@ func (s SettingID) String() string {
|
||||||
return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s))
|
return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s))
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
|
||||||
errInvalidHeaderFieldName = errors.New("http2: invalid header field name")
|
|
||||||
errInvalidHeaderFieldValue = errors.New("http2: invalid header field value")
|
|
||||||
)
|
|
||||||
|
|
||||||
// validWireHeaderFieldName reports whether v is a valid header field
|
// validWireHeaderFieldName reports whether v is a valid header field
|
||||||
// name (key). See httpguts.ValidHeaderName for the base rules.
|
// name (key). See httpguts.ValidHeaderName for the base rules.
|
||||||
//
|
//
|
||||||
|
|
3
vendor/golang.org/x/net/http2/server.go
generated
vendored
3
vendor/golang.org/x/net/http2/server.go
generated
vendored
|
@ -585,9 +585,6 @@ type stream struct {
|
||||||
declBodyBytes int64 // or -1 if undeclared
|
declBodyBytes int64 // or -1 if undeclared
|
||||||
flow flow // limits writing from Handler to client
|
flow flow // limits writing from Handler to client
|
||||||
inflow flow // what the client is allowed to POST/etc to us
|
inflow flow // what the client is allowed to POST/etc to us
|
||||||
parent *stream // or nil
|
|
||||||
numTrailerValues int64
|
|
||||||
weight uint8
|
|
||||||
state streamState
|
state streamState
|
||||||
resetQueued bool // RST_STREAM queued for write; set by sc.resetStream
|
resetQueued bool // RST_STREAM queued for write; set by sc.resetStream
|
||||||
gotTrailerHeader bool // HEADER frame for trailers was seen
|
gotTrailerHeader bool // HEADER frame for trailers was seen
|
||||||
|
|
3
vendor/golang.org/x/net/http2/transport.go
generated
vendored
3
vendor/golang.org/x/net/http2/transport.go
generated
vendored
|
@ -2198,8 +2198,6 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var errInvalidTrailers = errors.New("http2: invalid trailers")
|
|
||||||
|
|
||||||
func (rl *clientConnReadLoop) endStream(cs *clientStream) {
|
func (rl *clientConnReadLoop) endStream(cs *clientStream) {
|
||||||
// TODO: check that any declared content-length matches, like
|
// TODO: check that any declared content-length matches, like
|
||||||
// server.go's (*stream).endStream method.
|
// server.go's (*stream).endStream method.
|
||||||
|
@ -2430,7 +2428,6 @@ func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error)
|
||||||
var (
|
var (
|
||||||
errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit")
|
errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit")
|
||||||
errRequestHeaderListSize = errors.New("http2: request header list larger than peer's advertised limit")
|
errRequestHeaderListSize = errors.New("http2: request header list larger than peer's advertised limit")
|
||||||
errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (cc *ClientConn) logf(format string, args ...interface{}) {
|
func (cc *ClientConn) logf(format string, args ...interface{}) {
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
2
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
|
@ -486,7 +486,7 @@ ccflags="$@"
|
||||||
$2 ~ /^TCSET/ ||
|
$2 ~ /^TCSET/ ||
|
||||||
$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||
|
$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||
|
||||||
$2 !~ "RTF_BITS" &&
|
$2 !~ "RTF_BITS" &&
|
||||||
$2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
|
$2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ ||
|
||||||
$2 ~ /^BIOC/ ||
|
$2 ~ /^BIOC/ ||
|
||||||
$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
|
$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
|
||||||
$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||
|
$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
4
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
|
@ -1555,8 +1555,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//sys Acct(path string) (err error)
|
//sys Acct(path string) (err error)
|
||||||
//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)
|
//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)
|
||||||
//sys Adjtimex(buf *Timex) (state int, err error)
|
//sys Adjtimex(buf *Timex) (state int, err error)
|
||||||
//sys Capget(hdr *CapUserHeader, data *CapUserData) (err error)
|
//sysnb Capget(hdr *CapUserHeader, data *CapUserData) (err error)
|
||||||
//sys Capset(hdr *CapUserHeader, data *CapUserData) (err error)
|
//sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error)
|
||||||
//sys Chdir(path string) (err error)
|
//sys Chdir(path string) (err error)
|
||||||
//sys Chroot(path string) (err error)
|
//sys Chroot(path string) (err error)
|
||||||
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
||||||
|
|
9
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
generated
vendored
9
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
generated
vendored
|
@ -216,6 +216,10 @@ func (cmsg *Cmsghdr) SetLen(length int) {
|
||||||
cmsg.Len = uint64(length)
|
cmsg.Len = uint64(length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func InotifyInit() (fd int, err error) {
|
||||||
|
return InotifyInit1(0)
|
||||||
|
}
|
||||||
|
|
||||||
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
|
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
|
||||||
|
|
||||||
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
|
@ -224,8 +228,3 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
}
|
}
|
||||||
return poll(&fds[0], len(fds), timeout)
|
return poll(&fds[0], len(fds), timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
func InotifyInit() (fd int, err error) {
|
|
||||||
return InotifyInit1(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
|
@ -1938,6 +1938,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
|
@ -1939,6 +1939,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
|
@ -1945,6 +1945,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
|
@ -1931,6 +1931,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
|
@ -1938,6 +1938,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
|
@ -1938,6 +1938,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
|
@ -1938,6 +1938,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
|
@ -1938,6 +1938,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
|
@ -1997,6 +1997,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
|
@ -1997,6 +1997,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
|
@ -1926,6 +1926,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
|
@ -1999,6 +1999,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
15
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
15
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
|
@ -1992,6 +1992,21 @@ const (
|
||||||
RTF_UP = 0x1
|
RTF_UP = 0x1
|
||||||
RTF_WINDOW = 0x80
|
RTF_WINDOW = 0x80
|
||||||
RTF_XRESOLVE = 0x800
|
RTF_XRESOLVE = 0x800
|
||||||
|
RTMGRP_DECnet_IFADDR = 0x1000
|
||||||
|
RTMGRP_DECnet_ROUTE = 0x4000
|
||||||
|
RTMGRP_IPV4_IFADDR = 0x10
|
||||||
|
RTMGRP_IPV4_MROUTE = 0x20
|
||||||
|
RTMGRP_IPV4_ROUTE = 0x40
|
||||||
|
RTMGRP_IPV4_RULE = 0x80
|
||||||
|
RTMGRP_IPV6_IFADDR = 0x100
|
||||||
|
RTMGRP_IPV6_IFINFO = 0x800
|
||||||
|
RTMGRP_IPV6_MROUTE = 0x200
|
||||||
|
RTMGRP_IPV6_PREFIX = 0x20000
|
||||||
|
RTMGRP_IPV6_ROUTE = 0x400
|
||||||
|
RTMGRP_LINK = 0x1
|
||||||
|
RTMGRP_NEIGH = 0x4
|
||||||
|
RTMGRP_NOTIFY = 0x2
|
||||||
|
RTMGRP_TC = 0x8
|
||||||
RTM_BASE = 0x10
|
RTM_BASE = 0x10
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
generated
vendored
|
@ -439,7 +439,7 @@ func Adjtimex(buf *Timex) (state int, err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_386.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_386.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int32
|
type Time_t int32
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int32
|
type Time_t int32
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int32
|
type Time_t int32
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int32
|
type Time_t int32
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
generated
vendored
|
@ -55,6 +55,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
generated
vendored
|
@ -56,6 +56,16 @@ type Timex struct {
|
||||||
_ [44]byte
|
_ [44]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
TIME_OK = 0x0
|
||||||
|
TIME_INS = 0x1
|
||||||
|
TIME_DEL = 0x2
|
||||||
|
TIME_OOP = 0x3
|
||||||
|
TIME_WAIT = 0x4
|
||||||
|
TIME_ERROR = 0x5
|
||||||
|
TIME_BAD = 0x5
|
||||||
|
)
|
||||||
|
|
||||||
type Time_t int64
|
type Time_t int64
|
||||||
|
|
||||||
type Tms struct {
|
type Tms struct {
|
||||||
|
|
220
vendor/golang.org/x/tools/go/internal/cgo/cgo.go
generated
vendored
Normal file
220
vendor/golang.org/x/tools/go/internal/cgo/cgo.go
generated
vendored
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
// Copyright 2013 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 cgo handles cgo preprocessing of files containing `import "C"`.
|
||||||
|
//
|
||||||
|
// DESIGN
|
||||||
|
//
|
||||||
|
// The approach taken is to run the cgo processor on the package's
|
||||||
|
// CgoFiles and parse the output, faking the filenames of the
|
||||||
|
// resulting ASTs so that the synthetic file containing the C types is
|
||||||
|
// called "C" (e.g. "~/go/src/net/C") and the preprocessed files
|
||||||
|
// have their original names (e.g. "~/go/src/net/cgo_unix.go"),
|
||||||
|
// not the names of the actual temporary files.
|
||||||
|
//
|
||||||
|
// The advantage of this approach is its fidelity to 'go build'. The
|
||||||
|
// downside is that the token.Position.Offset for each AST node is
|
||||||
|
// incorrect, being an offset within the temporary file. Line numbers
|
||||||
|
// should still be correct because of the //line comments.
|
||||||
|
//
|
||||||
|
// The logic of this file is mostly plundered from the 'go build'
|
||||||
|
// tool, which also invokes the cgo preprocessor.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// REJECTED ALTERNATIVE
|
||||||
|
//
|
||||||
|
// An alternative approach that we explored is to extend go/types'
|
||||||
|
// Importer mechanism to provide the identity of the importing package
|
||||||
|
// so that each time `import "C"` appears it resolves to a different
|
||||||
|
// synthetic package containing just the objects needed in that case.
|
||||||
|
// The loader would invoke cgo but parse only the cgo_types.go file
|
||||||
|
// defining the package-level objects, discarding the other files
|
||||||
|
// resulting from preprocessing.
|
||||||
|
//
|
||||||
|
// The benefit of this approach would have been that source-level
|
||||||
|
// syntax information would correspond exactly to the original cgo
|
||||||
|
// file, with no preprocessing involved, making source tools like
|
||||||
|
// godoc, guru, and eg happy. However, the approach was rejected
|
||||||
|
// due to the additional complexity it would impose on go/types. (It
|
||||||
|
// made for a beautiful demo, though.)
|
||||||
|
//
|
||||||
|
// cgo files, despite their *.go extension, are not legal Go source
|
||||||
|
// files per the specification since they may refer to unexported
|
||||||
|
// members of package "C" such as C.int. Also, a function such as
|
||||||
|
// C.getpwent has in effect two types, one matching its C type and one
|
||||||
|
// which additionally returns (errno C.int). The cgo preprocessor
|
||||||
|
// uses name mangling to distinguish these two functions in the
|
||||||
|
// processed code, but go/types would need to duplicate this logic in
|
||||||
|
// its handling of function calls, analogous to the treatment of map
|
||||||
|
// lookups in which y=m[k] and y,ok=m[k] are both legal.
|
||||||
|
|
||||||
|
package cgo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"go/ast"
|
||||||
|
"go/build"
|
||||||
|
"go/parser"
|
||||||
|
"go/token"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessFiles invokes the cgo preprocessor on bp.CgoFiles, parses
|
||||||
|
// the output and returns the resulting ASTs.
|
||||||
|
//
|
||||||
|
func ProcessFiles(bp *build.Package, fset *token.FileSet, DisplayPath func(path string) string, mode parser.Mode) ([]*ast.File, error) {
|
||||||
|
tmpdir, err := ioutil.TempDir("", strings.Replace(bp.ImportPath, "/", "_", -1)+"_C")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tmpdir)
|
||||||
|
|
||||||
|
pkgdir := bp.Dir
|
||||||
|
if DisplayPath != nil {
|
||||||
|
pkgdir = DisplayPath(pkgdir)
|
||||||
|
}
|
||||||
|
|
||||||
|
cgoFiles, cgoDisplayFiles, err := Run(bp, pkgdir, tmpdir, false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var files []*ast.File
|
||||||
|
for i := range cgoFiles {
|
||||||
|
rd, err := os.Open(cgoFiles[i])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
display := filepath.Join(bp.Dir, cgoDisplayFiles[i])
|
||||||
|
f, err := parser.ParseFile(fset, display, rd, mode)
|
||||||
|
rd.Close()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
files = append(files, f)
|
||||||
|
}
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var cgoRe = regexp.MustCompile(`[/\\:]`)
|
||||||
|
|
||||||
|
// Run invokes the cgo preprocessor on bp.CgoFiles and returns two
|
||||||
|
// lists of files: the resulting processed files (in temporary
|
||||||
|
// directory tmpdir) and the corresponding names of the unprocessed files.
|
||||||
|
//
|
||||||
|
// Run is adapted from (*builder).cgo in
|
||||||
|
// $GOROOT/src/cmd/go/build.go, but these features are unsupported:
|
||||||
|
// Objective C, CGOPKGPATH, CGO_FLAGS.
|
||||||
|
//
|
||||||
|
// If useabs is set to true, absolute paths of the bp.CgoFiles will be passed in
|
||||||
|
// to the cgo preprocessor. This in turn will set the // line comments
|
||||||
|
// referring to those files to use absolute paths. This is needed for
|
||||||
|
// go/packages using the legacy go list support so it is able to find
|
||||||
|
// the original files.
|
||||||
|
func Run(bp *build.Package, pkgdir, tmpdir string, useabs bool) (files, displayFiles []string, err error) {
|
||||||
|
cgoCPPFLAGS, _, _, _ := cflags(bp, true)
|
||||||
|
_, cgoexeCFLAGS, _, _ := cflags(bp, false)
|
||||||
|
|
||||||
|
if len(bp.CgoPkgConfig) > 0 {
|
||||||
|
pcCFLAGS, err := pkgConfigFlags(bp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
cgoCPPFLAGS = append(cgoCPPFLAGS, pcCFLAGS...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows including _cgo_export.h from .[ch] files in the package.
|
||||||
|
cgoCPPFLAGS = append(cgoCPPFLAGS, "-I", tmpdir)
|
||||||
|
|
||||||
|
// _cgo_gotypes.go (displayed "C") contains the type definitions.
|
||||||
|
files = append(files, filepath.Join(tmpdir, "_cgo_gotypes.go"))
|
||||||
|
displayFiles = append(displayFiles, "C")
|
||||||
|
for _, fn := range bp.CgoFiles {
|
||||||
|
// "foo.cgo1.go" (displayed "foo.go") is the processed Go source.
|
||||||
|
f := cgoRe.ReplaceAllString(fn[:len(fn)-len("go")], "_")
|
||||||
|
files = append(files, filepath.Join(tmpdir, f+"cgo1.go"))
|
||||||
|
displayFiles = append(displayFiles, fn)
|
||||||
|
}
|
||||||
|
|
||||||
|
var cgoflags []string
|
||||||
|
if bp.Goroot && bp.ImportPath == "runtime/cgo" {
|
||||||
|
cgoflags = append(cgoflags, "-import_runtime_cgo=false")
|
||||||
|
}
|
||||||
|
if bp.Goroot && bp.ImportPath == "runtime/race" || bp.ImportPath == "runtime/cgo" {
|
||||||
|
cgoflags = append(cgoflags, "-import_syscall=false")
|
||||||
|
}
|
||||||
|
|
||||||
|
var cgoFiles []string = bp.CgoFiles
|
||||||
|
if useabs {
|
||||||
|
cgoFiles = make([]string, len(bp.CgoFiles))
|
||||||
|
for i := range cgoFiles {
|
||||||
|
cgoFiles[i] = filepath.Join(pkgdir, bp.CgoFiles[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
args := stringList(
|
||||||
|
"go", "tool", "cgo", "-objdir", tmpdir, cgoflags, "--",
|
||||||
|
cgoCPPFLAGS, cgoexeCFLAGS, cgoFiles,
|
||||||
|
)
|
||||||
|
if false {
|
||||||
|
log.Printf("Running cgo for package %q: %s (dir=%s)", bp.ImportPath, args, pkgdir)
|
||||||
|
}
|
||||||
|
cmd := exec.Command(args[0], args[1:]...)
|
||||||
|
cmd.Dir = pkgdir
|
||||||
|
cmd.Stdout = os.Stderr
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
return nil, nil, fmt.Errorf("cgo failed: %s: %s", args, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return files, displayFiles, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- unmodified from 'go build' ---------------------------------------
|
||||||
|
|
||||||
|
// Return the flags to use when invoking the C or C++ compilers, or cgo.
|
||||||
|
func cflags(p *build.Package, def bool) (cppflags, cflags, cxxflags, ldflags []string) {
|
||||||
|
var defaults string
|
||||||
|
if def {
|
||||||
|
defaults = "-g -O2"
|
||||||
|
}
|
||||||
|
|
||||||
|
cppflags = stringList(envList("CGO_CPPFLAGS", ""), p.CgoCPPFLAGS)
|
||||||
|
cflags = stringList(envList("CGO_CFLAGS", defaults), p.CgoCFLAGS)
|
||||||
|
cxxflags = stringList(envList("CGO_CXXFLAGS", defaults), p.CgoCXXFLAGS)
|
||||||
|
ldflags = stringList(envList("CGO_LDFLAGS", defaults), p.CgoLDFLAGS)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// envList returns the value of the given environment variable broken
|
||||||
|
// into fields, using the default value when the variable is empty.
|
||||||
|
func envList(key, def string) []string {
|
||||||
|
v := os.Getenv(key)
|
||||||
|
if v == "" {
|
||||||
|
v = def
|
||||||
|
}
|
||||||
|
return strings.Fields(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// stringList's arguments should be a sequence of string or []string values.
|
||||||
|
// stringList flattens them into a single []string.
|
||||||
|
func stringList(args ...interface{}) []string {
|
||||||
|
var x []string
|
||||||
|
for _, arg := range args {
|
||||||
|
switch arg := arg.(type) {
|
||||||
|
case []string:
|
||||||
|
x = append(x, arg...)
|
||||||
|
case string:
|
||||||
|
x = append(x, arg)
|
||||||
|
default:
|
||||||
|
panic("stringList: invalid argument")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return x
|
||||||
|
}
|
39
vendor/golang.org/x/tools/go/internal/cgo/cgo_pkgconfig.go
generated
vendored
Normal file
39
vendor/golang.org/x/tools/go/internal/cgo/cgo_pkgconfig.go
generated
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
// Copyright 2013 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 cgo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"go/build"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// pkgConfig runs pkg-config with the specified arguments and returns the flags it prints.
|
||||||
|
func pkgConfig(mode string, pkgs []string) (flags []string, err error) {
|
||||||
|
cmd := exec.Command("pkg-config", append([]string{mode}, pkgs...)...)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
s := fmt.Sprintf("%s failed: %v", strings.Join(cmd.Args, " "), err)
|
||||||
|
if len(out) > 0 {
|
||||||
|
s = fmt.Sprintf("%s: %s", s, out)
|
||||||
|
}
|
||||||
|
return nil, errors.New(s)
|
||||||
|
}
|
||||||
|
if len(out) > 0 {
|
||||||
|
flags = strings.Fields(string(out))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// pkgConfigFlags calls pkg-config if needed and returns the cflags
|
||||||
|
// needed to build the package.
|
||||||
|
func pkgConfigFlags(p *build.Package) (cflags []string, err error) {
|
||||||
|
if len(p.CgoPkgConfig) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return pkgConfig("--cflags", p.CgoPkgConfig)
|
||||||
|
}
|
102
vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
generated
vendored
102
vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
generated
vendored
|
@ -11,11 +11,10 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/types"
|
"go/types"
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
"golang.org/x/tools/internal/gocommand"
|
||||||
)
|
)
|
||||||
|
|
||||||
var debug = false
|
var debug = false
|
||||||
|
@ -78,97 +77,42 @@ func GetSizes(ctx context.Context, buildFlags, env []string, dir string, usesExp
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, usesExportData bool) (types.Sizes, error) {
|
func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, usesExportData bool) (types.Sizes, error) {
|
||||||
args := []string{"list", "-f", "{{context.GOARCH}} {{context.Compiler}}"}
|
inv := gocommand.Invocation{
|
||||||
args = append(args, buildFlags...)
|
Verb: "list",
|
||||||
args = append(args, "--", "unsafe")
|
Args: []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"},
|
||||||
stdout, stderr, err := invokeGo(ctx, env, dir, usesExportData, args...)
|
Env: env,
|
||||||
|
BuildFlags: buildFlags,
|
||||||
|
WorkingDir: dir,
|
||||||
|
}
|
||||||
|
stdout, stderr, friendlyErr, rawErr := inv.RunRaw(ctx)
|
||||||
var goarch, compiler string
|
var goarch, compiler string
|
||||||
if err != nil {
|
if rawErr != nil {
|
||||||
if strings.Contains(err.Error(), "cannot find main module") {
|
if strings.Contains(rawErr.Error(), "cannot find main module") {
|
||||||
// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
|
// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
|
||||||
// TODO(matloob): Is this a problem in practice?
|
// TODO(matloob): Is this a problem in practice?
|
||||||
envout, _, enverr := invokeGo(ctx, env, dir, usesExportData, "env", "GOARCH")
|
inv := gocommand.Invocation{
|
||||||
|
Verb: "env",
|
||||||
|
Args: []string{"GOARCH"},
|
||||||
|
Env: env,
|
||||||
|
WorkingDir: dir,
|
||||||
|
}
|
||||||
|
envout, enverr := inv.Run(ctx)
|
||||||
if enverr != nil {
|
if enverr != nil {
|
||||||
return nil, err
|
return nil, enverr
|
||||||
}
|
}
|
||||||
goarch = strings.TrimSpace(envout.String())
|
goarch = strings.TrimSpace(envout.String())
|
||||||
compiler = "gc"
|
compiler = "gc"
|
||||||
} else {
|
} else {
|
||||||
return nil, err
|
return nil, 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>\" from stdout of go command:\n%s\ndir: %s\nstdout: <<%s>>\nstderr: <<%s>>",
|
return nil, fmt.Errorf("could not parse GOARCH and Go compiler in format \"<GOARCH> <compiler>\":\nstdout: <<%s>>\nstderr: <<%s>>",
|
||||||
cmdDebugStr(env, args...), dir, 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 types.SizesFor(compiler, goarch), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// invokeGo returns the stdout and stderr of a go command invocation.
|
|
||||||
func invokeGo(ctx context.Context, env []string, dir string, usesExportData bool, args ...string) (*bytes.Buffer, *bytes.Buffer, error) {
|
|
||||||
if debug {
|
|
||||||
defer func(start time.Time) { log.Printf("%s for %v", time.Since(start), cmdDebugStr(env, args...)) }(time.Now())
|
|
||||||
}
|
|
||||||
stdout := new(bytes.Buffer)
|
|
||||||
stderr := new(bytes.Buffer)
|
|
||||||
cmd := exec.CommandContext(ctx, "go", args...)
|
|
||||||
// On darwin the cwd gets resolved to the real path, which breaks anything that
|
|
||||||
// expects the working directory to keep the original path, including the
|
|
||||||
// go command when dealing with modules.
|
|
||||||
// The Go stdlib has a special feature where if the cwd and the PWD are the
|
|
||||||
// same node then it trusts the PWD, so by setting it in the env for the child
|
|
||||||
// process we fix up all the paths returned by the go command.
|
|
||||||
cmd.Env = append(append([]string{}, env...), "PWD="+dir)
|
|
||||||
cmd.Dir = dir
|
|
||||||
cmd.Stdout = stdout
|
|
||||||
cmd.Stderr = stderr
|
|
||||||
if err := cmd.Run(); err != nil {
|
|
||||||
exitErr, ok := err.(*exec.ExitError)
|
|
||||||
if !ok {
|
|
||||||
// Catastrophic error:
|
|
||||||
// - executable not found
|
|
||||||
// - context cancellation
|
|
||||||
return nil, nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Export mode entails a build.
|
|
||||||
// If that build fails, errors appear on stderr
|
|
||||||
// (despite the -e flag) and the Export field is blank.
|
|
||||||
// Do not fail in that case.
|
|
||||||
if !usesExportData {
|
|
||||||
return nil, nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// As of writing, go list -export prints some non-fatal compilation
|
|
||||||
// errors to stderr, even with -e set. We would prefer that it put
|
|
||||||
// them in the Package.Error JSON (see https://golang.org/issue/26319).
|
|
||||||
// In the meantime, there's nowhere good to put them, but they can
|
|
||||||
// be useful for debugging. Print them if $GOPACKAGESPRINTGOLISTERRORS
|
|
||||||
// is set.
|
|
||||||
if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTGOLISTERRORS") != "" {
|
|
||||||
fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(env, args...), stderr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// debugging
|
|
||||||
if false {
|
|
||||||
fmt.Fprintf(os.Stderr, "%s stdout: <<%s>>\n", cmdDebugStr(env, args...), stdout)
|
|
||||||
}
|
|
||||||
|
|
||||||
return stdout, stderr, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func cmdDebugStr(envlist []string, args ...string) string {
|
|
||||||
env := make(map[string]string)
|
|
||||||
for _, kv := range envlist {
|
|
||||||
split := strings.Split(kv, "=")
|
|
||||||
k, v := split[0], split[1]
|
|
||||||
env[k] = v
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["PWD"], args)
|
|
||||||
}
|
|
||||||
|
|
204
vendor/golang.org/x/tools/go/loader/doc.go
generated
vendored
Normal file
204
vendor/golang.org/x/tools/go/loader/doc.go
generated
vendored
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
// Copyright 2015 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 loader loads a complete Go program from source code, parsing
|
||||||
|
// and type-checking the initial packages plus their transitive closure
|
||||||
|
// of dependencies. The ASTs and the derived facts are retained for
|
||||||
|
// later use.
|
||||||
|
//
|
||||||
|
// Deprecated: This is an older API and does not have support
|
||||||
|
// for modules. Use golang.org/x/tools/go/packages instead.
|
||||||
|
//
|
||||||
|
// The package defines two primary types: Config, which specifies a
|
||||||
|
// set of initial packages to load and various other options; and
|
||||||
|
// Program, which is the result of successfully loading the packages
|
||||||
|
// specified by a configuration.
|
||||||
|
//
|
||||||
|
// The configuration can be set directly, but *Config provides various
|
||||||
|
// convenience methods to simplify the common cases, each of which can
|
||||||
|
// be called any number of times. Finally, these are followed by a
|
||||||
|
// call to Load() to actually load and type-check the program.
|
||||||
|
//
|
||||||
|
// var conf loader.Config
|
||||||
|
//
|
||||||
|
// // Use the command-line arguments to specify
|
||||||
|
// // a set of initial packages to load from source.
|
||||||
|
// // See FromArgsUsage for help.
|
||||||
|
// rest, err := conf.FromArgs(os.Args[1:], wantTests)
|
||||||
|
//
|
||||||
|
// // Parse the specified files and create an ad hoc package with path "foo".
|
||||||
|
// // All files must have the same 'package' declaration.
|
||||||
|
// conf.CreateFromFilenames("foo", "foo.go", "bar.go")
|
||||||
|
//
|
||||||
|
// // Create an ad hoc package with path "foo" from
|
||||||
|
// // the specified already-parsed files.
|
||||||
|
// // All ASTs must have the same 'package' declaration.
|
||||||
|
// conf.CreateFromFiles("foo", parsedFiles)
|
||||||
|
//
|
||||||
|
// // Add "runtime" to the set of packages to be loaded.
|
||||||
|
// conf.Import("runtime")
|
||||||
|
//
|
||||||
|
// // Adds "fmt" and "fmt_test" to the set of packages
|
||||||
|
// // to be loaded. "fmt" will include *_test.go files.
|
||||||
|
// conf.ImportWithTests("fmt")
|
||||||
|
//
|
||||||
|
// // Finally, load all the packages specified by the configuration.
|
||||||
|
// prog, err := conf.Load()
|
||||||
|
//
|
||||||
|
// See examples_test.go for examples of API usage.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// CONCEPTS AND TERMINOLOGY
|
||||||
|
//
|
||||||
|
// The WORKSPACE is the set of packages accessible to the loader. The
|
||||||
|
// workspace is defined by Config.Build, a *build.Context. The
|
||||||
|
// default context treats subdirectories of $GOROOT and $GOPATH as
|
||||||
|
// packages, but this behavior may be overridden.
|
||||||
|
//
|
||||||
|
// An AD HOC package is one specified as a set of source files on the
|
||||||
|
// command line. In the simplest case, it may consist of a single file
|
||||||
|
// such as $GOROOT/src/net/http/triv.go.
|
||||||
|
//
|
||||||
|
// EXTERNAL TEST packages are those comprised of a set of *_test.go
|
||||||
|
// files all with the same 'package foo_test' declaration, all in the
|
||||||
|
// same directory. (go/build.Package calls these files XTestFiles.)
|
||||||
|
//
|
||||||
|
// An IMPORTABLE package is one that can be referred to by some import
|
||||||
|
// spec. Every importable package is uniquely identified by its
|
||||||
|
// PACKAGE PATH or just PATH, a string such as "fmt", "encoding/json",
|
||||||
|
// or "cmd/vendor/golang.org/x/arch/x86/x86asm". A package path
|
||||||
|
// typically denotes a subdirectory of the workspace.
|
||||||
|
//
|
||||||
|
// An import declaration uses an IMPORT PATH to refer to a package.
|
||||||
|
// Most import declarations use the package path as the import path.
|
||||||
|
//
|
||||||
|
// Due to VENDORING (https://golang.org/s/go15vendor), the
|
||||||
|
// interpretation of an import path may depend on the directory in which
|
||||||
|
// it appears. To resolve an import path to a package path, go/build
|
||||||
|
// must search the enclosing directories for a subdirectory named
|
||||||
|
// "vendor".
|
||||||
|
//
|
||||||
|
// ad hoc packages and external test packages are NON-IMPORTABLE. The
|
||||||
|
// path of an ad hoc package is inferred from the package
|
||||||
|
// declarations of its files and is therefore not a unique package key.
|
||||||
|
// For example, Config.CreatePkgs may specify two initial ad hoc
|
||||||
|
// packages, both with path "main".
|
||||||
|
//
|
||||||
|
// An AUGMENTED package is an importable package P plus all the
|
||||||
|
// *_test.go files with same 'package foo' declaration as P.
|
||||||
|
// (go/build.Package calls these files TestFiles.)
|
||||||
|
//
|
||||||
|
// The INITIAL packages are those specified in the configuration. A
|
||||||
|
// DEPENDENCY is a package loaded to satisfy an import in an initial
|
||||||
|
// package or another dependency.
|
||||||
|
//
|
||||||
|
package loader
|
||||||
|
|
||||||
|
// IMPLEMENTATION NOTES
|
||||||
|
//
|
||||||
|
// 'go test', in-package test files, and import cycles
|
||||||
|
// ---------------------------------------------------
|
||||||
|
//
|
||||||
|
// An external test package may depend upon members of the augmented
|
||||||
|
// package that are not in the unaugmented package, such as functions
|
||||||
|
// that expose internals. (See bufio/export_test.go for an example.)
|
||||||
|
// So, the loader must ensure that for each external test package
|
||||||
|
// it loads, it also augments the corresponding non-test package.
|
||||||
|
//
|
||||||
|
// The import graph over n unaugmented packages must be acyclic; the
|
||||||
|
// import graph over n-1 unaugmented packages plus one augmented
|
||||||
|
// package must also be acyclic. ('go test' relies on this.) But the
|
||||||
|
// import graph over n augmented packages may contain cycles.
|
||||||
|
//
|
||||||
|
// First, all the (unaugmented) non-test packages and their
|
||||||
|
// dependencies are imported in the usual way; the loader reports an
|
||||||
|
// error if it detects an import cycle.
|
||||||
|
//
|
||||||
|
// Then, each package P for which testing is desired is augmented by
|
||||||
|
// the list P' of its in-package test files, by calling
|
||||||
|
// (*types.Checker).Files. This arrangement ensures that P' may
|
||||||
|
// reference definitions within P, but P may not reference definitions
|
||||||
|
// within P'. Furthermore, P' may import any other package, including
|
||||||
|
// ones that depend upon P, without an import cycle error.
|
||||||
|
//
|
||||||
|
// Consider two packages A and B, both of which have lists of
|
||||||
|
// in-package test files we'll call A' and B', and which have the
|
||||||
|
// following import graph edges:
|
||||||
|
// B imports A
|
||||||
|
// B' imports A
|
||||||
|
// A' imports B
|
||||||
|
// This last edge would be expected to create an error were it not
|
||||||
|
// for the special type-checking discipline above.
|
||||||
|
// Cycles of size greater than two are possible. For example:
|
||||||
|
// compress/bzip2/bzip2_test.go (package bzip2) imports "io/ioutil"
|
||||||
|
// io/ioutil/tempfile_test.go (package ioutil) imports "regexp"
|
||||||
|
// regexp/exec_test.go (package regexp) imports "compress/bzip2"
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Concurrency
|
||||||
|
// -----------
|
||||||
|
//
|
||||||
|
// Let us define the import dependency graph as follows. Each node is a
|
||||||
|
// list of files passed to (Checker).Files at once. Many of these lists
|
||||||
|
// are the production code of an importable Go package, so those nodes
|
||||||
|
// are labelled by the package's path. The remaining nodes are
|
||||||
|
// ad hoc packages and lists of in-package *_test.go files that augment
|
||||||
|
// an importable package; those nodes have no label.
|
||||||
|
//
|
||||||
|
// The edges of the graph represent import statements appearing within a
|
||||||
|
// file. An edge connects a node (a list of files) to the node it
|
||||||
|
// imports, which is importable and thus always labelled.
|
||||||
|
//
|
||||||
|
// Loading is controlled by this dependency graph.
|
||||||
|
//
|
||||||
|
// To reduce I/O latency, we start loading a package's dependencies
|
||||||
|
// asynchronously as soon as we've parsed its files and enumerated its
|
||||||
|
// imports (scanImports). This performs a preorder traversal of the
|
||||||
|
// import dependency graph.
|
||||||
|
//
|
||||||
|
// To exploit hardware parallelism, we type-check unrelated packages in
|
||||||
|
// parallel, where "unrelated" means not ordered by the partial order of
|
||||||
|
// the import dependency graph.
|
||||||
|
//
|
||||||
|
// We use a concurrency-safe non-blocking cache (importer.imported) to
|
||||||
|
// record the results of type-checking, whether success or failure. An
|
||||||
|
// entry is created in this cache by startLoad the first time the
|
||||||
|
// package is imported. The first goroutine to request an entry becomes
|
||||||
|
// responsible for completing the task and broadcasting completion to
|
||||||
|
// subsequent requestors, which block until then.
|
||||||
|
//
|
||||||
|
// Type checking occurs in (parallel) postorder: we cannot type-check a
|
||||||
|
// set of files until we have loaded and type-checked all of their
|
||||||
|
// immediate dependencies (and thus all of their transitive
|
||||||
|
// dependencies). If the input were guaranteed free of import cycles,
|
||||||
|
// this would be trivial: we could simply wait for completion of the
|
||||||
|
// dependencies and then invoke the typechecker.
|
||||||
|
//
|
||||||
|
// But as we saw in the 'go test' section above, some cycles in the
|
||||||
|
// import graph over packages are actually legal, so long as the
|
||||||
|
// cycle-forming edge originates in the in-package test files that
|
||||||
|
// augment the package. This explains why the nodes of the import
|
||||||
|
// dependency graph are not packages, but lists of files: the unlabelled
|
||||||
|
// nodes avoid the cycles. Consider packages A and B where B imports A
|
||||||
|
// and A's in-package tests AT import B. The naively constructed import
|
||||||
|
// graph over packages would contain a cycle (A+AT) --> B --> (A+AT) but
|
||||||
|
// the graph over lists of files is AT --> B --> A, where AT is an
|
||||||
|
// unlabelled node.
|
||||||
|
//
|
||||||
|
// Awaiting completion of the dependencies in a cyclic graph would
|
||||||
|
// deadlock, so we must materialize the import dependency graph (as
|
||||||
|
// importer.graph) and check whether each import edge forms a cycle. If
|
||||||
|
// x imports y, and the graph already contains a path from y to x, then
|
||||||
|
// there is an import cycle, in which case the processing of x must not
|
||||||
|
// wait for the completion of processing of y.
|
||||||
|
//
|
||||||
|
// When the type-checker makes a callback (doImport) to the loader for a
|
||||||
|
// given import edge, there are two possible cases. In the normal case,
|
||||||
|
// the dependency has already been completely type-checked; doImport
|
||||||
|
// does a cache lookup and returns it. In the cyclic case, the entry in
|
||||||
|
// the cache is still necessarily incomplete, indicating a cycle. We
|
||||||
|
// perform the cycle check again to obtain the error message, and return
|
||||||
|
// the error.
|
||||||
|
//
|
||||||
|
// The result of using concurrency is about a 2.5x speedup for stdlib_test.
|
1086
vendor/golang.org/x/tools/go/loader/loader.go
generated
vendored
Normal file
1086
vendor/golang.org/x/tools/go/loader/loader.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
124
vendor/golang.org/x/tools/go/loader/util.go
generated
vendored
Normal file
124
vendor/golang.org/x/tools/go/loader/util.go
generated
vendored
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
// Copyright 2013 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 loader
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/build"
|
||||||
|
"go/parser"
|
||||||
|
"go/token"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/buildutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// We use a counting semaphore to limit
|
||||||
|
// the number of parallel I/O calls per process.
|
||||||
|
var ioLimit = make(chan bool, 10)
|
||||||
|
|
||||||
|
// parseFiles parses the Go source files within directory dir and
|
||||||
|
// returns the ASTs of the ones that could be at least partially parsed,
|
||||||
|
// along with a list of I/O and parse errors encountered.
|
||||||
|
//
|
||||||
|
// I/O is done via ctxt, which may specify a virtual file system.
|
||||||
|
// displayPath is used to transform the filenames attached to the ASTs.
|
||||||
|
//
|
||||||
|
func parseFiles(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, dir string, files []string, mode parser.Mode) ([]*ast.File, []error) {
|
||||||
|
if displayPath == nil {
|
||||||
|
displayPath = func(path string) string { return path }
|
||||||
|
}
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
n := len(files)
|
||||||
|
parsed := make([]*ast.File, n)
|
||||||
|
errors := make([]error, n)
|
||||||
|
for i, file := range files {
|
||||||
|
if !buildutil.IsAbsPath(ctxt, file) {
|
||||||
|
file = buildutil.JoinPath(ctxt, dir, file)
|
||||||
|
}
|
||||||
|
wg.Add(1)
|
||||||
|
go func(i int, file string) {
|
||||||
|
ioLimit <- true // wait
|
||||||
|
defer func() {
|
||||||
|
wg.Done()
|
||||||
|
<-ioLimit // signal
|
||||||
|
}()
|
||||||
|
var rd io.ReadCloser
|
||||||
|
var err error
|
||||||
|
if ctxt.OpenFile != nil {
|
||||||
|
rd, err = ctxt.OpenFile(file)
|
||||||
|
} else {
|
||||||
|
rd, err = os.Open(file)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
errors[i] = err // open failed
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseFile may return both an AST and an error.
|
||||||
|
parsed[i], errors[i] = parser.ParseFile(fset, displayPath(file), rd, mode)
|
||||||
|
rd.Close()
|
||||||
|
}(i, file)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
// Eliminate nils, preserving order.
|
||||||
|
var o int
|
||||||
|
for _, f := range parsed {
|
||||||
|
if f != nil {
|
||||||
|
parsed[o] = f
|
||||||
|
o++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parsed = parsed[:o]
|
||||||
|
|
||||||
|
o = 0
|
||||||
|
for _, err := range errors {
|
||||||
|
if err != nil {
|
||||||
|
errors[o] = err
|
||||||
|
o++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
errors = errors[:o]
|
||||||
|
|
||||||
|
return parsed, errors
|
||||||
|
}
|
||||||
|
|
||||||
|
// scanImports returns the set of all import paths from all
|
||||||
|
// import specs in the specified files.
|
||||||
|
func scanImports(files []*ast.File) map[string]bool {
|
||||||
|
imports := make(map[string]bool)
|
||||||
|
for _, f := range files {
|
||||||
|
for _, decl := range f.Decls {
|
||||||
|
if decl, ok := decl.(*ast.GenDecl); ok && decl.Tok == token.IMPORT {
|
||||||
|
for _, spec := range decl.Specs {
|
||||||
|
spec := spec.(*ast.ImportSpec)
|
||||||
|
|
||||||
|
// NB: do not assume the program is well-formed!
|
||||||
|
path, err := strconv.Unquote(spec.Path.Value)
|
||||||
|
if err != nil {
|
||||||
|
continue // quietly ignore the error
|
||||||
|
}
|
||||||
|
if path == "C" {
|
||||||
|
continue // skip pseudopackage
|
||||||
|
}
|
||||||
|
imports[path] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return imports
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- Internal helpers ----------
|
||||||
|
|
||||||
|
// TODO(adonovan): make this a method: func (*token.File) Contains(token.Pos)
|
||||||
|
func tokenFileContainsPos(f *token.File, pos token.Pos) bool {
|
||||||
|
p := int(pos)
|
||||||
|
base := f.Base()
|
||||||
|
return base <= p && p < base+f.Size()
|
||||||
|
}
|
47
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
47
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
|
@ -20,10 +20,11 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"golang.org/x/tools/go/internal/packagesdriver"
|
"golang.org/x/tools/go/internal/packagesdriver"
|
||||||
|
"golang.org/x/tools/internal/gocommand"
|
||||||
|
"golang.org/x/tools/internal/packagesinternal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// debug controls verbose logging.
|
// debug controls verbose logging.
|
||||||
|
@ -380,6 +381,7 @@ type jsonPackage struct {
|
||||||
Imports []string
|
Imports []string
|
||||||
ImportMap map[string]string
|
ImportMap map[string]string
|
||||||
Deps []string
|
Deps []string
|
||||||
|
Module *packagesinternal.Module
|
||||||
TestGoFiles []string
|
TestGoFiles []string
|
||||||
TestImports []string
|
TestImports []string
|
||||||
XTestGoFiles []string
|
XTestGoFiles []string
|
||||||
|
@ -529,6 +531,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
|
||||||
CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles),
|
CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles),
|
||||||
OtherFiles: absJoin(p.Dir, otherFiles(p)...),
|
OtherFiles: absJoin(p.Dir, otherFiles(p)...),
|
||||||
forTest: p.ForTest,
|
forTest: p.ForTest,
|
||||||
|
module: p.Module,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Work around https://golang.org/issue/28749:
|
// Work around https://golang.org/issue/28749:
|
||||||
|
@ -704,29 +707,17 @@ func golistargs(cfg *Config, words []string) []string {
|
||||||
func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
|
func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
|
||||||
cfg := state.cfg
|
cfg := state.cfg
|
||||||
|
|
||||||
stdout := new(bytes.Buffer)
|
inv := &gocommand.Invocation{
|
||||||
stderr := new(bytes.Buffer)
|
Verb: verb,
|
||||||
goArgs := []string{verb}
|
Args: args,
|
||||||
if verb != "env" {
|
BuildFlags: cfg.BuildFlags,
|
||||||
goArgs = append(goArgs, cfg.BuildFlags...)
|
Env: cfg.Env,
|
||||||
|
Logf: cfg.Logf,
|
||||||
|
WorkingDir: cfg.Dir,
|
||||||
}
|
}
|
||||||
goArgs = append(goArgs, args...)
|
|
||||||
cmd := exec.CommandContext(state.ctx, "go", goArgs...)
|
|
||||||
// On darwin the cwd gets resolved to the real path, which breaks anything that
|
|
||||||
// expects the working directory to keep the original path, including the
|
|
||||||
// go command when dealing with modules.
|
|
||||||
// The Go stdlib has a special feature where if the cwd and the PWD are the
|
|
||||||
// same node then it trusts the PWD, so by setting it in the env for the child
|
|
||||||
// process we fix up all the paths returned by the go command.
|
|
||||||
cmd.Env = append(append([]string{}, cfg.Env...), "PWD="+cfg.Dir)
|
|
||||||
cmd.Dir = cfg.Dir
|
|
||||||
cmd.Stdout = stdout
|
|
||||||
cmd.Stderr = stderr
|
|
||||||
defer func(start time.Time) {
|
|
||||||
cfg.Logf("%s for %v, stderr: <<%s>> stdout: <<%s>>\n", time.Since(start), cmdDebugStr(cmd, goArgs...), stderr, stdout)
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
if err := cmd.Run(); err != nil {
|
stdout, stderr, _, err := inv.RunRaw(cfg.Context)
|
||||||
|
if err != nil {
|
||||||
// Check for 'go' executable not being found.
|
// Check for 'go' executable not being found.
|
||||||
if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound {
|
if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound {
|
||||||
return nil, fmt.Errorf("'go list' driver requires 'go', but %s", exec.ErrNotFound)
|
return nil, fmt.Errorf("'go list' driver requires 'go', but %s", exec.ErrNotFound)
|
||||||
|
@ -736,7 +727,7 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
|
||||||
if !ok {
|
if !ok {
|
||||||
// Catastrophic error:
|
// Catastrophic error:
|
||||||
// - context cancellation
|
// - context cancellation
|
||||||
return nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err)
|
return nil, fmt.Errorf("couldn't run 'go': %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Old go version?
|
// Old go version?
|
||||||
|
@ -857,16 +848,6 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
|
||||||
return nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr)
|
return nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// As of writing, go list -export prints some non-fatal compilation
|
|
||||||
// errors to stderr, even with -e set. We would prefer that it put
|
|
||||||
// them in the Package.Error JSON (see https://golang.org/issue/26319).
|
|
||||||
// In the meantime, there's nowhere good to put them, but they can
|
|
||||||
// be useful for debugging. Print them if $GOPACKAGESPRINTGOLISTERRORS
|
|
||||||
// is set.
|
|
||||||
if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTGOLISTERRORS") != "" {
|
|
||||||
fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd, args...), stderr)
|
|
||||||
}
|
|
||||||
return stdout, nil
|
return stdout, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
6
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
|
@ -299,12 +299,18 @@ type Package struct {
|
||||||
|
|
||||||
// forTest is the package under test, if any.
|
// forTest is the package under test, if any.
|
||||||
forTest string
|
forTest string
|
||||||
|
|
||||||
|
// module is the module information for the package if it exists.
|
||||||
|
module *packagesinternal.Module
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
packagesinternal.GetForTest = func(p interface{}) string {
|
packagesinternal.GetForTest = func(p interface{}) string {
|
||||||
return p.(*Package).forTest
|
return p.(*Package).forTest
|
||||||
}
|
}
|
||||||
|
packagesinternal.GetModule = func(p interface{}) *packagesinternal.Module {
|
||||||
|
return p.(*Package).module
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// An Error describes a problem with a package's metadata, syntax, or types.
|
// An Error describes a problem with a package's metadata, syntax, or types.
|
||||||
|
|
121
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
Normal file
121
vendor/golang.org/x/tools/internal/gocommand/invoke.go
generated
vendored
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
// Package gocommand is a helper for calling the go command.
|
||||||
|
package gocommand
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// An Invocation represents a call to the go command.
|
||||||
|
type Invocation struct {
|
||||||
|
Verb string
|
||||||
|
Args []string
|
||||||
|
BuildFlags []string
|
||||||
|
Env []string
|
||||||
|
WorkingDir string
|
||||||
|
Logf func(format string, args ...interface{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run runs the invocation, returning its stdout and an error suitable for
|
||||||
|
// human consumption, including stderr.
|
||||||
|
func (i *Invocation) Run(ctx context.Context) (*bytes.Buffer, error) {
|
||||||
|
stdout, _, friendly, _ := i.RunRaw(ctx)
|
||||||
|
return stdout, friendly
|
||||||
|
}
|
||||||
|
|
||||||
|
// RunRaw is like Run, but also returns the raw stderr and error for callers
|
||||||
|
// that want to do low-level error handling/recovery.
|
||||||
|
func (i *Invocation) RunRaw(ctx context.Context) (stdout *bytes.Buffer, stderr *bytes.Buffer, friendlyError error, rawError error) {
|
||||||
|
log := i.Logf
|
||||||
|
if log == nil {
|
||||||
|
log = func(string, ...interface{}) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
goArgs := []string{i.Verb}
|
||||||
|
switch i.Verb {
|
||||||
|
case "mod":
|
||||||
|
// mod needs the sub-verb before build flags.
|
||||||
|
goArgs = append(goArgs, i.Args[0])
|
||||||
|
goArgs = append(goArgs, i.BuildFlags...)
|
||||||
|
goArgs = append(goArgs, i.Args[1:]...)
|
||||||
|
case "env":
|
||||||
|
// env doesn't take build flags.
|
||||||
|
goArgs = append(goArgs, i.Args...)
|
||||||
|
default:
|
||||||
|
goArgs = append(goArgs, i.BuildFlags...)
|
||||||
|
goArgs = append(goArgs, i.Args...)
|
||||||
|
}
|
||||||
|
cmd := exec.Command("go", goArgs...)
|
||||||
|
stdout = &bytes.Buffer{}
|
||||||
|
stderr = &bytes.Buffer{}
|
||||||
|
cmd.Stdout = stdout
|
||||||
|
cmd.Stderr = stderr
|
||||||
|
// On darwin the cwd gets resolved to the real path, which breaks anything that
|
||||||
|
// expects the working directory to keep the original path, including the
|
||||||
|
// go command when dealing with modules.
|
||||||
|
// The Go stdlib has a special feature where if the cwd and the PWD are the
|
||||||
|
// same node then it trusts the PWD, so by setting it in the env for the child
|
||||||
|
// process we fix up all the paths returned by the go command.
|
||||||
|
cmd.Env = append(append([]string{}, i.Env...), "PWD="+i.WorkingDir)
|
||||||
|
cmd.Dir = i.WorkingDir
|
||||||
|
|
||||||
|
defer func(start time.Time) { log("%s for %v", time.Since(start), cmdDebugStr(cmd)) }(time.Now())
|
||||||
|
|
||||||
|
rawError = runCmdContext(ctx, cmd)
|
||||||
|
friendlyError = rawError
|
||||||
|
if rawError != nil {
|
||||||
|
// Check for 'go' executable not being found.
|
||||||
|
if ee, ok := rawError.(*exec.Error); ok && ee.Err == exec.ErrNotFound {
|
||||||
|
friendlyError = fmt.Errorf("go command required, not found: %v", ee)
|
||||||
|
}
|
||||||
|
if ctx.Err() != nil {
|
||||||
|
friendlyError = ctx.Err()
|
||||||
|
}
|
||||||
|
friendlyError = fmt.Errorf("err: %v: stderr: %s", rawError, stderr)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// runCmdContext is like exec.CommandContext except it sends os.Interrupt
|
||||||
|
// before os.Kill.
|
||||||
|
func runCmdContext(ctx context.Context, cmd *exec.Cmd) error {
|
||||||
|
if err := cmd.Start(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
resChan := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
resChan <- cmd.Wait()
|
||||||
|
}()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case err := <-resChan:
|
||||||
|
return err
|
||||||
|
case <-ctx.Done():
|
||||||
|
}
|
||||||
|
// Cancelled. Interrupt and see if it ends voluntarily.
|
||||||
|
cmd.Process.Signal(os.Interrupt)
|
||||||
|
select {
|
||||||
|
case err := <-resChan:
|
||||||
|
return err
|
||||||
|
case <-time.After(time.Second):
|
||||||
|
}
|
||||||
|
// Didn't shut down in response to interrupt. Kill it hard.
|
||||||
|
cmd.Process.Kill()
|
||||||
|
return <-resChan
|
||||||
|
}
|
||||||
|
|
||||||
|
func cmdDebugStr(cmd *exec.Cmd) string {
|
||||||
|
env := make(map[string]string)
|
||||||
|
for _, kv := range cmd.Env {
|
||||||
|
split := strings.Split(kv, "=")
|
||||||
|
k, v := split[0], split[1]
|
||||||
|
env[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], cmd.Args)
|
||||||
|
}
|
45
vendor/golang.org/x/tools/internal/imports/fix.go
generated
vendored
45
vendor/golang.org/x/tools/internal/imports/fix.go
generated
vendored
|
@ -14,7 +14,6 @@ import (
|
||||||
"go/token"
|
"go/token"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -22,11 +21,11 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
"unicode"
|
"unicode"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"golang.org/x/tools/go/ast/astutil"
|
"golang.org/x/tools/go/ast/astutil"
|
||||||
|
"golang.org/x/tools/internal/gocommand"
|
||||||
"golang.org/x/tools/internal/gopathwalk"
|
"golang.org/x/tools/internal/gopathwalk"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -792,7 +791,7 @@ func (e *ProcessEnv) GetResolver() Resolver {
|
||||||
if e.resolver != nil {
|
if e.resolver != nil {
|
||||||
return e.resolver
|
return e.resolver
|
||||||
}
|
}
|
||||||
out, err := e.invokeGo("env", "GOMOD")
|
out, err := e.invokeGo(context.TODO(), "env", "GOMOD")
|
||||||
if err != nil || len(bytes.TrimSpace(out.Bytes())) == 0 {
|
if err != nil || len(bytes.TrimSpace(out.Bytes())) == 0 {
|
||||||
e.resolver = newGopathResolver(e)
|
e.resolver = newGopathResolver(e)
|
||||||
return e.resolver
|
return e.resolver
|
||||||
|
@ -823,38 +822,16 @@ func (e *ProcessEnv) buildContext() *build.Context {
|
||||||
return &ctx
|
return &ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ProcessEnv) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
|
func (e *ProcessEnv) invokeGo(ctx context.Context, verb string, args ...string) (*bytes.Buffer, error) {
|
||||||
goArgs := []string{verb}
|
inv := gocommand.Invocation{
|
||||||
if verb != "env" {
|
Verb: verb,
|
||||||
goArgs = append(goArgs, e.BuildFlags...)
|
Args: args,
|
||||||
|
BuildFlags: e.BuildFlags,
|
||||||
|
Env: e.env(),
|
||||||
|
Logf: e.Logf,
|
||||||
|
WorkingDir: e.WorkingDir,
|
||||||
}
|
}
|
||||||
goArgs = append(goArgs, args...)
|
return inv.Run(ctx)
|
||||||
cmd := exec.Command("go", goArgs...)
|
|
||||||
stdout := &bytes.Buffer{}
|
|
||||||
stderr := &bytes.Buffer{}
|
|
||||||
cmd.Stdout = stdout
|
|
||||||
cmd.Stderr = stderr
|
|
||||||
cmd.Env = e.env()
|
|
||||||
cmd.Dir = e.WorkingDir
|
|
||||||
|
|
||||||
if e.Debug {
|
|
||||||
defer func(start time.Time) { e.Logf("%s for %v", time.Since(start), cmdDebugStr(cmd)) }(time.Now())
|
|
||||||
}
|
|
||||||
if err := cmd.Run(); err != nil {
|
|
||||||
return nil, fmt.Errorf("running go: %v (stderr:\n%s)", err, stderr)
|
|
||||||
}
|
|
||||||
return stdout, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func cmdDebugStr(cmd *exec.Cmd) string {
|
|
||||||
env := make(map[string]string)
|
|
||||||
for _, kv := range cmd.Env {
|
|
||||||
split := strings.Split(kv, "=")
|
|
||||||
k, v := split[0], split[1]
|
|
||||||
env[k] = v
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], cmd.Args)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func addStdlibCandidates(pass *pass, refs references) {
|
func addStdlibCandidates(pass *pass, refs references) {
|
||||||
|
|
6
vendor/golang.org/x/tools/internal/imports/mod.go
generated
vendored
6
vendor/golang.org/x/tools/internal/imports/mod.go
generated
vendored
|
@ -146,7 +146,7 @@ func (r *ModuleResolver) init() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) initAllMods() error {
|
func (r *ModuleResolver) initAllMods() error {
|
||||||
stdout, err := r.env.invokeGo("list", "-m", "-json", "...")
|
stdout, err := r.env.invokeGo(context.TODO(), "list", "-m", "-json", "...")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -162,6 +162,8 @@ func (r *ModuleResolver) initAllMods() error {
|
||||||
// Can't do anything with a module that's not downloaded.
|
// Can't do anything with a module that's not downloaded.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
// golang/go#36193: the go command doesn't always clean paths.
|
||||||
|
mod.Dir = filepath.Clean(mod.Dir)
|
||||||
r.modsByModPath = append(r.modsByModPath, mod)
|
r.modsByModPath = append(r.modsByModPath, mod)
|
||||||
r.modsByDir = append(r.modsByDir, mod)
|
r.modsByDir = append(r.modsByDir, mod)
|
||||||
if mod.Main {
|
if mod.Main {
|
||||||
|
@ -697,7 +699,7 @@ func getMainModuleAnd114(env *ProcessEnv) (*ModuleJSON, bool, error) {
|
||||||
{{.GoVersion}}
|
{{.GoVersion}}
|
||||||
{{range context.ReleaseTags}}{{if eq . "go1.14"}}{{.}}{{end}}{{end}}
|
{{range context.ReleaseTags}}{{if eq . "go1.14"}}{{.}}{{end}}{{end}}
|
||||||
`
|
`
|
||||||
stdout, err := env.invokeGo("list", "-m", "-f", format)
|
stdout, err := env.invokeGo(context.TODO(), "list", "-m", "-f", format)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, nil
|
return nil, false, nil
|
||||||
}
|
}
|
||||||
|
|
23
vendor/golang.org/x/tools/internal/packagesinternal/packages.go
generated
vendored
23
vendor/golang.org/x/tools/internal/packagesinternal/packages.go
generated
vendored
|
@ -1,4 +1,27 @@
|
||||||
// Package packagesinternal exposes internal-only fields from go/packages.
|
// Package packagesinternal exposes internal-only fields from go/packages.
|
||||||
package packagesinternal
|
package packagesinternal
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// Fields must match go list;
|
||||||
|
type Module struct {
|
||||||
|
Path string // module path
|
||||||
|
Version string // module version
|
||||||
|
Versions []string // available module versions (with -versions)
|
||||||
|
Replace *Module // replaced by this module
|
||||||
|
Time *time.Time // time version was created
|
||||||
|
Update *Module // available update, if any (with -u)
|
||||||
|
Main bool // is this the main module?
|
||||||
|
Indirect bool // is this module only an indirect dependency of main module?
|
||||||
|
Dir string // directory holding files for this module, if any
|
||||||
|
GoMod string // path to go.mod file used when loading this module, if any
|
||||||
|
GoVersion string // go version used in module
|
||||||
|
Error *ModuleError // error loading module
|
||||||
|
}
|
||||||
|
type ModuleError struct {
|
||||||
|
Err string // the error itself
|
||||||
|
}
|
||||||
|
|
||||||
var GetForTest = func(p interface{}) string { return "" }
|
var GetForTest = func(p interface{}) string { return "" }
|
||||||
|
|
||||||
|
var GetModule = func(p interface{}) *Module { return nil }
|
||||||
|
|
9
vendor/google.golang.org/api/internal/settings.go
generated
vendored
9
vendor/google.golang.org/api/internal/settings.go
generated
vendored
|
@ -6,6 +6,7 @@
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
@ -18,6 +19,7 @@ import (
|
||||||
// Google API service.
|
// Google API service.
|
||||||
type DialSettings struct {
|
type DialSettings struct {
|
||||||
Endpoint string
|
Endpoint string
|
||||||
|
DefaultEndpoint string
|
||||||
Scopes []string
|
Scopes []string
|
||||||
TokenSource oauth2.TokenSource
|
TokenSource oauth2.TokenSource
|
||||||
Credentials *google.Credentials
|
Credentials *google.Credentials
|
||||||
|
@ -33,6 +35,7 @@ type DialSettings struct {
|
||||||
GRPCConnPoolSize int
|
GRPCConnPoolSize int
|
||||||
NoAuth bool
|
NoAuth bool
|
||||||
TelemetryDisabled bool
|
TelemetryDisabled bool
|
||||||
|
ClientCertSource func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
// Google API system parameters. For more information please read:
|
// Google API system parameters. For more information please read:
|
||||||
// https://cloud.google.com/apis/docs/system-parameters
|
// https://cloud.google.com/apis/docs/system-parameters
|
||||||
|
@ -90,6 +93,12 @@ func (ds *DialSettings) Validate() error {
|
||||||
if ds.HTTPClient != nil && ds.RequestReason != "" {
|
if ds.HTTPClient != nil && ds.RequestReason != "" {
|
||||||
return errors.New("WithHTTPClient is incompatible with RequestReason")
|
return errors.New("WithHTTPClient is incompatible with RequestReason")
|
||||||
}
|
}
|
||||||
|
if ds.HTTPClient != nil && ds.ClientCertSource != nil {
|
||||||
|
return errors.New("WithHTTPClient is incompatible with WithClientCertSource")
|
||||||
|
}
|
||||||
|
if ds.ClientCertSource != nil && (ds.GRPCConn != nil || ds.GRPCConnPool != nil || ds.GRPCConnPoolSize != 0 || ds.GRPCDialOpts != nil) {
|
||||||
|
return errors.New("WithClientCertSource is currently only supported for HTTP. gRPC settings are incompatible")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
26
vendor/google.golang.org/api/option/internaloption/internaloption.go
generated
vendored
Normal file
26
vendor/google.golang.org/api/option/internaloption/internaloption.go
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright 2020 Google LLC.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package internaloption contains options used internally by Google client code.
|
||||||
|
package internaloption
|
||||||
|
|
||||||
|
import (
|
||||||
|
"google.golang.org/api/internal"
|
||||||
|
"google.golang.org/api/option"
|
||||||
|
)
|
||||||
|
|
||||||
|
type defaultEndpointOption string
|
||||||
|
|
||||||
|
func (o defaultEndpointOption) Apply(settings *internal.DialSettings) {
|
||||||
|
settings.DefaultEndpoint = string(o)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithDefaultEndpoint is an option that indicates the default endpoint.
|
||||||
|
//
|
||||||
|
// It should only be used internally by generated clients.
|
||||||
|
//
|
||||||
|
// This is similar to WithEndpoint, but allows us to determine whether the user has overriden the default endpoint.
|
||||||
|
func WithDefaultEndpoint(url string) option.ClientOption {
|
||||||
|
return defaultEndpointOption(url)
|
||||||
|
}
|
39
vendor/google.golang.org/api/option/option.go
generated
vendored
39
vendor/google.golang.org/api/option/option.go
generated
vendored
|
@ -6,6 +6,7 @@
|
||||||
package option
|
package option
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
|
@ -227,11 +228,43 @@ func (w withRequestReason) Apply(o *internal.DialSettings) {
|
||||||
// settings on gRPC and HTTP clients.
|
// settings on gRPC and HTTP clients.
|
||||||
// An example reason would be to bind custom telemetry that overrides the defaults.
|
// An example reason would be to bind custom telemetry that overrides the defaults.
|
||||||
func WithTelemetryDisabled() ClientOption {
|
func WithTelemetryDisabled() ClientOption {
|
||||||
return withTelemetryDisabledOption{}
|
return withTelemetryDisabled{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type withTelemetryDisabledOption struct{}
|
type withTelemetryDisabled struct{}
|
||||||
|
|
||||||
func (w withTelemetryDisabledOption) Apply(o *internal.DialSettings) {
|
func (w withTelemetryDisabled) Apply(o *internal.DialSettings) {
|
||||||
o.TelemetryDisabled = true
|
o.TelemetryDisabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClientCertSource is a function that returns a TLS client certificate to be used
|
||||||
|
// when opening TLS connections.
|
||||||
|
//
|
||||||
|
// It follows the same semantics as crypto/tls.Config.GetClientCertificate.
|
||||||
|
//
|
||||||
|
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
||||||
|
type ClientCertSource = func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
|
// WithClientCertSource returns a ClientOption that specifies a
|
||||||
|
// callback function for obtaining a TLS client certificate.
|
||||||
|
//
|
||||||
|
// This option is used for supporting mTLS authentication, where the
|
||||||
|
// server validates the client certifcate when establishing a connection.
|
||||||
|
//
|
||||||
|
// The callback function will be invoked whenever the server requests a
|
||||||
|
// certificate from the client. Implementations of the callback function
|
||||||
|
// should try to ensure that a valid certificate can be repeatedly returned
|
||||||
|
// on demand for the entire life cycle of the transport client. If a nil
|
||||||
|
// Certificate is returned (i.e. no Certificate can be obtained), an error
|
||||||
|
// should be returned.
|
||||||
|
//
|
||||||
|
// This is an EXPERIMENTAL API and may be changed or removed in the future.
|
||||||
|
func WithClientCertSource(s ClientCertSource) ClientOption {
|
||||||
|
return withClientCertSource{s}
|
||||||
|
}
|
||||||
|
|
||||||
|
type withClientCertSource struct{ s ClientCertSource }
|
||||||
|
|
||||||
|
func (w withClientCertSource) Apply(o *internal.DialSettings) {
|
||||||
|
o.ClientCertSource = w.s
|
||||||
|
}
|
||||||
|
|
107
vendor/google.golang.org/api/storage/v1/storage-gen.go
generated
vendored
107
vendor/google.golang.org/api/storage/v1/storage-gen.go
generated
vendored
|
@ -58,6 +58,7 @@ import (
|
||||||
googleapi "google.golang.org/api/googleapi"
|
googleapi "google.golang.org/api/googleapi"
|
||||||
gensupport "google.golang.org/api/internal/gensupport"
|
gensupport "google.golang.org/api/internal/gensupport"
|
||||||
option "google.golang.org/api/option"
|
option "google.golang.org/api/option"
|
||||||
|
internaloption "google.golang.org/api/option/internaloption"
|
||||||
htransport "google.golang.org/api/transport/http"
|
htransport "google.golang.org/api/transport/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -74,6 +75,7 @@ var _ = googleapi.Version
|
||||||
var _ = errors.New
|
var _ = errors.New
|
||||||
var _ = strings.Replace
|
var _ = strings.Replace
|
||||||
var _ = context.Canceled
|
var _ = context.Canceled
|
||||||
|
var _ = internaloption.WithDefaultEndpoint
|
||||||
|
|
||||||
const apiId = "storage:v1"
|
const apiId = "storage:v1"
|
||||||
const apiName = "storage"
|
const apiName = "storage"
|
||||||
|
@ -109,6 +111,7 @@ func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, err
|
||||||
)
|
)
|
||||||
// NOTE: prepend, so we don't override user-specified scopes.
|
// NOTE: prepend, so we don't override user-specified scopes.
|
||||||
opts = append([]option.ClientOption{scopesOption}, opts...)
|
opts = append([]option.ClientOption{scopesOption}, opts...)
|
||||||
|
opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
|
||||||
client, endpoint, err := htransport.NewClient(ctx, opts...)
|
client, endpoint, err := htransport.NewClient(ctx, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -2401,7 +2404,7 @@ func (c *BucketAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2549,7 +2552,7 @@ func (c *BucketAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2716,7 +2719,7 @@ func (c *BucketAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -2889,7 +2892,7 @@ func (c *BucketAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3050,7 +3053,7 @@ func (c *BucketAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3224,7 +3227,7 @@ func (c *BucketAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3410,7 +3413,7 @@ func (c *BucketsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3589,7 +3592,7 @@ func (c *BucketsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -3795,7 +3798,7 @@ func (c *BucketsGetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4012,7 +4015,7 @@ func (c *BucketsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4269,7 +4272,7 @@ func (c *BucketsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4479,7 +4482,7 @@ func (c *BucketsLockRetentionPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4714,7 +4717,7 @@ func (c *BucketsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -4943,7 +4946,7 @@ func (c *BucketsSetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5118,7 +5121,7 @@ func (c *BucketsTestIamPermissionsCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5358,7 +5361,7 @@ func (c *BucketsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5570,7 +5573,7 @@ func (c *ChannelsStopCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5687,7 +5690,7 @@ func (c *DefaultObjectAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -5835,7 +5838,7 @@ func (c *DefaultObjectAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6003,7 +6006,7 @@ func (c *DefaultObjectAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6193,7 +6196,7 @@ func (c *DefaultObjectAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6366,7 +6369,7 @@ func (c *DefaultObjectAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6540,7 +6543,7 @@ func (c *DefaultObjectAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6712,7 +6715,7 @@ func (c *NotificationsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -6860,7 +6863,7 @@ func (c *NotificationsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7030,7 +7033,7 @@ func (c *NotificationsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7205,7 +7208,7 @@ func (c *NotificationsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7378,7 +7381,7 @@ func (c *ObjectAccessControlsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7550,7 +7553,7 @@ func (c *ObjectAccessControlsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7741,7 +7744,7 @@ func (c *ObjectAccessControlsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -7938,7 +7941,7 @@ func (c *ObjectAccessControlsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8123,7 +8126,7 @@ func (c *ObjectAccessControlsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8321,7 +8324,7 @@ func (c *ObjectAccessControlsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8558,7 +8561,7 @@ func (c *ObjectsComposeCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -8890,7 +8893,7 @@ func (c *ObjectsCopyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9213,7 +9216,7 @@ func (c *ObjectsDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9446,7 +9449,7 @@ func (c *ObjectsGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -9696,7 +9699,7 @@ func (c *ObjectsGetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10013,7 +10016,7 @@ func (c *ObjectsInsertCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10368,7 +10371,7 @@ func (c *ObjectsListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -10675,7 +10678,7 @@ func (c *ObjectsPatchCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11067,7 +11070,7 @@ func (c *ObjectsRewriteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11370,7 +11373,7 @@ func (c *ObjectsSetIamPolicyCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11570,7 +11573,7 @@ func (c *ObjectsTestIamPermissionsCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -11831,7 +11834,7 @@ func (c *ObjectsUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12131,7 +12134,7 @@ func (c *ObjectsWatchAllCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12337,7 +12340,7 @@ func (c *ProjectsHmacKeysCreateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12487,7 +12490,7 @@ func (c *ProjectsHmacKeysDeleteCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12622,7 +12625,7 @@ func (c *ProjectsHmacKeysGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -12822,7 +12825,7 @@ func (c *ProjectsHmacKeysListCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -13017,7 +13020,7 @@ func (c *ProjectsHmacKeysUpdateCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
@ -13194,7 +13197,7 @@ func (c *ProjectsServiceAccountGetCall) Header() http.Header {
|
||||||
|
|
||||||
func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) {
|
func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) {
|
||||||
reqHeaders := make(http.Header)
|
reqHeaders := make(http.Header)
|
||||||
reqHeaders.Set("x-goog-api-client", "gl-go/1.13.7 gdcl/20200205")
|
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20200224")
|
||||||
for k, v := range c.header_ {
|
for k, v := range c.header_ {
|
||||||
reqHeaders[k] = v
|
reqHeaders[k] = v
|
||||||
}
|
}
|
||||||
|
|
110
vendor/google.golang.org/api/transport/cert/default_cert.go
generated
vendored
Normal file
110
vendor/google.golang.org/api/transport/cert/default_cert.go
generated
vendored
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
// Copyright 2020 Google LLC.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package cert contains certificate tools for Google API clients.
|
||||||
|
// This package is intended to be used with crypto/tls.Config.GetClientCertificate.
|
||||||
|
//
|
||||||
|
// The certificates can be used to satisfy Google's Endpoint Validation.
|
||||||
|
// See https://cloud.google.com/endpoint-verification/docs/overview
|
||||||
|
//
|
||||||
|
// This package is not intended for use by end developers. Use the
|
||||||
|
// google.golang.org/api/option package to configure API clients.
|
||||||
|
package cert
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"os/user"
|
||||||
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
metadataPath = ".secureConnect"
|
||||||
|
metadataFile = "context_aware_metadata.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
defaultSourceOnce sync.Once
|
||||||
|
defaultSource Source
|
||||||
|
defaultSourceErr error
|
||||||
|
)
|
||||||
|
|
||||||
|
// Source is a function that can be passed into crypto/tls.Config.GetClientCertificate.
|
||||||
|
type Source func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
|
||||||
|
|
||||||
|
// DefaultSource returns a certificate source that execs the command specified
|
||||||
|
// in the file at ~/.secureConnect/context_aware_metadata.json
|
||||||
|
//
|
||||||
|
// If that file does not exist, a nil source is returned.
|
||||||
|
func DefaultSource() (Source, error) {
|
||||||
|
defaultSourceOnce.Do(func() {
|
||||||
|
defaultSource, defaultSourceErr = newSecureConnectSource()
|
||||||
|
})
|
||||||
|
return defaultSource, defaultSourceErr
|
||||||
|
}
|
||||||
|
|
||||||
|
type secureConnectSource struct {
|
||||||
|
metadata secureConnectMetadata
|
||||||
|
}
|
||||||
|
|
||||||
|
type secureConnectMetadata struct {
|
||||||
|
Cmd []string `json:"cert_provider_command"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// newSecureConnectSource creates a secureConnectSource by reading the well-known file.
|
||||||
|
func newSecureConnectSource() (Source, error) {
|
||||||
|
user, err := user.Current()
|
||||||
|
if err != nil {
|
||||||
|
// Ignore.
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
filename := filepath.Join(user.HomeDir, metadataPath, metadataFile)
|
||||||
|
file, err := ioutil.ReadFile(filename)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
// Ignore.
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var metadata secureConnectMetadata
|
||||||
|
if err := json.Unmarshal(file, &metadata); err != nil {
|
||||||
|
return nil, fmt.Errorf("cert: could not parse JSON in %q: %v", filename, err)
|
||||||
|
}
|
||||||
|
if err := validateMetadata(metadata); err != nil {
|
||||||
|
return nil, fmt.Errorf("cert: invalid config in %q: %v", filename, err)
|
||||||
|
}
|
||||||
|
return (&secureConnectSource{
|
||||||
|
metadata: metadata,
|
||||||
|
}).getClientCertificate, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateMetadata(metadata secureConnectMetadata) error {
|
||||||
|
if len(metadata.Cmd) == 0 {
|
||||||
|
return errors.New("empty cert_provider_command")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *secureConnectSource) getClientCertificate(info *tls.CertificateRequestInfo) (*tls.Certificate, error) {
|
||||||
|
// TODO(cbro): consider caching valid certificates rather than exec'ing every time.
|
||||||
|
command := s.metadata.Cmd
|
||||||
|
data, err := exec.Command(command[0], command[1:]...).Output()
|
||||||
|
if err != nil {
|
||||||
|
// TODO(cbro): read stderr for error message? Might contain sensitive info.
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cert, err := tls.X509KeyPair(data, data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &cert, nil
|
||||||
|
}
|
130
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
130
vendor/google.golang.org/api/transport/http/dial.go
generated
vendored
|
@ -9,14 +9,18 @@ package http
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"go.opencensus.io/plugin/ochttp"
|
"go.opencensus.io/plugin/ochttp"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"google.golang.org/api/googleapi/transport"
|
"google.golang.org/api/googleapi/transport"
|
||||||
"google.golang.org/api/internal"
|
"google.golang.org/api/internal"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
|
"google.golang.org/api/transport/cert"
|
||||||
"google.golang.org/api/transport/http/internal/propagation"
|
"google.golang.org/api/transport/http/internal/propagation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,15 +32,23 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*http.Client,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
// TODO(cbro): consider injecting the User-Agent even if an explicit HTTP client is provided?
|
clientCertSource, err := getClientCertificateSource(settings)
|
||||||
if settings.HTTPClient != nil {
|
|
||||||
return settings.HTTPClient, settings.Endpoint, nil
|
|
||||||
}
|
|
||||||
trans, err := newTransport(ctx, defaultBaseTransport(ctx), settings)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
return &http.Client{Transport: trans}, settings.Endpoint, nil
|
endpoint, err := getEndpoint(settings, clientCertSource)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
// TODO(cbro): consider injecting the User-Agent even if an explicit HTTP client is provided?
|
||||||
|
if settings.HTTPClient != nil {
|
||||||
|
return settings.HTTPClient, endpoint, nil
|
||||||
|
}
|
||||||
|
trans, err := newTransport(ctx, defaultBaseTransport(ctx, clientCertSource), settings)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
return &http.Client{Transport: trans}, endpoint, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTransport creates an http.RoundTripper for use communicating with a Google
|
// NewTransport creates an http.RoundTripper for use communicating with a Google
|
||||||
|
@ -137,11 +149,23 @@ func (t *parameterTransport) RoundTrip(req *http.Request) (*http.Response, error
|
||||||
var appengineUrlfetchHook func(context.Context) http.RoundTripper
|
var appengineUrlfetchHook func(context.Context) http.RoundTripper
|
||||||
|
|
||||||
// defaultBaseTransport returns the base HTTP transport.
|
// defaultBaseTransport returns the base HTTP transport.
|
||||||
// On App Engine, this is urlfetch.Transport, otherwise it's http.DefaultTransport.
|
// On App Engine, this is urlfetch.Transport.
|
||||||
func defaultBaseTransport(ctx context.Context) http.RoundTripper {
|
// If TLSCertificate is available, return a custom Transport with TLSClientConfig.
|
||||||
|
// Otherwise, return http.DefaultTransport.
|
||||||
|
func defaultBaseTransport(ctx context.Context, clientCertSource cert.Source) http.RoundTripper {
|
||||||
if appengineUrlfetchHook != nil {
|
if appengineUrlfetchHook != nil {
|
||||||
return appengineUrlfetchHook(ctx)
|
return appengineUrlfetchHook(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if clientCertSource != nil {
|
||||||
|
// TODO (cbro): copy default transport settings from http.DefaultTransport
|
||||||
|
return &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{
|
||||||
|
GetClientCertificate: clientCertSource,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return http.DefaultTransport
|
return http.DefaultTransport
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,3 +178,93 @@ func addOCTransport(trans http.RoundTripper, settings *internal.DialSettings) ht
|
||||||
Propagation: &propagation.HTTPFormat{},
|
Propagation: &propagation.HTTPFormat{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getClientCertificateSource returns a default client certificate source, if
|
||||||
|
// not provided by the user.
|
||||||
|
//
|
||||||
|
// A nil default source can be returned if the source does not exist. Any exceptions
|
||||||
|
// encountered while initializing the default source will be reported as client
|
||||||
|
// error (ex. corrupt metadata file).
|
||||||
|
//
|
||||||
|
// The overall logic is as follows:
|
||||||
|
// 1. If both endpoint override and client certificate are specified, use them as is.
|
||||||
|
// 2. If user does not specify client certificate, we will attempt to use default
|
||||||
|
// client certificate.
|
||||||
|
// 3. If user does not specify endpoint override, we will use defaultMtlsEndpoint if
|
||||||
|
// client certificate is available and defaultEndpoint otherwise.
|
||||||
|
//
|
||||||
|
// Implications of the above logic:
|
||||||
|
// 1. If the user specifies a non-mTLS endpoint override but client certificate is
|
||||||
|
// available, we will pass along the cert anyway and let the server decide what to do.
|
||||||
|
// 2. If the user specifies an mTLS endpoint override but client certificate is not
|
||||||
|
// available, we will not fail-fast, but let backend throw error when connecting.
|
||||||
|
//
|
||||||
|
// We would like to avoid introducing client-side logic that parses whether the
|
||||||
|
// endpoint override is an mTLS url, since the url pattern may change at anytime.
|
||||||
|
func getClientCertificateSource(settings *internal.DialSettings) (cert.Source, error) {
|
||||||
|
if settings.ClientCertSource != nil {
|
||||||
|
return settings.ClientCertSource, nil
|
||||||
|
}
|
||||||
|
return cert.DefaultSource()
|
||||||
|
}
|
||||||
|
|
||||||
|
// getEndpoint returns the endpoint for the service, taking into account the
|
||||||
|
// user-provided endpoint override "settings.Endpoint"
|
||||||
|
//
|
||||||
|
// If no endpoint override is specified, we will return the default endpoint (or
|
||||||
|
// the default mTLS endpoint if a client certificate is available).
|
||||||
|
//
|
||||||
|
// If the endpoint override is an address (host:port) rather than full base
|
||||||
|
// URL (ex. https://...), then the user-provided address will be merged into
|
||||||
|
// the default endpoint. For example, WithEndpoint("myhost:8000") and
|
||||||
|
// WithDefaultEndpoint("https://foo.com/bar/baz") will return "https://myhost:8080/bar/baz"
|
||||||
|
func getEndpoint(settings *internal.DialSettings, clientCertSource cert.Source) (string, error) {
|
||||||
|
if settings.Endpoint == "" {
|
||||||
|
if clientCertSource != nil {
|
||||||
|
return generateDefaultMtlsEndpoint(settings.DefaultEndpoint), nil
|
||||||
|
}
|
||||||
|
return settings.DefaultEndpoint, nil
|
||||||
|
}
|
||||||
|
if strings.Contains(settings.Endpoint, "://") {
|
||||||
|
// User passed in a full URL path, use it verbatim.
|
||||||
|
return settings.Endpoint, nil
|
||||||
|
}
|
||||||
|
if settings.DefaultEndpoint == "" {
|
||||||
|
return "", errors.New("WithEndpoint requires a full URL path")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume user-provided endpoint is host[:port], merge it with the default endpoint.
|
||||||
|
return mergeEndpoints(settings.DefaultEndpoint, settings.Endpoint)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeEndpoints(base, newHost string) (string, error) {
|
||||||
|
u, err := url.Parse(base)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
u.Host = newHost
|
||||||
|
return u.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// generateDefaultMtlsEndpoint attempts to derive the mTLS version of the
|
||||||
|
// defaultEndpoint via regex, and returns defaultEndpoint if unsuccessful.
|
||||||
|
//
|
||||||
|
// We need to applying the following 2 transformations:
|
||||||
|
// 1. pubsub.googleapis.com to pubsub.mtls.googleapis.com
|
||||||
|
// 2. pubsub.sandbox.googleapis.com to pubsub.mtls.sandbox.googleapis.com
|
||||||
|
//
|
||||||
|
// TODO(andyzhao): In the future, the mTLS endpoint will be read from the Discovery Document
|
||||||
|
// and passed in as defaultMtlsEndpoint instead of generated from defaultEndpoint,
|
||||||
|
// and this function will be removed.
|
||||||
|
func generateDefaultMtlsEndpoint(defaultEndpoint string) string {
|
||||||
|
var domains = []string{
|
||||||
|
".sandbox.googleapis.com", // must come first because .googleapis.com is a substring
|
||||||
|
".googleapis.com",
|
||||||
|
}
|
||||||
|
for _, domain := range domains {
|
||||||
|
if strings.Contains(defaultEndpoint, domain) {
|
||||||
|
return strings.Replace(defaultEndpoint, domain, ".mtls"+domain, -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return defaultEndpoint
|
||||||
|
}
|
||||||
|
|
60
vendor/honnef.co/go/tools/LICENSE-THIRD-PARTY
vendored
60
vendor/honnef.co/go/tools/LICENSE-THIRD-PARTY
vendored
|
@ -75,7 +75,7 @@ resulting binaries. These projects are:
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
* github.com/kisielk/gotool – https://github.com/kisielk/gotool
|
* github.com/kisielk/gotool - https://github.com/kisielk/gotool
|
||||||
|
|
||||||
Copyright (c) 2013 Kamil Kisiel <kamil@kamilkisiel.net>
|
Copyright (c) 2013 Kamil Kisiel <kamil@kamilkisiel.net>
|
||||||
|
|
||||||
|
@ -224,3 +224,61 @@ resulting binaries. These projects are:
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
* gogrep - https://github.com/mvdan/gogrep
|
||||||
|
|
||||||
|
Copyright (c) 2017, Daniel Martí. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
* gosmith - https://github.com/dvyukov/gosmith
|
||||||
|
|
||||||
|
Copyright (c) 2014 Dmitry Vyukov. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* The name of Dmitry Vyukov may be used to endorse or promote
|
||||||
|
products derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
481
vendor/honnef.co/go/tools/code/code.go
vendored
Normal file
481
vendor/honnef.co/go/tools/code/code.go
vendored
Normal file
|
@ -0,0 +1,481 @@
|
||||||
|
// Package code answers structural and type questions about Go code.
|
||||||
|
package code
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"go/ast"
|
||||||
|
"go/constant"
|
||||||
|
"go/token"
|
||||||
|
"go/types"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/analysis"
|
||||||
|
"golang.org/x/tools/go/analysis/passes/inspect"
|
||||||
|
"golang.org/x/tools/go/ast/astutil"
|
||||||
|
"golang.org/x/tools/go/ast/inspector"
|
||||||
|
"honnef.co/go/tools/facts"
|
||||||
|
"honnef.co/go/tools/go/types/typeutil"
|
||||||
|
"honnef.co/go/tools/ir"
|
||||||
|
"honnef.co/go/tools/lint"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Positioner interface {
|
||||||
|
Pos() token.Pos
|
||||||
|
}
|
||||||
|
|
||||||
|
func CallName(call *ir.CallCommon) string {
|
||||||
|
if call.IsInvoke() {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
switch v := call.Value.(type) {
|
||||||
|
case *ir.Function:
|
||||||
|
fn, ok := v.Object().(*types.Func)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return lint.FuncName(fn)
|
||||||
|
case *ir.Builtin:
|
||||||
|
return v.Name()
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsCallTo(call *ir.CallCommon, name string) bool { return CallName(call) == name }
|
||||||
|
|
||||||
|
func IsCallToAny(call *ir.CallCommon, names ...string) bool {
|
||||||
|
q := CallName(call)
|
||||||
|
for _, name := range names {
|
||||||
|
if q == name {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsType(T types.Type, name string) bool { return types.TypeString(T, nil) == name }
|
||||||
|
|
||||||
|
func FilterDebug(instr []ir.Instruction) []ir.Instruction {
|
||||||
|
var out []ir.Instruction
|
||||||
|
for _, ins := range instr {
|
||||||
|
if _, ok := ins.(*ir.DebugRef); !ok {
|
||||||
|
out = append(out, ins)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsExample(fn *ir.Function) bool {
|
||||||
|
if !strings.HasPrefix(fn.Name(), "Example") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
f := fn.Prog.Fset.File(fn.Pos())
|
||||||
|
if f == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return strings.HasSuffix(f.Name(), "_test.go")
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsPointerLike(T types.Type) bool {
|
||||||
|
switch T := T.Underlying().(type) {
|
||||||
|
case *types.Interface, *types.Chan, *types.Map, *types.Signature, *types.Pointer:
|
||||||
|
return true
|
||||||
|
case *types.Basic:
|
||||||
|
return T.Kind() == types.UnsafePointer
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsIdent(expr ast.Expr, ident string) bool {
|
||||||
|
id, ok := expr.(*ast.Ident)
|
||||||
|
return ok && id.Name == ident
|
||||||
|
}
|
||||||
|
|
||||||
|
// isBlank returns whether id is the blank identifier "_".
|
||||||
|
// If id == nil, the answer is false.
|
||||||
|
func IsBlank(id ast.Expr) bool {
|
||||||
|
ident, _ := id.(*ast.Ident)
|
||||||
|
return ident != nil && ident.Name == "_"
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsIntLiteral(expr ast.Expr, literal string) bool {
|
||||||
|
lit, ok := expr.(*ast.BasicLit)
|
||||||
|
return ok && lit.Kind == token.INT && lit.Value == literal
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: use IsIntLiteral instead
|
||||||
|
func IsZero(expr ast.Expr) bool {
|
||||||
|
return IsIntLiteral(expr, "0")
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsOfType(pass *analysis.Pass, expr ast.Expr, name string) bool {
|
||||||
|
return IsType(pass.TypesInfo.TypeOf(expr), name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsInTest(pass *analysis.Pass, node Positioner) bool {
|
||||||
|
// FIXME(dh): this doesn't work for global variables with
|
||||||
|
// initializers
|
||||||
|
f := pass.Fset.File(node.Pos())
|
||||||
|
return f != nil && strings.HasSuffix(f.Name(), "_test.go")
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsMain reports whether the package being processed is a package
|
||||||
|
// main.
|
||||||
|
func IsMain(pass *analysis.Pass) bool {
|
||||||
|
return pass.Pkg.Name() == "main"
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsMainLike reports whether the package being processed is a
|
||||||
|
// main-like package. A main-like package is a package that is
|
||||||
|
// package main, or that is intended to be used by a tool framework
|
||||||
|
// such as cobra to implement a command.
|
||||||
|
//
|
||||||
|
// Note that this function errs on the side of false positives; it may
|
||||||
|
// return true for packages that aren't main-like. IsMainLike is
|
||||||
|
// intended for analyses that wish to suppress diagnostics for
|
||||||
|
// main-like packages to avoid false positives.
|
||||||
|
func IsMainLike(pass *analysis.Pass) bool {
|
||||||
|
if pass.Pkg.Name() == "main" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, imp := range pass.Pkg.Imports() {
|
||||||
|
if imp.Path() == "github.com/spf13/cobra" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func SelectorName(pass *analysis.Pass, expr *ast.SelectorExpr) string {
|
||||||
|
info := pass.TypesInfo
|
||||||
|
sel := info.Selections[expr]
|
||||||
|
if sel == nil {
|
||||||
|
if x, ok := expr.X.(*ast.Ident); ok {
|
||||||
|
pkg, ok := info.ObjectOf(x).(*types.PkgName)
|
||||||
|
if !ok {
|
||||||
|
// This shouldn't happen
|
||||||
|
return fmt.Sprintf("%s.%s", x.Name, expr.Sel.Name)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s.%s", pkg.Imported().Path(), expr.Sel.Name)
|
||||||
|
}
|
||||||
|
panic(fmt.Sprintf("unsupported selector: %v", expr))
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("(%s).%s", sel.Recv(), sel.Obj().Name())
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsNil(pass *analysis.Pass, expr ast.Expr) bool {
|
||||||
|
return pass.TypesInfo.Types[expr].IsNil()
|
||||||
|
}
|
||||||
|
|
||||||
|
func BoolConst(pass *analysis.Pass, expr ast.Expr) bool {
|
||||||
|
val := pass.TypesInfo.ObjectOf(expr.(*ast.Ident)).(*types.Const).Val()
|
||||||
|
return constant.BoolVal(val)
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsBoolConst(pass *analysis.Pass, expr ast.Expr) bool {
|
||||||
|
// We explicitly don't support typed bools because more often than
|
||||||
|
// not, custom bool types are used as binary enums and the
|
||||||
|
// explicit comparison is desired.
|
||||||
|
|
||||||
|
ident, ok := expr.(*ast.Ident)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
obj := pass.TypesInfo.ObjectOf(ident)
|
||||||
|
c, ok := obj.(*types.Const)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
basic, ok := c.Type().(*types.Basic)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if basic.Kind() != types.UntypedBool && basic.Kind() != types.Bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExprToInt(pass *analysis.Pass, expr ast.Expr) (int64, bool) {
|
||||||
|
tv := pass.TypesInfo.Types[expr]
|
||||||
|
if tv.Value == nil {
|
||||||
|
return 0, false
|
||||||
|
}
|
||||||
|
if tv.Value.Kind() != constant.Int {
|
||||||
|
return 0, false
|
||||||
|
}
|
||||||
|
return constant.Int64Val(tv.Value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExprToString(pass *analysis.Pass, expr ast.Expr) (string, bool) {
|
||||||
|
val := pass.TypesInfo.Types[expr].Value
|
||||||
|
if val == nil {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
if val.Kind() != constant.String {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
return constant.StringVal(val), true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dereference returns a pointer's element type; otherwise it returns
|
||||||
|
// T.
|
||||||
|
func Dereference(T types.Type) types.Type {
|
||||||
|
if p, ok := T.Underlying().(*types.Pointer); ok {
|
||||||
|
return p.Elem()
|
||||||
|
}
|
||||||
|
return T
|
||||||
|
}
|
||||||
|
|
||||||
|
// DereferenceR returns a pointer's element type; otherwise it returns
|
||||||
|
// T. If the element type is itself a pointer, DereferenceR will be
|
||||||
|
// applied recursively.
|
||||||
|
func DereferenceR(T types.Type) types.Type {
|
||||||
|
if p, ok := T.Underlying().(*types.Pointer); ok {
|
||||||
|
return DereferenceR(p.Elem())
|
||||||
|
}
|
||||||
|
return T
|
||||||
|
}
|
||||||
|
|
||||||
|
func CallNameAST(pass *analysis.Pass, call *ast.CallExpr) string {
|
||||||
|
switch fun := astutil.Unparen(call.Fun).(type) {
|
||||||
|
case *ast.SelectorExpr:
|
||||||
|
fn, ok := pass.TypesInfo.ObjectOf(fun.Sel).(*types.Func)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return lint.FuncName(fn)
|
||||||
|
case *ast.Ident:
|
||||||
|
obj := pass.TypesInfo.ObjectOf(fun)
|
||||||
|
switch obj := obj.(type) {
|
||||||
|
case *types.Func:
|
||||||
|
return lint.FuncName(obj)
|
||||||
|
case *types.Builtin:
|
||||||
|
return obj.Name()
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsCallToAST(pass *analysis.Pass, node ast.Node, name string) bool {
|
||||||
|
call, ok := node.(*ast.CallExpr)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return CallNameAST(pass, call) == name
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsCallToAnyAST(pass *analysis.Pass, node ast.Node, names ...string) bool {
|
||||||
|
call, ok := node.(*ast.CallExpr)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
q := CallNameAST(pass, call)
|
||||||
|
for _, name := range names {
|
||||||
|
if q == name {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func Preamble(f *ast.File) string {
|
||||||
|
cutoff := f.Package
|
||||||
|
if f.Doc != nil {
|
||||||
|
cutoff = f.Doc.Pos()
|
||||||
|
}
|
||||||
|
var out []string
|
||||||
|
for _, cmt := range f.Comments {
|
||||||
|
if cmt.Pos() >= cutoff {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
out = append(out, cmt.Text())
|
||||||
|
}
|
||||||
|
return strings.Join(out, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func GroupSpecs(fset *token.FileSet, specs []ast.Spec) [][]ast.Spec {
|
||||||
|
if len(specs) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
groups := make([][]ast.Spec, 1)
|
||||||
|
groups[0] = append(groups[0], specs[0])
|
||||||
|
|
||||||
|
for _, spec := range specs[1:] {
|
||||||
|
g := groups[len(groups)-1]
|
||||||
|
if fset.PositionFor(spec.Pos(), false).Line-1 !=
|
||||||
|
fset.PositionFor(g[len(g)-1].End(), false).Line {
|
||||||
|
|
||||||
|
groups = append(groups, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
groups[len(groups)-1] = append(groups[len(groups)-1], spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
return groups
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsObject(obj types.Object, name string) bool {
|
||||||
|
var path string
|
||||||
|
if pkg := obj.Pkg(); pkg != nil {
|
||||||
|
path = pkg.Path() + "."
|
||||||
|
}
|
||||||
|
return path+obj.Name() == name
|
||||||
|
}
|
||||||
|
|
||||||
|
type Field struct {
|
||||||
|
Var *types.Var
|
||||||
|
Tag string
|
||||||
|
Path []int
|
||||||
|
}
|
||||||
|
|
||||||
|
// FlattenFields recursively flattens T and embedded structs,
|
||||||
|
// returning a list of fields. If multiple fields with the same name
|
||||||
|
// exist, all will be returned.
|
||||||
|
func FlattenFields(T *types.Struct) []Field {
|
||||||
|
return flattenFields(T, nil, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func flattenFields(T *types.Struct, path []int, seen map[types.Type]bool) []Field {
|
||||||
|
if seen == nil {
|
||||||
|
seen = map[types.Type]bool{}
|
||||||
|
}
|
||||||
|
if seen[T] {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
seen[T] = true
|
||||||
|
var out []Field
|
||||||
|
for i := 0; i < T.NumFields(); i++ {
|
||||||
|
field := T.Field(i)
|
||||||
|
tag := T.Tag(i)
|
||||||
|
np := append(path[:len(path):len(path)], i)
|
||||||
|
if field.Anonymous() {
|
||||||
|
if s, ok := Dereference(field.Type()).Underlying().(*types.Struct); ok {
|
||||||
|
out = append(out, flattenFields(s, np, seen)...)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out = append(out, Field{field, tag, np})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func File(pass *analysis.Pass, node Positioner) *ast.File {
|
||||||
|
m := pass.ResultOf[facts.TokenFile].(map[*token.File]*ast.File)
|
||||||
|
return m[pass.Fset.File(node.Pos())]
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsGenerated reports whether pos is in a generated file, It ignores
|
||||||
|
// //line directives.
|
||||||
|
func IsGenerated(pass *analysis.Pass, pos token.Pos) bool {
|
||||||
|
_, ok := Generator(pass, pos)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generator returns the generator that generated the file containing
|
||||||
|
// pos. It ignores //line directives.
|
||||||
|
func Generator(pass *analysis.Pass, pos token.Pos) (facts.Generator, bool) {
|
||||||
|
file := pass.Fset.PositionFor(pos, false).Filename
|
||||||
|
m := pass.ResultOf[facts.Generated].(map[string]facts.Generator)
|
||||||
|
g, ok := m[file]
|
||||||
|
return g, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// MayHaveSideEffects reports whether expr may have side effects. If
|
||||||
|
// the purity argument is nil, this function implements a purely
|
||||||
|
// syntactic check, meaning that any function call may have side
|
||||||
|
// effects, regardless of the called function's body. Otherwise,
|
||||||
|
// purity will be consulted to determine the purity of function calls.
|
||||||
|
func MayHaveSideEffects(pass *analysis.Pass, expr ast.Expr, purity facts.PurityResult) bool {
|
||||||
|
switch expr := expr.(type) {
|
||||||
|
case *ast.BadExpr:
|
||||||
|
return true
|
||||||
|
case *ast.Ellipsis:
|
||||||
|
return MayHaveSideEffects(pass, expr.Elt, purity)
|
||||||
|
case *ast.FuncLit:
|
||||||
|
// the literal itself cannot have side ffects, only calling it
|
||||||
|
// might, which is handled by CallExpr.
|
||||||
|
return false
|
||||||
|
case *ast.ArrayType, *ast.StructType, *ast.FuncType, *ast.InterfaceType, *ast.MapType, *ast.ChanType:
|
||||||
|
// types cannot have side effects
|
||||||
|
return false
|
||||||
|
case *ast.BasicLit:
|
||||||
|
return false
|
||||||
|
case *ast.BinaryExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity) || MayHaveSideEffects(pass, expr.Y, purity)
|
||||||
|
case *ast.CallExpr:
|
||||||
|
if purity == nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
switch obj := typeutil.Callee(pass.TypesInfo, expr).(type) {
|
||||||
|
case *types.Func:
|
||||||
|
if _, ok := purity[obj]; !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case *types.Builtin:
|
||||||
|
switch obj.Name() {
|
||||||
|
case "len", "cap":
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, arg := range expr.Args {
|
||||||
|
if MayHaveSideEffects(pass, arg, purity) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
case *ast.CompositeLit:
|
||||||
|
if MayHaveSideEffects(pass, expr.Type, purity) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, elt := range expr.Elts {
|
||||||
|
if MayHaveSideEffects(pass, elt, purity) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
case *ast.Ident:
|
||||||
|
return false
|
||||||
|
case *ast.IndexExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity) || MayHaveSideEffects(pass, expr.Index, purity)
|
||||||
|
case *ast.KeyValueExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.Key, purity) || MayHaveSideEffects(pass, expr.Value, purity)
|
||||||
|
case *ast.SelectorExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity)
|
||||||
|
case *ast.SliceExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity) ||
|
||||||
|
MayHaveSideEffects(pass, expr.Low, purity) ||
|
||||||
|
MayHaveSideEffects(pass, expr.High, purity) ||
|
||||||
|
MayHaveSideEffects(pass, expr.Max, purity)
|
||||||
|
case *ast.StarExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity)
|
||||||
|
case *ast.TypeAssertExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity)
|
||||||
|
case *ast.UnaryExpr:
|
||||||
|
if MayHaveSideEffects(pass, expr.X, purity) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return expr.Op == token.ARROW
|
||||||
|
case *ast.ParenExpr:
|
||||||
|
return MayHaveSideEffects(pass, expr.X, purity)
|
||||||
|
case nil:
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("internal error: unhandled type %T", expr))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsGoVersion(pass *analysis.Pass, minor int) bool {
|
||||||
|
version := pass.Analyzer.Flags.Lookup("go").Value.(flag.Getter).Get().(int)
|
||||||
|
return version >= minor
|
||||||
|
}
|
||||||
|
|
||||||
|
func Preorder(pass *analysis.Pass, fn func(ast.Node), types ...ast.Node) {
|
||||||
|
pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder(types, fn)
|
||||||
|
}
|
51
vendor/honnef.co/go/tools/config/config.go
vendored
51
vendor/honnef.co/go/tools/config/config.go
vendored
|
@ -3,6 +3,8 @@ package config
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"go/ast"
|
||||||
|
"go/token"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -12,21 +14,21 @@ import (
|
||||||
"golang.org/x/tools/go/analysis"
|
"golang.org/x/tools/go/analysis"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Analyzer = &analysis.Analyzer{
|
// Dir looks at a list of absolute file names, which should make up a
|
||||||
Name: "config",
|
// single package, and returns the path of the directory that may
|
||||||
Doc: "loads configuration for the current package tree",
|
// contain a staticcheck.conf file. It returns the empty string if no
|
||||||
Run: func(pass *analysis.Pass) (interface{}, error) {
|
// such directory could be determined, for example because all files
|
||||||
if len(pass.Files) == 0 {
|
// were located in Go's build cache.
|
||||||
cfg := DefaultConfig
|
func Dir(files []string) string {
|
||||||
return &cfg, nil
|
if len(files) == 0 {
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
cache, err := os.UserCacheDir()
|
cache, err := os.UserCacheDir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cache = ""
|
cache = ""
|
||||||
}
|
}
|
||||||
var path string
|
var path string
|
||||||
for _, f := range pass.Files {
|
for _, p := range files {
|
||||||
p := pass.Fset.PositionFor(f.Pos(), true).Filename
|
|
||||||
// FIXME(dh): using strings.HasPrefix isn't technically
|
// FIXME(dh): using strings.HasPrefix isn't technically
|
||||||
// correct, but it should be good enough for now.
|
// correct, but it should be good enough for now.
|
||||||
if cache != "" && strings.HasPrefix(p, cache) {
|
if cache != "" && strings.HasPrefix(p, cache) {
|
||||||
|
@ -39,11 +41,30 @@ var Analyzer = &analysis.Analyzer{
|
||||||
|
|
||||||
if path == "" {
|
if path == "" {
|
||||||
// The package only consists of generated files.
|
// The package only consists of generated files.
|
||||||
cfg := DefaultConfig
|
return ""
|
||||||
return &cfg, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dir := filepath.Dir(path)
|
dir := filepath.Dir(path)
|
||||||
|
return dir
|
||||||
|
}
|
||||||
|
|
||||||
|
func dirAST(files []*ast.File, fset *token.FileSet) string {
|
||||||
|
names := make([]string, len(files))
|
||||||
|
for i, f := range files {
|
||||||
|
names[i] = fset.PositionFor(f.Pos(), true).Filename
|
||||||
|
}
|
||||||
|
return Dir(names)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Analyzer = &analysis.Analyzer{
|
||||||
|
Name: "config",
|
||||||
|
Doc: "loads configuration for the current package tree",
|
||||||
|
Run: func(pass *analysis.Pass) (interface{}, error) {
|
||||||
|
dir := dirAST(pass.Files, pass.Fset)
|
||||||
|
if dir == "" {
|
||||||
|
cfg := DefaultConfig
|
||||||
|
return &cfg, nil
|
||||||
|
}
|
||||||
cfg, err := Load(dir)
|
cfg, err := Load(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error loading staticcheck.conf: %s", err)
|
return nil, fmt.Errorf("error loading staticcheck.conf: %s", err)
|
||||||
|
@ -136,7 +157,7 @@ func (c Config) String() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var DefaultConfig = Config{
|
var DefaultConfig = Config{
|
||||||
Checks: []string{"all", "-ST1000", "-ST1003", "-ST1016"},
|
Checks: []string{"all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022"},
|
||||||
Initialisms: []string{
|
Initialisms: []string{
|
||||||
"ACL", "API", "ASCII", "CPU", "CSS", "DNS",
|
"ACL", "API", "ASCII", "CPU", "CSS", "DNS",
|
||||||
"EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID",
|
"EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID",
|
||||||
|
@ -144,20 +165,20 @@ var DefaultConfig = Config{
|
||||||
"SMTP", "SQL", "SSH", "TCP", "TLS", "TTL",
|
"SMTP", "SQL", "SSH", "TCP", "TLS", "TTL",
|
||||||
"UDP", "UI", "GID", "UID", "UUID", "URI",
|
"UDP", "UI", "GID", "UID", "UUID", "URI",
|
||||||
"URL", "UTF8", "VM", "XML", "XMPP", "XSRF",
|
"URL", "UTF8", "VM", "XML", "XMPP", "XSRF",
|
||||||
"XSS", "SIP", "RTP",
|
"XSS", "SIP", "RTP", "AMQP", "DB", "TS",
|
||||||
},
|
},
|
||||||
DotImportWhitelist: []string{},
|
DotImportWhitelist: []string{},
|
||||||
HTTPStatusCodeWhitelist: []string{"200", "400", "404", "500"},
|
HTTPStatusCodeWhitelist: []string{"200", "400", "404", "500"},
|
||||||
}
|
}
|
||||||
|
|
||||||
const configName = "staticcheck.conf"
|
const ConfigName = "staticcheck.conf"
|
||||||
|
|
||||||
func parseConfigs(dir string) ([]Config, error) {
|
func parseConfigs(dir string) ([]Config, error) {
|
||||||
var out []Config
|
var out []Config
|
||||||
|
|
||||||
// TODO(dh): consider stopping at the GOPATH/module boundary
|
// TODO(dh): consider stopping at the GOPATH/module boundary
|
||||||
for dir != "" {
|
for dir != "" {
|
||||||
f, err := os.Open(filepath.Join(dir, configName))
|
f, err := os.Open(filepath.Join(dir, ConfigName))
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
ndir := filepath.Dir(dir)
|
ndir := filepath.Dir(dir)
|
||||||
if ndir == dir {
|
if ndir == dir {
|
||||||
|
|
13
vendor/honnef.co/go/tools/deprecated/stdlib.go
vendored
13
vendor/honnef.co/go/tools/deprecated/stdlib.go
vendored
|
@ -6,7 +6,6 @@ type Deprecation struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var Stdlib = map[string]Deprecation{
|
var Stdlib = map[string]Deprecation{
|
||||||
"image/jpeg.Reader": {4, 0},
|
|
||||||
// FIXME(dh): AllowBinary isn't being detected as deprecated
|
// FIXME(dh): AllowBinary isn't being detected as deprecated
|
||||||
// because the comment has a newline right after "Deprecated:"
|
// because the comment has a newline right after "Deprecated:"
|
||||||
"go/build.AllowBinary": {7, 7},
|
"go/build.AllowBinary": {7, 7},
|
||||||
|
@ -73,6 +72,14 @@ var Stdlib = map[string]Deprecation{
|
||||||
// This function has no alternative, but also no purpose.
|
// This function has no alternative, but also no purpose.
|
||||||
"(*crypto/rc4.Cipher).Reset": {12, 0},
|
"(*crypto/rc4.Cipher).Reset": {12, 0},
|
||||||
"(net/http/httptest.ResponseRecorder).HeaderMap": {11, 7},
|
"(net/http/httptest.ResponseRecorder).HeaderMap": {11, 7},
|
||||||
|
"image.ZP": {13, 0},
|
||||||
|
"image.ZR": {13, 0},
|
||||||
|
"(*debug/gosym.LineTable).LineToPC": {2, 2},
|
||||||
|
"(*debug/gosym.LineTable).PCToLine": {2, 2},
|
||||||
|
"crypto/tls.VersionSSL30": {13, 0},
|
||||||
|
"(crypto/tls.Config).NameToCertificate": {14, 14},
|
||||||
|
"(*crypto/tls.Config).BuildNameToCertificate": {14, 14},
|
||||||
|
"image/jpeg.Reader": {4, 0},
|
||||||
|
|
||||||
// All of these have been deprecated in favour of external libraries
|
// All of these have been deprecated in favour of external libraries
|
||||||
"syscall.AttachLsf": {7, 0},
|
"syscall.AttachLsf": {7, 0},
|
||||||
|
@ -106,7 +113,7 @@ var Stdlib = map[string]Deprecation{
|
||||||
"syscall.InterfaceAddrMessage": {8, 0},
|
"syscall.InterfaceAddrMessage": {8, 0},
|
||||||
"syscall.ParseRoutingMessage": {8, 0},
|
"syscall.ParseRoutingMessage": {8, 0},
|
||||||
"syscall.ParseRoutingSockaddr": {8, 0},
|
"syscall.ParseRoutingSockaddr": {8, 0},
|
||||||
"InterfaceAnnounceMessage": {7, 0},
|
"syscall.InterfaceAnnounceMessage": {7, 0},
|
||||||
"InterfaceMulticastAddrMessage": {7, 0},
|
"syscall.InterfaceMulticastAddrMessage": {7, 0},
|
||||||
"syscall.FormatMessage": {5, 0},
|
"syscall.FormatMessage": {5, 0},
|
||||||
}
|
}
|
||||||
|
|
67
vendor/honnef.co/go/tools/edit/edit.go
vendored
Normal file
67
vendor/honnef.co/go/tools/edit/edit.go
vendored
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
package edit
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"go/ast"
|
||||||
|
"go/format"
|
||||||
|
"go/token"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/analysis"
|
||||||
|
"honnef.co/go/tools/pattern"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Ranger interface {
|
||||||
|
Pos() token.Pos
|
||||||
|
End() token.Pos
|
||||||
|
}
|
||||||
|
|
||||||
|
type Range [2]token.Pos
|
||||||
|
|
||||||
|
func (r Range) Pos() token.Pos { return r[0] }
|
||||||
|
func (r Range) End() token.Pos { return r[1] }
|
||||||
|
|
||||||
|
func ReplaceWithString(fset *token.FileSet, old Ranger, new string) analysis.TextEdit {
|
||||||
|
return analysis.TextEdit{
|
||||||
|
Pos: old.Pos(),
|
||||||
|
End: old.End(),
|
||||||
|
NewText: []byte(new),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReplaceWithNode(fset *token.FileSet, old Ranger, new ast.Node) analysis.TextEdit {
|
||||||
|
buf := &bytes.Buffer{}
|
||||||
|
if err := format.Node(buf, fset, new); err != nil {
|
||||||
|
panic("internal error: " + err.Error())
|
||||||
|
}
|
||||||
|
return analysis.TextEdit{
|
||||||
|
Pos: old.Pos(),
|
||||||
|
End: old.End(),
|
||||||
|
NewText: buf.Bytes(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReplaceWithPattern(pass *analysis.Pass, after pattern.Pattern, state pattern.State, node Ranger) analysis.TextEdit {
|
||||||
|
r := pattern.NodeToAST(after.Root, state)
|
||||||
|
buf := &bytes.Buffer{}
|
||||||
|
format.Node(buf, pass.Fset, r)
|
||||||
|
return analysis.TextEdit{
|
||||||
|
Pos: node.Pos(),
|
||||||
|
End: node.End(),
|
||||||
|
NewText: buf.Bytes(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Delete(old Ranger) analysis.TextEdit {
|
||||||
|
return analysis.TextEdit{
|
||||||
|
Pos: old.Pos(),
|
||||||
|
End: old.End(),
|
||||||
|
NewText: nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fix(msg string, edits ...analysis.TextEdit) analysis.SuggestedFix {
|
||||||
|
return analysis.SuggestedFix{
|
||||||
|
Message: msg,
|
||||||
|
TextEdits: edits,
|
||||||
|
}
|
||||||
|
}
|
4
vendor/honnef.co/go/tools/facts/generated.go
vendored
4
vendor/honnef.co/go/tools/facts/generated.go
vendored
|
@ -55,6 +55,10 @@ func isGenerated(path string) (Generator, bool) {
|
||||||
if strings.HasPrefix(text, `by "stringer `) {
|
if strings.HasPrefix(text, `by "stringer `) {
|
||||||
return Stringer, true
|
return Stringer, true
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(text, `by goyacc `) {
|
||||||
|
return Goyacc, true
|
||||||
|
}
|
||||||
|
|
||||||
return Unknown, true
|
return Unknown, true
|
||||||
}
|
}
|
||||||
if bytes.Equal(s, oldCgo) {
|
if bytes.Equal(s, oldCgo) {
|
||||||
|
|
76
vendor/honnef.co/go/tools/facts/purity.go
vendored
76
vendor/honnef.co/go/tools/facts/purity.go
vendored
|
@ -1,14 +1,13 @@
|
||||||
package facts
|
package facts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go/token"
|
|
||||||
"go/types"
|
"go/types"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"golang.org/x/tools/go/analysis"
|
"golang.org/x/tools/go/analysis"
|
||||||
"honnef.co/go/tools/functions"
|
"honnef.co/go/tools/functions"
|
||||||
"honnef.co/go/tools/internal/passes/buildssa"
|
"honnef.co/go/tools/internal/passes/buildir"
|
||||||
"honnef.co/go/tools/ssa"
|
"honnef.co/go/tools/ir"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IsPure struct{}
|
type IsPure struct{}
|
||||||
|
@ -22,7 +21,7 @@ var Purity = &analysis.Analyzer{
|
||||||
Name: "fact_purity",
|
Name: "fact_purity",
|
||||||
Doc: "Mark pure functions",
|
Doc: "Mark pure functions",
|
||||||
Run: purity,
|
Run: purity,
|
||||||
Requires: []*analysis.Analyzer{buildssa.Analyzer},
|
Requires: []*analysis.Analyzer{buildir.Analyzer},
|
||||||
FactTypes: []analysis.Fact{(*IsPure)(nil)},
|
FactTypes: []analysis.Fact{(*IsPure)(nil)},
|
||||||
ResultType: reflect.TypeOf(PurityResult{}),
|
ResultType: reflect.TypeOf(PurityResult{}),
|
||||||
}
|
}
|
||||||
|
@ -56,65 +55,68 @@ var pureStdlib = map[string]struct{}{
|
||||||
}
|
}
|
||||||
|
|
||||||
func purity(pass *analysis.Pass) (interface{}, error) {
|
func purity(pass *analysis.Pass) (interface{}, error) {
|
||||||
seen := map[*ssa.Function]struct{}{}
|
seen := map[*ir.Function]struct{}{}
|
||||||
ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg
|
irpkg := pass.ResultOf[buildir.Analyzer].(*buildir.IR).Pkg
|
||||||
var check func(ssafn *ssa.Function) (ret bool)
|
var check func(fn *ir.Function) (ret bool)
|
||||||
check = func(ssafn *ssa.Function) (ret bool) {
|
check = func(fn *ir.Function) (ret bool) {
|
||||||
if ssafn.Object() == nil {
|
if fn.Object() == nil {
|
||||||
// TODO(dh): support closures
|
// TODO(dh): support closures
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if pass.ImportObjectFact(ssafn.Object(), new(IsPure)) {
|
if pass.ImportObjectFact(fn.Object(), new(IsPure)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if ssafn.Pkg != ssapkg {
|
if fn.Pkg != irpkg {
|
||||||
// Function is in another package but wasn't marked as
|
// Function is in another package but wasn't marked as
|
||||||
// pure, ergo it isn't pure
|
// pure, ergo it isn't pure
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// Break recursion
|
// Break recursion
|
||||||
if _, ok := seen[ssafn]; ok {
|
if _, ok := seen[fn]; ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
seen[ssafn] = struct{}{}
|
seen[fn] = struct{}{}
|
||||||
defer func() {
|
defer func() {
|
||||||
if ret {
|
if ret {
|
||||||
pass.ExportObjectFact(ssafn.Object(), &IsPure{})
|
pass.ExportObjectFact(fn.Object(), &IsPure{})
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if functions.IsStub(ssafn) {
|
if functions.IsStub(fn) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := pureStdlib[ssafn.Object().(*types.Func).FullName()]; ok {
|
if _, ok := pureStdlib[fn.Object().(*types.Func).FullName()]; ok {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if ssafn.Signature.Results().Len() == 0 {
|
if fn.Signature.Results().Len() == 0 {
|
||||||
// A function with no return values is empty or is doing some
|
// A function with no return values is empty or is doing some
|
||||||
// work we cannot see (for example because of build tags);
|
// work we cannot see (for example because of build tags);
|
||||||
// don't consider it pure.
|
// don't consider it pure.
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, param := range ssafn.Params {
|
for _, param := range fn.Params {
|
||||||
|
// TODO(dh): this may not be strictly correct. pure code
|
||||||
|
// can, to an extent, operate on non-basic types.
|
||||||
if _, ok := param.Type().Underlying().(*types.Basic); !ok {
|
if _, ok := param.Type().Underlying().(*types.Basic); !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ssafn.Blocks == nil {
|
// Don't consider external functions pure.
|
||||||
|
if fn.Blocks == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
checkCall := func(common *ssa.CallCommon) bool {
|
checkCall := func(common *ir.CallCommon) bool {
|
||||||
if common.IsInvoke() {
|
if common.IsInvoke() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
builtin, ok := common.Value.(*ssa.Builtin)
|
builtin, ok := common.Value.(*ir.Builtin)
|
||||||
if !ok {
|
if !ok {
|
||||||
if common.StaticCallee() != ssafn {
|
if common.StaticCallee() != fn {
|
||||||
if common.StaticCallee() == nil {
|
if common.StaticCallee() == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -124,47 +126,47 @@ func purity(pass *analysis.Pass) (interface{}, error) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch builtin.Name() {
|
switch builtin.Name() {
|
||||||
case "len", "cap", "make", "new":
|
case "len", "cap":
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
for _, b := range ssafn.Blocks {
|
for _, b := range fn.Blocks {
|
||||||
for _, ins := range b.Instrs {
|
for _, ins := range b.Instrs {
|
||||||
switch ins := ins.(type) {
|
switch ins := ins.(type) {
|
||||||
case *ssa.Call:
|
case *ir.Call:
|
||||||
if !checkCall(ins.Common()) {
|
if !checkCall(ins.Common()) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case *ssa.Defer:
|
case *ir.Defer:
|
||||||
if !checkCall(&ins.Call) {
|
if !checkCall(&ins.Call) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case *ssa.Select:
|
case *ir.Select:
|
||||||
return false
|
return false
|
||||||
case *ssa.Send:
|
case *ir.Send:
|
||||||
return false
|
return false
|
||||||
case *ssa.Go:
|
case *ir.Go:
|
||||||
return false
|
return false
|
||||||
case *ssa.Panic:
|
case *ir.Panic:
|
||||||
return false
|
return false
|
||||||
case *ssa.Store:
|
case *ir.Store:
|
||||||
return false
|
return false
|
||||||
case *ssa.FieldAddr:
|
case *ir.FieldAddr:
|
||||||
return false
|
return false
|
||||||
case *ssa.UnOp:
|
case *ir.Alloc:
|
||||||
if ins.Op == token.MUL || ins.Op == token.AND {
|
return false
|
||||||
|
case *ir.Load:
|
||||||
return false
|
return false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs {
|
for _, fn := range pass.ResultOf[buildir.Analyzer].(*buildir.IR).SrcFuncs {
|
||||||
check(ssafn)
|
check(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
out := PurityResult{}
|
out := PurityResult{}
|
||||||
|
|
12
vendor/honnef.co/go/tools/functions/loops.go
vendored
12
vendor/honnef.co/go/tools/functions/loops.go
vendored
|
@ -1,10 +1,10 @@
|
||||||
package functions
|
package functions
|
||||||
|
|
||||||
import "honnef.co/go/tools/ssa"
|
import "honnef.co/go/tools/ir"
|
||||||
|
|
||||||
type Loop struct{ ssa.BlockSet }
|
type Loop struct{ *ir.BlockSet }
|
||||||
|
|
||||||
func FindLoops(fn *ssa.Function) []Loop {
|
func FindLoops(fn *ir.Function) []Loop {
|
||||||
if fn.Blocks == nil {
|
if fn.Blocks == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,12 @@ func FindLoops(fn *ssa.Function) []Loop {
|
||||||
// n is a back-edge to h
|
// n is a back-edge to h
|
||||||
// h is the loop header
|
// h is the loop header
|
||||||
if n == h {
|
if n == h {
|
||||||
set := Loop{}
|
set := Loop{ir.NewBlockSet(len(fn.Blocks))}
|
||||||
set.Add(n)
|
set.Add(n)
|
||||||
sets = append(sets, set)
|
sets = append(sets, set)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
set := Loop{}
|
set := Loop{ir.NewBlockSet(len(fn.Blocks))}
|
||||||
set.Add(h)
|
set.Add(h)
|
||||||
set.Add(n)
|
set.Add(n)
|
||||||
for _, b := range allPredsBut(n, h, nil) {
|
for _, b := range allPredsBut(n, h, nil) {
|
||||||
|
@ -35,7 +35,7 @@ func FindLoops(fn *ssa.Function) []Loop {
|
||||||
return sets
|
return sets
|
||||||
}
|
}
|
||||||
|
|
||||||
func allPredsBut(b, but *ssa.BasicBlock, list []*ssa.BasicBlock) []*ssa.BasicBlock {
|
func allPredsBut(b, but *ir.BasicBlock, list []*ir.BasicBlock) []*ir.BasicBlock {
|
||||||
outer:
|
outer:
|
||||||
for _, pred := range b.Preds {
|
for _, pred := range b.Preds {
|
||||||
if pred == but {
|
if pred == but {
|
||||||
|
|
46
vendor/honnef.co/go/tools/functions/pure.go
vendored
46
vendor/honnef.co/go/tools/functions/pure.go
vendored
|
@ -1,46 +0,0 @@
|
||||||
package functions
|
|
||||||
|
|
||||||
import (
|
|
||||||
"honnef.co/go/tools/ssa"
|
|
||||||
)
|
|
||||||
|
|
||||||
func filterDebug(instr []ssa.Instruction) []ssa.Instruction {
|
|
||||||
var out []ssa.Instruction
|
|
||||||
for _, ins := range instr {
|
|
||||||
if _, ok := ins.(*ssa.DebugRef); !ok {
|
|
||||||
out = append(out, ins)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsStub reports whether a function is a stub. A function is
|
|
||||||
// considered a stub if it has no instructions or exactly one
|
|
||||||
// instruction, which must be either returning only constant values or
|
|
||||||
// a panic.
|
|
||||||
func IsStub(fn *ssa.Function) bool {
|
|
||||||
if len(fn.Blocks) == 0 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if len(fn.Blocks) > 1 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
instrs := filterDebug(fn.Blocks[0].Instrs)
|
|
||||||
if len(instrs) != 1 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
switch instrs[0].(type) {
|
|
||||||
case *ssa.Return:
|
|
||||||
// Since this is the only instruction, the return value must
|
|
||||||
// be a constant. We consider all constants as stubs, not just
|
|
||||||
// the zero value. This does not, unfortunately, cover zero
|
|
||||||
// initialised structs, as these cause additional
|
|
||||||
// instructions.
|
|
||||||
return true
|
|
||||||
case *ssa.Panic:
|
|
||||||
return true
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
32
vendor/honnef.co/go/tools/functions/stub.go
vendored
Normal file
32
vendor/honnef.co/go/tools/functions/stub.go
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package functions
|
||||||
|
|
||||||
|
import (
|
||||||
|
"honnef.co/go/tools/ir"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IsStub reports whether a function is a stub. A function is
|
||||||
|
// considered a stub if it has no instructions or if all it does is
|
||||||
|
// return a constant value.
|
||||||
|
func IsStub(fn *ir.Function) bool {
|
||||||
|
for _, b := range fn.Blocks {
|
||||||
|
for _, instr := range b.Instrs {
|
||||||
|
switch instr.(type) {
|
||||||
|
case *ir.Const:
|
||||||
|
// const naturally has no side-effects
|
||||||
|
case *ir.Panic:
|
||||||
|
// panic is a stub if it only uses constants
|
||||||
|
case *ir.Return:
|
||||||
|
// return is a stub if it only uses constants
|
||||||
|
case *ir.DebugRef:
|
||||||
|
case *ir.Jump:
|
||||||
|
// if there are no disallowed instructions, then we're
|
||||||
|
// only jumping to the exit block (or possibly
|
||||||
|
// somewhere else that's stubby?)
|
||||||
|
default:
|
||||||
|
// all other instructions are assumed to do actual work
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
|
@ -1,11 +1,15 @@
|
||||||
package functions
|
package functions
|
||||||
|
|
||||||
import "honnef.co/go/tools/ssa"
|
import (
|
||||||
|
"go/types"
|
||||||
|
|
||||||
|
"honnef.co/go/tools/ir"
|
||||||
|
)
|
||||||
|
|
||||||
// Terminates reports whether fn is supposed to return, that is if it
|
// Terminates reports whether fn is supposed to return, that is if it
|
||||||
// has at least one theoretic path that returns from the function.
|
// has at least one theoretic path that returns from the function.
|
||||||
// Explicit panics do not count as terminating.
|
// Explicit panics do not count as terminating.
|
||||||
func Terminates(fn *ssa.Function) bool {
|
func Terminates(fn *ir.Function) bool {
|
||||||
if fn.Blocks == nil {
|
if fn.Blocks == nil {
|
||||||
// assuming that a function terminates is the conservative
|
// assuming that a function terminates is the conservative
|
||||||
// choice
|
// choice
|
||||||
|
@ -13,12 +17,54 @@ func Terminates(fn *ssa.Function) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, block := range fn.Blocks {
|
for _, block := range fn.Blocks {
|
||||||
if len(block.Instrs) == 0 {
|
if _, ok := block.Control().(*ir.Return); ok {
|
||||||
continue
|
if len(block.Preds) == 0 {
|
||||||
}
|
|
||||||
if _, ok := block.Instrs[len(block.Instrs)-1].(*ssa.Return); ok {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
for _, pred := range block.Preds {
|
||||||
|
switch ctrl := pred.Control().(type) {
|
||||||
|
case *ir.Panic:
|
||||||
|
// explicit panics do not count as terminating
|
||||||
|
case *ir.If:
|
||||||
|
// Check if we got here by receiving from a closed
|
||||||
|
// time.Tick channel – this cannot happen at
|
||||||
|
// runtime and thus doesn't constitute termination
|
||||||
|
iff := ctrl
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
ex, ok := iff.Cond.(*ir.Extract)
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if ex.Index != 1 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
recv, ok := ex.Tuple.(*ir.Recv)
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
call, ok := recv.Chan.(*ir.Call)
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
fn, ok := call.Common().Value.(*ir.Function)
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
fn2, ok := fn.Object().(*types.Func)
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if fn2.FullName() != "time.Tick" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// we've reached the exit block
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,7 @@ func (c *Cache) get(id ActionID) (Entry, error) {
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
tm, err := strconv.ParseInt(string(etime[i:]), 10, 64)
|
tm, err := strconv.ParseInt(string(etime[i:]), 10, 64)
|
||||||
if err != nil || size < 0 {
|
if err != nil || tm < 0 {
|
||||||
return missing()
|
return missing()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ func (c *Cache) Trim() {
|
||||||
// We maintain in dir/trim.txt the time of the last completed cache trim.
|
// We maintain in dir/trim.txt the time of the last completed cache trim.
|
||||||
// If the cache has been trimmed recently enough, do nothing.
|
// If the cache has been trimmed recently enough, do nothing.
|
||||||
// This is the common case.
|
// This is the common case.
|
||||||
data, _ := ioutil.ReadFile(filepath.Join(c.dir, "trim.txt"))
|
data, _ := renameio.ReadFile(filepath.Join(c.dir, "trim.txt"))
|
||||||
t, err := strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64)
|
t, err := strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64)
|
||||||
if err == nil && now.Sub(time.Unix(t, 0)) < trimInterval {
|
if err == nil && now.Sub(time.Unix(t, 0)) < trimInterval {
|
||||||
return
|
return
|
||||||
|
@ -282,7 +282,7 @@ func (c *Cache) Trim() {
|
||||||
|
|
||||||
// Ignore errors from here: if we don't write the complete timestamp, the
|
// Ignore errors from here: if we don't write the complete timestamp, the
|
||||||
// cache will appear older than it is, and we'll trim it again next time.
|
// cache will appear older than it is, and we'll trim it again next time.
|
||||||
renameio.WriteFile(filepath.Join(c.dir, "trim.txt"), []byte(fmt.Sprintf("%d", now.Unix())))
|
renameio.WriteFile(filepath.Join(c.dir, "trim.txt"), []byte(fmt.Sprintf("%d", now.Unix())), 0666)
|
||||||
}
|
}
|
||||||
|
|
||||||
// trimSubdir trims a single cache subdirectory.
|
// trimSubdir trims a single cache subdirectory.
|
||||||
|
@ -326,7 +326,8 @@ func (c *Cache) putIndexEntry(id ActionID, out OutputID, size int64, allowVerify
|
||||||
// in verify mode we are double-checking that the cache entries
|
// in verify mode we are double-checking that the cache entries
|
||||||
// are entirely reproducible. As just noted, this may be unrealistic
|
// are entirely reproducible. As just noted, this may be unrealistic
|
||||||
// in some cases but the check is also useful for shaking out real bugs.
|
// in some cases but the check is also useful for shaking out real bugs.
|
||||||
entry := []byte(fmt.Sprintf("v1 %x %x %20d %20d\n", id, out, size, time.Now().UnixNano()))
|
entry := fmt.Sprintf("v1 %x %x %20d %20d\n", id, out, size, time.Now().UnixNano())
|
||||||
|
|
||||||
if verify && allowVerify {
|
if verify && allowVerify {
|
||||||
old, err := c.get(id)
|
old, err := c.get(id)
|
||||||
if err == nil && (old.OutputID != out || old.Size != size) {
|
if err == nil && (old.OutputID != out || old.Size != size) {
|
||||||
|
@ -336,7 +337,28 @@ func (c *Cache) putIndexEntry(id ActionID, out OutputID, size int64, allowVerify
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file := c.fileName(id, "a")
|
file := c.fileName(id, "a")
|
||||||
if err := ioutil.WriteFile(file, entry, 0666); err != nil {
|
|
||||||
|
// Copy file to cache directory.
|
||||||
|
mode := os.O_WRONLY | os.O_CREATE
|
||||||
|
f, err := os.OpenFile(file, mode, 0666)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = f.WriteString(entry)
|
||||||
|
if err == nil {
|
||||||
|
// Truncate the file only *after* writing it.
|
||||||
|
// (This should be a no-op, but truncate just in case of previous corruption.)
|
||||||
|
//
|
||||||
|
// This differs from ioutil.WriteFile, which truncates to 0 *before* writing
|
||||||
|
// via os.O_TRUNC. Truncating only after writing ensures that a second write
|
||||||
|
// of the same content to the same file is idempotent, and does not — even
|
||||||
|
// temporarily! — undo the effect of the first write.
|
||||||
|
err = f.Truncate(int64(len(entry)))
|
||||||
|
}
|
||||||
|
if closeErr := f.Close(); err == nil {
|
||||||
|
err = closeErr
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
// TODO(bcmills): This Remove potentially races with another go command writing to file.
|
// TODO(bcmills): This Remove potentially races with another go command writing to file.
|
||||||
// Can we eliminate it?
|
// Can we eliminate it?
|
||||||
os.Remove(file)
|
os.Remove(file)
|
||||||
|
|
113
vendor/honnef.co/go/tools/internal/passes/buildir/buildir.go
vendored
Normal file
113
vendor/honnef.co/go/tools/internal/passes/buildir/buildir.go
vendored
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
// 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 buildir defines an Analyzer that constructs the IR
|
||||||
|
// of an error-free package and returns the set of all
|
||||||
|
// functions within it. It does not report any diagnostics itself but
|
||||||
|
// may be used as an input to other analyzers.
|
||||||
|
//
|
||||||
|
// THIS INTERFACE IS EXPERIMENTAL AND MAY BE SUBJECT TO INCOMPATIBLE CHANGE.
|
||||||
|
package buildir
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/types"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"golang.org/x/tools/go/analysis"
|
||||||
|
"honnef.co/go/tools/ir"
|
||||||
|
)
|
||||||
|
|
||||||
|
type willExit struct{}
|
||||||
|
type willUnwind struct{}
|
||||||
|
|
||||||
|
func (*willExit) AFact() {}
|
||||||
|
func (*willUnwind) AFact() {}
|
||||||
|
|
||||||
|
var Analyzer = &analysis.Analyzer{
|
||||||
|
Name: "buildir",
|
||||||
|
Doc: "build IR for later passes",
|
||||||
|
Run: run,
|
||||||
|
ResultType: reflect.TypeOf(new(IR)),
|
||||||
|
FactTypes: []analysis.Fact{new(willExit), new(willUnwind)},
|
||||||
|
}
|
||||||
|
|
||||||
|
// IR provides intermediate representation for all the
|
||||||
|
// non-blank source functions in the current package.
|
||||||
|
type IR struct {
|
||||||
|
Pkg *ir.Package
|
||||||
|
SrcFuncs []*ir.Function
|
||||||
|
}
|
||||||
|
|
||||||
|
func run(pass *analysis.Pass) (interface{}, error) {
|
||||||
|
// Plundered from ssautil.BuildPackage.
|
||||||
|
|
||||||
|
// We must create a new Program for each Package because the
|
||||||
|
// analysis API provides no place to hang a Program shared by
|
||||||
|
// all Packages. Consequently, IR Packages and Functions do not
|
||||||
|
// have a canonical representation across an analysis session of
|
||||||
|
// multiple packages. This is unlikely to be a problem in
|
||||||
|
// practice because the analysis API essentially forces all
|
||||||
|
// packages to be analysed independently, so any given call to
|
||||||
|
// Analysis.Run on a package will see only IR objects belonging
|
||||||
|
// to a single Program.
|
||||||
|
|
||||||
|
mode := ir.GlobalDebug
|
||||||
|
|
||||||
|
prog := ir.NewProgram(pass.Fset, mode)
|
||||||
|
|
||||||
|
// Create IR packages for all imports.
|
||||||
|
// Order is not significant.
|
||||||
|
created := make(map[*types.Package]bool)
|
||||||
|
var createAll func(pkgs []*types.Package)
|
||||||
|
createAll = func(pkgs []*types.Package) {
|
||||||
|
for _, p := range pkgs {
|
||||||
|
if !created[p] {
|
||||||
|
created[p] = true
|
||||||
|
irpkg := prog.CreatePackage(p, nil, nil, true)
|
||||||
|
for _, fn := range irpkg.Functions {
|
||||||
|
if ast.IsExported(fn.Name()) {
|
||||||
|
var exit willExit
|
||||||
|
var unwind willUnwind
|
||||||
|
if pass.ImportObjectFact(fn.Object(), &exit) {
|
||||||
|
fn.WillExit = true
|
||||||
|
}
|
||||||
|
if pass.ImportObjectFact(fn.Object(), &unwind) {
|
||||||
|
fn.WillUnwind = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createAll(p.Imports())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createAll(pass.Pkg.Imports())
|
||||||
|
|
||||||
|
// Create and build the primary package.
|
||||||
|
irpkg := prog.CreatePackage(pass.Pkg, pass.Files, pass.TypesInfo, false)
|
||||||
|
irpkg.Build()
|
||||||
|
|
||||||
|
// Compute list of source functions, including literals,
|
||||||
|
// in source order.
|
||||||
|
var addAnons func(f *ir.Function)
|
||||||
|
funcs := make([]*ir.Function, len(irpkg.Functions))
|
||||||
|
copy(funcs, irpkg.Functions)
|
||||||
|
addAnons = func(f *ir.Function) {
|
||||||
|
for _, anon := range f.AnonFuncs {
|
||||||
|
funcs = append(funcs, anon)
|
||||||
|
addAnons(anon)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, fn := range irpkg.Functions {
|
||||||
|
addAnons(fn)
|
||||||
|
if fn.WillExit {
|
||||||
|
pass.ExportObjectFact(fn.Object(), new(willExit))
|
||||||
|
}
|
||||||
|
if fn.WillUnwind {
|
||||||
|
pass.ExportObjectFact(fn.Object(), new(willUnwind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &IR{Pkg: irpkg, SrcFuncs: funcs}, nil
|
||||||
|
}
|
|
@ -1,116 +0,0 @@
|
||||||
// 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 buildssa defines an Analyzer that constructs the SSA
|
|
||||||
// representation of an error-free package and returns the set of all
|
|
||||||
// functions within it. It does not report any diagnostics itself but
|
|
||||||
// may be used as an input to other analyzers.
|
|
||||||
//
|
|
||||||
// THIS INTERFACE IS EXPERIMENTAL AND MAY BE SUBJECT TO INCOMPATIBLE CHANGE.
|
|
||||||
package buildssa
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go/ast"
|
|
||||||
"go/types"
|
|
||||||
"reflect"
|
|
||||||
|
|
||||||
"golang.org/x/tools/go/analysis"
|
|
||||||
"honnef.co/go/tools/ssa"
|
|
||||||
)
|
|
||||||
|
|
||||||
var Analyzer = &analysis.Analyzer{
|
|
||||||
Name: "buildssa",
|
|
||||||
Doc: "build SSA-form IR for later passes",
|
|
||||||
Run: run,
|
|
||||||
ResultType: reflect.TypeOf(new(SSA)),
|
|
||||||
}
|
|
||||||
|
|
||||||
// SSA provides SSA-form intermediate representation for all the
|
|
||||||
// non-blank source functions in the current package.
|
|
||||||
type SSA struct {
|
|
||||||
Pkg *ssa.Package
|
|
||||||
SrcFuncs []*ssa.Function
|
|
||||||
}
|
|
||||||
|
|
||||||
func run(pass *analysis.Pass) (interface{}, error) {
|
|
||||||
// Plundered from ssautil.BuildPackage.
|
|
||||||
|
|
||||||
// We must create a new Program for each Package because the
|
|
||||||
// analysis API provides no place to hang a Program shared by
|
|
||||||
// all Packages. Consequently, SSA Packages and Functions do not
|
|
||||||
// have a canonical representation across an analysis session of
|
|
||||||
// multiple packages. This is unlikely to be a problem in
|
|
||||||
// practice because the analysis API essentially forces all
|
|
||||||
// packages to be analysed independently, so any given call to
|
|
||||||
// Analysis.Run on a package will see only SSA objects belonging
|
|
||||||
// to a single Program.
|
|
||||||
|
|
||||||
mode := ssa.GlobalDebug
|
|
||||||
|
|
||||||
prog := ssa.NewProgram(pass.Fset, mode)
|
|
||||||
|
|
||||||
// Create SSA packages for all imports.
|
|
||||||
// Order is not significant.
|
|
||||||
created := make(map[*types.Package]bool)
|
|
||||||
var createAll func(pkgs []*types.Package)
|
|
||||||
createAll = func(pkgs []*types.Package) {
|
|
||||||
for _, p := range pkgs {
|
|
||||||
if !created[p] {
|
|
||||||
created[p] = true
|
|
||||||
prog.CreatePackage(p, nil, nil, true)
|
|
||||||
createAll(p.Imports())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
createAll(pass.Pkg.Imports())
|
|
||||||
|
|
||||||
// Create and build the primary package.
|
|
||||||
ssapkg := prog.CreatePackage(pass.Pkg, pass.Files, pass.TypesInfo, false)
|
|
||||||
ssapkg.Build()
|
|
||||||
|
|
||||||
// Compute list of source functions, including literals,
|
|
||||||
// in source order.
|
|
||||||
var funcs []*ssa.Function
|
|
||||||
var addAnons func(f *ssa.Function)
|
|
||||||
addAnons = func(f *ssa.Function) {
|
|
||||||
funcs = append(funcs, f)
|
|
||||||
for _, anon := range f.AnonFuncs {
|
|
||||||
addAnons(anon)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
addAnons(ssapkg.Members["init"].(*ssa.Function))
|
|
||||||
for _, f := range pass.Files {
|
|
||||||
for _, decl := range f.Decls {
|
|
||||||
if fdecl, ok := decl.(*ast.FuncDecl); ok {
|
|
||||||
|
|
||||||
// SSA will not build a Function
|
|
||||||
// for a FuncDecl named blank.
|
|
||||||
// That's arguably too strict but
|
|
||||||
// relaxing it would break uniqueness of
|
|
||||||
// names of package members.
|
|
||||||
if fdecl.Name.Name == "_" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// (init functions have distinct Func
|
|
||||||
// objects named "init" and distinct
|
|
||||||
// ssa.Functions named "init#1", ...)
|
|
||||||
|
|
||||||
fn := pass.TypesInfo.Defs[fdecl.Name].(*types.Func)
|
|
||||||
if fn == nil {
|
|
||||||
panic(fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
f := ssapkg.Prog.FuncValue(fn)
|
|
||||||
if f == nil {
|
|
||||||
panic(fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
addAnons(f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return &SSA{Pkg: ssapkg, SrcFuncs: funcs}, nil
|
|
||||||
}
|
|
|
@ -8,15 +8,15 @@ package renameio
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"strconv"
|
||||||
"strings"
|
|
||||||
"time"
|
"honnef.co/go/tools/internal/robustio"
|
||||||
)
|
)
|
||||||
|
|
||||||
const patternSuffix = "*.tmp"
|
const patternSuffix = ".tmp"
|
||||||
|
|
||||||
// Pattern returns a glob pattern that matches the unrenamed temporary files
|
// Pattern returns a glob pattern that matches the unrenamed temporary files
|
||||||
// created when writing to filename.
|
// created when writing to filename.
|
||||||
|
@ -29,14 +29,14 @@ func Pattern(filename string) string {
|
||||||
// final name.
|
// final name.
|
||||||
//
|
//
|
||||||
// That ensures that the final location, if it exists, is always a complete file.
|
// That ensures that the final location, if it exists, is always a complete file.
|
||||||
func WriteFile(filename string, data []byte) (err error) {
|
func WriteFile(filename string, data []byte, perm os.FileMode) (err error) {
|
||||||
return WriteToFile(filename, bytes.NewReader(data))
|
return WriteToFile(filename, bytes.NewReader(data), perm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteToFile is a variant of WriteFile that accepts the data as an io.Reader
|
// WriteToFile is a variant of WriteFile that accepts the data as an io.Reader
|
||||||
// instead of a slice.
|
// instead of a slice.
|
||||||
func WriteToFile(filename string, data io.Reader) (err error) {
|
func WriteToFile(filename string, data io.Reader, perm os.FileMode) (err error) {
|
||||||
f, err := ioutil.TempFile(filepath.Dir(filename), filepath.Base(filename)+patternSuffix)
|
f, err := tempFile(filepath.Dir(filename), filepath.Base(filename), perm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -63,21 +63,31 @@ func WriteToFile(filename string, data io.Reader) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var start time.Time
|
return robustio.Rename(f.Name(), filename)
|
||||||
for {
|
}
|
||||||
err := os.Rename(f.Name(), filename)
|
|
||||||
if err == nil || runtime.GOOS != "windows" || !strings.HasSuffix(err.Error(), "Access is denied.") {
|
// tempFile creates a new temporary file with given permission bits.
|
||||||
return err
|
func tempFile(dir, prefix string, perm os.FileMode) (f *os.File, err error) {
|
||||||
}
|
for i := 0; i < 10000; i++ {
|
||||||
|
name := filepath.Join(dir, prefix+strconv.Itoa(rand.Intn(1000000000))+patternSuffix)
|
||||||
// Windows seems to occasionally trigger spurious "Access is denied" errors
|
f, err = os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, perm)
|
||||||
// here (see golang.org/issue/31247). We're not sure why. It's probably
|
if os.IsExist(err) {
|
||||||
// worth a little extra latency to avoid propagating the spurious errors.
|
continue
|
||||||
if start.IsZero() {
|
}
|
||||||
start = time.Now()
|
break
|
||||||
} else if time.Since(start) >= 500*time.Millisecond {
|
}
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
time.Sleep(5 * time.Millisecond)
|
|
||||||
}
|
// ReadFile is like ioutil.ReadFile, but on Windows retries spurious errors that
|
||||||
|
// may occur if the file is concurrently replaced.
|
||||||
|
//
|
||||||
|
// Errors are classified heuristically and retries are bounded, so even this
|
||||||
|
// function may occasionally return a spurious error on Windows.
|
||||||
|
// If so, the error will likely wrap one of:
|
||||||
|
// - syscall.ERROR_ACCESS_DENIED
|
||||||
|
// - syscall.ERROR_FILE_NOT_FOUND
|
||||||
|
// - internal/syscall/windows.ERROR_SHARING_VIOLATION
|
||||||
|
func ReadFile(filename string) ([]byte, error) {
|
||||||
|
return robustio.ReadFile(filename)
|
||||||
}
|
}
|
||||||
|
|
53
vendor/honnef.co/go/tools/internal/robustio/robustio.go
vendored
Normal file
53
vendor/honnef.co/go/tools/internal/robustio/robustio.go
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright 2019 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 robustio wraps I/O functions that are prone to failure on Windows,
|
||||||
|
// transparently retrying errors up to an arbitrary timeout.
|
||||||
|
//
|
||||||
|
// Errors are classified heuristically and retries are bounded, so the functions
|
||||||
|
// in this package do not completely eliminate spurious errors. However, they do
|
||||||
|
// significantly reduce the rate of failure in practice.
|
||||||
|
//
|
||||||
|
// If so, the error will likely wrap one of:
|
||||||
|
// The functions in this package do not completely eliminate spurious errors,
|
||||||
|
// but substantially reduce their rate of occurrence in practice.
|
||||||
|
package robustio
|
||||||
|
|
||||||
|
// Rename is like os.Rename, but on Windows retries errors that may occur if the
|
||||||
|
// file is concurrently read or overwritten.
|
||||||
|
//
|
||||||
|
// (See golang.org/issue/31247 and golang.org/issue/32188.)
|
||||||
|
func Rename(oldpath, newpath string) error {
|
||||||
|
return rename(oldpath, newpath)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadFile is like ioutil.ReadFile, but on Windows retries errors that may
|
||||||
|
// occur if the file is concurrently replaced.
|
||||||
|
//
|
||||||
|
// (See golang.org/issue/31247 and golang.org/issue/32188.)
|
||||||
|
func ReadFile(filename string) ([]byte, error) {
|
||||||
|
return readFile(filename)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAll is like os.RemoveAll, but on Windows retries errors that may occur
|
||||||
|
// if an executable file in the directory has recently been executed.
|
||||||
|
//
|
||||||
|
// (See golang.org/issue/19491.)
|
||||||
|
func RemoveAll(path string) error {
|
||||||
|
return removeAll(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEphemeralError reports whether err is one of the errors that the functions
|
||||||
|
// in this package attempt to mitigate.
|
||||||
|
//
|
||||||
|
// Errors considered ephemeral include:
|
||||||
|
// - syscall.ERROR_ACCESS_DENIED
|
||||||
|
// - syscall.ERROR_FILE_NOT_FOUND
|
||||||
|
// - internal/syscall/windows.ERROR_SHARING_VIOLATION
|
||||||
|
//
|
||||||
|
// This set may be expanded in the future; programs must not rely on the
|
||||||
|
// non-ephemerality of any given error.
|
||||||
|
func IsEphemeralError(err error) bool {
|
||||||
|
return isEphemeralError(err)
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue