mirror of https://github.com/knative/caching.git
upgrade to latest dependencies (#961)
bumping github.com/spf13/pflag f9cbdd9...0491e57: > 0491e57 Merge pull request # 448 from thaJeztah/fix_go_version > 72abab1 Merge pull request # 447 from thaJeztah/fix_deprecation_comment > 7e4dfb1 Test on Go 1.12 > 1043857 Merge pull request # 446 from spf13/fix-backwards-compat > 45a4873 fix deprecation comment for (FlagSet.)ParseErrorsWhitelist > 18a9d17 move Func, BoolFunc, tests as they require go1.21 > b9c16fa Merge pull request # 444 from spf13/reset-args-even-if-empty > 7412009 fix: Restore ParseErrorsWhitelist name for now > c5b9e98 remove uses of errors.Is, which requires go1.13 > 40abc49 Merge pull request # 443 from spf13/silence-errhelp > d25dd24 Reset args on re-parse even if empty > 094909d Merge pull request # 365 from vaguecoder/str2str-sorted > 1bf832c Use errors.Is instead of equality check > 7c651d1 Merge pull request # 407 from tmc/fix-errhelp > ccb49e5 Print Default Values of String-to-String in Sorted Order > b55ffb6 fix: Don't print ErrHelp in ParseAll > 1db553c Merge pull request # 330 from pohly/copy-to-go-flagset > fd649b2 Merge branch 'master' into fix-errhelp > bfb5618 Merge pull request # 438 from mologie/fix-time-default-text > 44aa4aa add CopyToGoFlagSet > d66f0ce flag: Emulate stdlib behavior and do not print ErrHelp > c78f730 Merge pull request # 261 from dubrie/master > 1b52f76 Omit zero time.Time default from usage line > c2fd743 Merge pull request # 364 from vaguecoder/duplicate-error > 0aa4171 Update flag_test.go > 391036c Ensure output is written also from ParseAll > b41e8b7 Switching from whitelist to Allowlist terminology > 5159cda Ensure output is written to correct stream > 1a9275f Remove Redundant "Unknown-Flag" Error bumping golang.org/x/text 425d715...e69f31b: > e69f31b go.mod: update golang.org/x dependencies > 60c9786 all: upgrade go directive to at least 1.24.0 [generated] bumping golang.org/x/term a35244d...1a11b45: > 1a11b45 go.mod: update golang.org/x dependencies > d862cd5 all: upgrade go directive to at least 1.24.0 [generated] bumping golang.org/x/tools 44d18e1...d49da96: > d49da96 go/analysis/internal/checker: fix panic due to nil Pass > 9da4f7b gopls/internal/test/integration/completion: make test go1.26-robust > 4409ea7 gopls/internal/server: add telemetry for Zed, Helix clientInfo > 75023ae go/ast/inspector: update outdated documentation > 785cd66 gopls/internal/test/integration/completion: skip TestFuzzFunc pre-go1.25 > ac2e4a5 go.mod: update golang.org/x dependencies > bc9374d go/callgraph/vta: remove unnecessary use of unsafe > 12d7e15 gopls/internal/analysis/modernize: add test of no gopls imports > 263a769 gopls/internal/mcp: use official go mcp sdk > e548c70 gopls/internal/analysis/modernize: fix bad edit in var ( ... ) decl > 08a6323 gopls/completion: unimported completions with explicit package names > 14e7f8a internal/analysisinternal: simplify DeleteStmt using Cursor > 67a07f8 internal/astutil: move declarations from gopls/internal/util/astutil > c752aaa internal/analysisinternal/generated: move from gopls/internal/analysis > 7f6b407 internal/moreiters: move from gopls/internal/util/moreiters > ba14f00 gopls/internal/analysis/modernize/rangeint: fix defer bug > 05dba8a cmd/goimports: add counter > 45bd1e6 gopls/internal/golang: OutgoingCalls: fix crash on error.Error > 5014c67 gopls/internal/analysis/recursiveiter: fix typo > 29a972e x/tools: assume go1.24 and simplify > b8cdd9c gopls/internal/analysis/modernize: stringsbuilder: fix s=x bug > bd1ee09 gopls/internal: modernize -stringbuilder -fix > 79bbf07 gopls/internal/analysis/modernize: string+=string => strings.Builder > 530d13a go/cfg: describe conditional blocks > a09a2fb go/analysis/unitchecker: support -fix > d7b8acd go/packages: add Postorder iterator over import graph > 7729b6f gopls: modernize > ac9fc58 gopls: update to go1.25 > 71346fc godoc,cmd/godoc: delete > be52c40 gopls/internal/analysis/modernize: split up > ccfe399 cmd/godoc: remove replace directive > 923c35d godoc: remove replace directive > a5c0eb8 godoc: isolate module > c9a903f cmd/godoc: isolate module > 81b9c37 gopls/internal/golang: InlayHint: allow space before // ignore error > 1aca71e internal/refactor/inline: simple typo > b3d4678 go/analysis/passes/copylock: restrict issue61678 test to before Go 1.26 > 974c859 internal/mcp/internal/oauthex: x/oauth2 extensions > ebd6130 gopls/internal/analysis/generated: amortize ast.IsGenerated > e8ff82c gopls: support jump to definition for field links in comments > 6ebfec2 gopls/internal/analysis: fix waitgroup modernizer formatting > 5a268f4 gopls/internal/folding_range: allow more folding ranges > e48606b gopls/internal/analysis/modernize: invalid code produced by fmtappendf modernizer > 52b7d1c gopls/internal/mcp: fix panic in symbolReferencesHandler on nil types.Object > 477e0ab gopls/internal/filewatcher: replace handleEvent with convertEvent > bae1876 gopls/doc: fix broken url > 5397e65 all: upgrade go directive to at least 1.24.0 [generated] > b6b473e internal/stdlib: update stdlib index for Go 1.25.0 > e40660c gopls/internal/test/integration/completion: skip a_test.go > 8866876 gopls/internal/golang/completion: don't make unnecessary conversions for generic functions > 9c0760d gopls/internal/settings: add ui.newGoFileHeader option > c212c4a gopls/internal/analysis/modernize: fix doc typos bumping knative.dev/pkg 8c9c1d3...db4c336: > db4c336 Bump the golang-x group with 2 updates (# 3262) > 5822f05 Bump github.com/spf13/pflag from 1.0.7 to 1.0.10 (# 3260) bumping golang.org/x/mod f8a9fe2...1759e96: > 1759e96 go.mod: update golang.org/x dependencies > f060e16 all: upgrade go directive to at least 1.24.0 [generated] bumping golang.org/x/net e74bc31...3b23d57: > 3b23d57 http2: fix race condition when disabling goroutine debugging for one test > 8741050 http2: simplify TestServer_Push_RejectAfterGoAway > 96e405c http2: modernize TestTransportRoundtripCloseOnWriteError > 6dc6880 http2: simplify ClientConn Close and Shutdown tests > 4e2915b http2: modernize TestTransportAllocationsAfterResponseBodyClose > 30b0e78 http2: modernize TestRoundTripDoesntConsumeRequestBodyEarly > b9acd77 http2: speed up TestTransportFlowControl > 5153f4d go.mod: update golang.org/x dependencies > 9338bdd http2: speed up TestTransportHandlerBodyClose > 6b20036 http2: add synchronous handler support to serverTester > b0013c6 http2: modernize TestTransportChecksRequestHeaderListSize > 162ad30 http2: simplify TestServerWindowUpdateOnBodyClose > 22a8c02 http2: remove test-only path in requestBody.Read > 1ff92d3 http2: don't panic when ServeConn is passed a nil options > a2a62f2 http2: use synctest.Wait rather than poking into server internals in test > 7da929c http2: avoid examining ResponseWriter internals in test > a99f4fe http2: remove unused stream-level flow control check > 2378062 http2: remove pre-go1.24 support > 7c51e1f http2: use testing/synctest > b800b20 context: add //go:fix inline annotation to Context et al > c1e936d all: upgrade go directive to at least 1.24.0 [generated] bumping golang.org/x/sys 5b936e1...b06ce05: > b06ce05 windows: add FILE_ZERO_DATA_INFORMATION > 689cc11 unix: fix Listen on solaris > a4712b9 plan9: drop go version tags for unsupported versions > 0293703 unix: add IFAL_* consts and ifaddrlblmsg on linux > ab85cbb unix/linux: extend rtnetlink constants > 9bd3753 unix: switch (*CPUSet).Zero to clear builtin > 899c232 windows/mkwinsyscall: use syscall.SyscallN instead of syscall.Syscall{6,9,12,15} > 543f21a all: upgrade go directive to at least 1.24.0 [generated] Signed-off-by: Knative Automation <automation@knative.team>
This commit is contained in:
parent
e918af7eb0
commit
117ed6e954
16
go.mod
16
go.mod
|
@ -11,7 +11,7 @@ require (
|
||||||
k8s.io/code-generator v0.33.4
|
k8s.io/code-generator v0.33.4
|
||||||
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
|
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
|
||||||
knative.dev/hack v0.0.0-20250902153942-1499de21e119
|
knative.dev/hack v0.0.0-20250902153942-1499de21e119
|
||||||
knative.dev/pkg v0.0.0-20250909010931-8c9c1d368e4b
|
knative.dev/pkg v0.0.0-20250915135827-db4c336acdbe
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
@ -37,7 +37,7 @@ require (
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/spf13/pflag v1.0.7 // indirect
|
github.com/spf13/pflag v1.0.10 // indirect
|
||||||
github.com/x448/float16 v0.8.4 // indirect
|
github.com/x448/float16 v0.8.4 // indirect
|
||||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||||
go.opentelemetry.io/otel v1.37.0 // indirect
|
go.opentelemetry.io/otel v1.37.0 // indirect
|
||||||
|
@ -45,15 +45,15 @@ require (
|
||||||
go.opentelemetry.io/otel/trace v1.37.0 // indirect
|
go.opentelemetry.io/otel/trace v1.37.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
go.yaml.in/yaml/v2 v2.4.2 // indirect
|
go.yaml.in/yaml/v2 v2.4.2 // indirect
|
||||||
golang.org/x/mod v0.27.0 // indirect
|
golang.org/x/mod v0.28.0 // indirect
|
||||||
golang.org/x/net v0.43.0 // indirect
|
golang.org/x/net v0.44.0 // indirect
|
||||||
golang.org/x/oauth2 v0.30.0 // indirect
|
golang.org/x/oauth2 v0.30.0 // indirect
|
||||||
golang.org/x/sync v0.17.0 // indirect
|
golang.org/x/sync v0.17.0 // indirect
|
||||||
golang.org/x/sys v0.35.0 // indirect
|
golang.org/x/sys v0.36.0 // indirect
|
||||||
golang.org/x/term v0.34.0 // indirect
|
golang.org/x/term v0.35.0 // indirect
|
||||||
golang.org/x/text v0.28.0 // indirect
|
golang.org/x/text v0.29.0 // indirect
|
||||||
golang.org/x/time v0.10.0 // indirect
|
golang.org/x/time v0.10.0 // indirect
|
||||||
golang.org/x/tools v0.36.0 // indirect
|
golang.org/x/tools v0.37.0 // indirect
|
||||||
golang.org/x/tools/go/expect v0.1.1-deprecated // indirect
|
golang.org/x/tools/go/expect v0.1.1-deprecated // indirect
|
||||||
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
|
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
|
||||||
google.golang.org/protobuf v1.36.8 // indirect
|
google.golang.org/protobuf v1.36.8 // indirect
|
||||||
|
|
32
go.sum
32
go.sum
|
@ -71,8 +71,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||||
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
||||||
github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
|
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
|
||||||
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||||
|
@ -113,14 +113,14 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
|
||||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
|
||||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
|
||||||
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
||||||
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -131,22 +131,22 @@ golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
|
||||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
|
golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ=
|
||||||
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
|
golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA=
|
||||||
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.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
|
||||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
|
||||||
golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
|
golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
|
||||||
golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||||
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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE=
|
||||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w=
|
||||||
golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
|
golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
|
||||||
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
|
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
|
||||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
|
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
|
||||||
|
@ -186,8 +186,8 @@ k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJ
|
||||||
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||||
knative.dev/hack v0.0.0-20250902153942-1499de21e119 h1:NbQvjnFK1tL489LN0qAybWy0E17Jpziwcv/XIHwfp6M=
|
knative.dev/hack v0.0.0-20250902153942-1499de21e119 h1:NbQvjnFK1tL489LN0qAybWy0E17Jpziwcv/XIHwfp6M=
|
||||||
knative.dev/hack v0.0.0-20250902153942-1499de21e119/go.mod h1:R0ritgYtjLDO9527h5vb5X6gfvt5LCrJ55BNbVDsWiY=
|
knative.dev/hack v0.0.0-20250902153942-1499de21e119/go.mod h1:R0ritgYtjLDO9527h5vb5X6gfvt5LCrJ55BNbVDsWiY=
|
||||||
knative.dev/pkg v0.0.0-20250909010931-8c9c1d368e4b h1:Gscoeovr8XvQffYg6l2d7V8M5FuaJg34Hjg8e9sg21Y=
|
knative.dev/pkg v0.0.0-20250915135827-db4c336acdbe h1:VCVC/izQ5iIRWti36s1zTuRJPcnK3fSVpnB3Li4b24Y=
|
||||||
knative.dev/pkg v0.0.0-20250909010931-8c9c1d368e4b/go.mod h1:OLfYBCgDhdEpaC2TEixU3e7byMEQmke/MHP3xsR7Gmo=
|
knative.dev/pkg v0.0.0-20250915135827-db4c336acdbe/go.mod h1:MWTdkANYm1VBSd7O33Q8Uwr9nDsrBehnVNDVPbshy7s=
|
||||||
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
|
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
|
||||||
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
|
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
|
||||||
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
|
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
|
||||||
|
|
|
@ -137,12 +137,17 @@ const (
|
||||||
PanicOnError
|
PanicOnError
|
||||||
)
|
)
|
||||||
|
|
||||||
// ParseErrorsWhitelist defines the parsing errors that can be ignored
|
// ParseErrorsAllowlist defines the parsing errors that can be ignored
|
||||||
type ParseErrorsWhitelist struct {
|
type ParseErrorsAllowlist struct {
|
||||||
// UnknownFlags will ignore unknown flags errors and continue parsing rest of the flags
|
// UnknownFlags will ignore unknown flags errors and continue parsing rest of the flags
|
||||||
UnknownFlags bool
|
UnknownFlags bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ParseErrorsWhitelist defines the parsing errors that can be ignored.
|
||||||
|
//
|
||||||
|
// Deprecated: use [ParseErrorsAllowlist] instead. This type will be removed in a future release.
|
||||||
|
type ParseErrorsWhitelist = ParseErrorsAllowlist
|
||||||
|
|
||||||
// NormalizedName is a flag name that has been normalized according to rules
|
// NormalizedName is a flag name that has been normalized according to rules
|
||||||
// for the FlagSet (e.g. making '-' and '_' equivalent).
|
// for the FlagSet (e.g. making '-' and '_' equivalent).
|
||||||
type NormalizedName string
|
type NormalizedName string
|
||||||
|
@ -158,8 +163,13 @@ type FlagSet struct {
|
||||||
// help/usage messages.
|
// help/usage messages.
|
||||||
SortFlags bool
|
SortFlags bool
|
||||||
|
|
||||||
// ParseErrorsWhitelist is used to configure a whitelist of errors
|
// ParseErrorsAllowlist is used to configure an allowlist of errors
|
||||||
ParseErrorsWhitelist ParseErrorsWhitelist
|
ParseErrorsAllowlist ParseErrorsAllowlist
|
||||||
|
|
||||||
|
// ParseErrorsAllowlist is used to configure an allowlist of errors.
|
||||||
|
//
|
||||||
|
// Deprecated: use [FlagSet.ParseErrorsAllowlist] instead. This field will be removed in a future release.
|
||||||
|
ParseErrorsWhitelist ParseErrorsAllowlist
|
||||||
|
|
||||||
name string
|
name string
|
||||||
parsed bool
|
parsed bool
|
||||||
|
@ -928,7 +938,6 @@ func VarP(value Value, name, shorthand, usage string) {
|
||||||
// returns the error.
|
// returns the error.
|
||||||
func (f *FlagSet) fail(err error) error {
|
func (f *FlagSet) fail(err error) error {
|
||||||
if f.errorHandling != ContinueOnError {
|
if f.errorHandling != ContinueOnError {
|
||||||
fmt.Fprintln(f.Output(), err)
|
|
||||||
f.usage()
|
f.usage()
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
@ -986,6 +995,8 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin
|
||||||
f.usage()
|
f.usage()
|
||||||
return a, ErrHelp
|
return a, ErrHelp
|
||||||
case f.ParseErrorsWhitelist.UnknownFlags:
|
case f.ParseErrorsWhitelist.UnknownFlags:
|
||||||
|
fallthrough
|
||||||
|
case f.ParseErrorsAllowlist.UnknownFlags:
|
||||||
// --unknown=unknownval arg ...
|
// --unknown=unknownval arg ...
|
||||||
// we do not want to lose arg in this case
|
// we do not want to lose arg in this case
|
||||||
if len(split) >= 2 {
|
if len(split) >= 2 {
|
||||||
|
@ -1044,6 +1055,8 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parse
|
||||||
err = ErrHelp
|
err = ErrHelp
|
||||||
return
|
return
|
||||||
case f.ParseErrorsWhitelist.UnknownFlags:
|
case f.ParseErrorsWhitelist.UnknownFlags:
|
||||||
|
fallthrough
|
||||||
|
case f.ParseErrorsAllowlist.UnknownFlags:
|
||||||
// '-f=arg arg ...'
|
// '-f=arg arg ...'
|
||||||
// we do not want to lose arg in this case
|
// we do not want to lose arg in this case
|
||||||
if len(shorthands) > 2 && shorthands[1] == '=' {
|
if len(shorthands) > 2 && shorthands[1] == '=' {
|
||||||
|
@ -1158,12 +1171,12 @@ func (f *FlagSet) Parse(arguments []string) error {
|
||||||
}
|
}
|
||||||
f.parsed = true
|
f.parsed = true
|
||||||
|
|
||||||
|
f.args = make([]string, 0, len(arguments))
|
||||||
|
|
||||||
if len(arguments) == 0 {
|
if len(arguments) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
f.args = make([]string, 0, len(arguments))
|
|
||||||
|
|
||||||
set := func(flag *Flag, value string) error {
|
set := func(flag *Flag, value string) error {
|
||||||
return f.Set(flag.Name, value)
|
return f.Set(flag.Name, value)
|
||||||
}
|
}
|
||||||
|
@ -1174,7 +1187,10 @@ func (f *FlagSet) Parse(arguments []string) error {
|
||||||
case ContinueOnError:
|
case ContinueOnError:
|
||||||
return err
|
return err
|
||||||
case ExitOnError:
|
case ExitOnError:
|
||||||
fmt.Println(err)
|
if err == ErrHelp {
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
fmt.Fprintln(f.Output(), err)
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
case PanicOnError:
|
case PanicOnError:
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -1200,6 +1216,10 @@ func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string)
|
||||||
case ContinueOnError:
|
case ContinueOnError:
|
||||||
return err
|
return err
|
||||||
case ExitOnError:
|
case ExitOnError:
|
||||||
|
if err == ErrHelp {
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
fmt.Fprintln(f.Output(), err)
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
case PanicOnError:
|
case PanicOnError:
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
goflag "flag"
|
goflag "flag"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// go test flags prefixes
|
// go test flags prefixes
|
||||||
|
@ -113,6 +114,38 @@ func (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) {
|
||||||
f.addedGoFlagSets = append(f.addedGoFlagSets, newSet)
|
f.addedGoFlagSets = append(f.addedGoFlagSets, newSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CopyToGoFlagSet will add all current flags to the given Go flag set.
|
||||||
|
// Deprecation remarks get copied into the usage description.
|
||||||
|
// Whenever possible, a flag gets added for which Go flags shows
|
||||||
|
// a proper type in the help message.
|
||||||
|
func (f *FlagSet) CopyToGoFlagSet(newSet *goflag.FlagSet) {
|
||||||
|
f.VisitAll(func(flag *Flag) {
|
||||||
|
usage := flag.Usage
|
||||||
|
if flag.Deprecated != "" {
|
||||||
|
usage += " (DEPRECATED: " + flag.Deprecated + ")"
|
||||||
|
}
|
||||||
|
|
||||||
|
switch value := flag.Value.(type) {
|
||||||
|
case *stringValue:
|
||||||
|
newSet.StringVar((*string)(value), flag.Name, flag.DefValue, usage)
|
||||||
|
case *intValue:
|
||||||
|
newSet.IntVar((*int)(value), flag.Name, *(*int)(value), usage)
|
||||||
|
case *int64Value:
|
||||||
|
newSet.Int64Var((*int64)(value), flag.Name, *(*int64)(value), usage)
|
||||||
|
case *uintValue:
|
||||||
|
newSet.UintVar((*uint)(value), flag.Name, *(*uint)(value), usage)
|
||||||
|
case *uint64Value:
|
||||||
|
newSet.Uint64Var((*uint64)(value), flag.Name, *(*uint64)(value), usage)
|
||||||
|
case *durationValue:
|
||||||
|
newSet.DurationVar((*time.Duration)(value), flag.Name, *(*time.Duration)(value), usage)
|
||||||
|
case *float64Value:
|
||||||
|
newSet.Float64Var((*float64)(value), flag.Name, *(*float64)(value), usage)
|
||||||
|
default:
|
||||||
|
newSet.Var(flag.Value, flag.Name, usage)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// ParseSkippedFlags explicitly Parses go test flags (i.e. the one starting with '-test.') with goflag.Parse(),
|
// ParseSkippedFlags explicitly Parses go test flags (i.e. the one starting with '-test.') with goflag.Parse(),
|
||||||
// since by default those are skipped by pflag.Parse().
|
// since by default those are skipped by pflag.Parse().
|
||||||
// Typical usage example: `ParseGoTestFlags(os.Args[1:], goflag.CommandLine)`
|
// Typical usage example: `ParseGoTestFlags(os.Args[1:], goflag.CommandLine)`
|
||||||
|
@ -125,3 +158,4 @@ func ParseSkippedFlags(osArgs []string, goFlagSet *goflag.FlagSet) error {
|
||||||
}
|
}
|
||||||
return goFlagSet.Parse(skippedFlags)
|
return goFlagSet.Parse(skippedFlags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/csv"
|
"encoding/csv"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -62,8 +63,15 @@ func (s *stringToStringValue) Type() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stringToStringValue) String() string {
|
func (s *stringToStringValue) String() string {
|
||||||
|
keys := make([]string, 0, len(*s.value))
|
||||||
|
for k := range *s.value {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
|
||||||
records := make([]string, 0, len(*s.value)>>1)
|
records := make([]string, 0, len(*s.value)>>1)
|
||||||
for k, v := range *s.value {
|
for _, k := range keys {
|
||||||
|
v := (*s.value)[k]
|
||||||
records = append(records, k+"="+v)
|
records = append(records, k+"="+v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,13 @@ func (d *timeValue) Type() string {
|
||||||
return "time"
|
return "time"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *timeValue) String() string { return d.Time.Format(time.RFC3339Nano) }
|
func (d *timeValue) String() string {
|
||||||
|
if d.Time.IsZero() {
|
||||||
|
return ""
|
||||||
|
} else {
|
||||||
|
return d.Time.Format(time.RFC3339Nano)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// GetTime return the time value of a flag with the given name
|
// GetTime return the time value of a flag with the given name
|
||||||
func (f *FlagSet) GetTime(name string) (time.Time, error) {
|
func (f *FlagSet) GetTime(name string) (time.Time, error) {
|
||||||
|
|
|
@ -55,7 +55,7 @@ func configFromServer(h1 *http.Server, h2 *Server) http2Config {
|
||||||
PermitProhibitedCipherSuites: h2.PermitProhibitedCipherSuites,
|
PermitProhibitedCipherSuites: h2.PermitProhibitedCipherSuites,
|
||||||
CountError: h2.CountError,
|
CountError: h2.CountError,
|
||||||
}
|
}
|
||||||
fillNetHTTPServerConfig(&conf, h1)
|
fillNetHTTPConfig(&conf, h1.HTTP2)
|
||||||
setConfigDefaults(&conf, true)
|
setConfigDefaults(&conf, true)
|
||||||
return conf
|
return conf
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ func configFromTransport(h2 *Transport) http2Config {
|
||||||
}
|
}
|
||||||
|
|
||||||
if h2.t1 != nil {
|
if h2.t1 != nil {
|
||||||
fillNetHTTPTransportConfig(&conf, h2.t1)
|
fillNetHTTPConfig(&conf, h2.t1.HTTP2)
|
||||||
}
|
}
|
||||||
setConfigDefaults(&conf, false)
|
setConfigDefaults(&conf, false)
|
||||||
return conf
|
return conf
|
||||||
|
@ -120,3 +120,45 @@ func adjustHTTP1MaxHeaderSize(n int64) int64 {
|
||||||
const typicalHeaders = 10 // conservative
|
const typicalHeaders = 10 // conservative
|
||||||
return n + typicalHeaders*perFieldOverhead
|
return n + typicalHeaders*perFieldOverhead
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fillNetHTTPConfig(conf *http2Config, h2 *http.HTTP2Config) {
|
||||||
|
if h2 == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if h2.MaxConcurrentStreams != 0 {
|
||||||
|
conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)
|
||||||
|
}
|
||||||
|
if h2.MaxEncoderHeaderTableSize != 0 {
|
||||||
|
conf.MaxEncoderHeaderTableSize = uint32(h2.MaxEncoderHeaderTableSize)
|
||||||
|
}
|
||||||
|
if h2.MaxDecoderHeaderTableSize != 0 {
|
||||||
|
conf.MaxDecoderHeaderTableSize = uint32(h2.MaxDecoderHeaderTableSize)
|
||||||
|
}
|
||||||
|
if h2.MaxConcurrentStreams != 0 {
|
||||||
|
conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)
|
||||||
|
}
|
||||||
|
if h2.MaxReadFrameSize != 0 {
|
||||||
|
conf.MaxReadFrameSize = uint32(h2.MaxReadFrameSize)
|
||||||
|
}
|
||||||
|
if h2.MaxReceiveBufferPerConnection != 0 {
|
||||||
|
conf.MaxUploadBufferPerConnection = int32(h2.MaxReceiveBufferPerConnection)
|
||||||
|
}
|
||||||
|
if h2.MaxReceiveBufferPerStream != 0 {
|
||||||
|
conf.MaxUploadBufferPerStream = int32(h2.MaxReceiveBufferPerStream)
|
||||||
|
}
|
||||||
|
if h2.SendPingTimeout != 0 {
|
||||||
|
conf.SendPingTimeout = h2.SendPingTimeout
|
||||||
|
}
|
||||||
|
if h2.PingTimeout != 0 {
|
||||||
|
conf.PingTimeout = h2.PingTimeout
|
||||||
|
}
|
||||||
|
if h2.WriteByteTimeout != 0 {
|
||||||
|
conf.WriteByteTimeout = h2.WriteByteTimeout
|
||||||
|
}
|
||||||
|
if h2.PermitProhibitedCipherSuites {
|
||||||
|
conf.PermitProhibitedCipherSuites = true
|
||||||
|
}
|
||||||
|
if h2.CountError != nil {
|
||||||
|
conf.CountError = h2.CountError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
// Copyright 2024 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build go1.24
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import "net/http"
|
|
||||||
|
|
||||||
// fillNetHTTPServerConfig sets fields in conf from srv.HTTP2.
|
|
||||||
func fillNetHTTPServerConfig(conf *http2Config, srv *http.Server) {
|
|
||||||
fillNetHTTPConfig(conf, srv.HTTP2)
|
|
||||||
}
|
|
||||||
|
|
||||||
// fillNetHTTPTransportConfig sets fields in conf from tr.HTTP2.
|
|
||||||
func fillNetHTTPTransportConfig(conf *http2Config, tr *http.Transport) {
|
|
||||||
fillNetHTTPConfig(conf, tr.HTTP2)
|
|
||||||
}
|
|
||||||
|
|
||||||
func fillNetHTTPConfig(conf *http2Config, h2 *http.HTTP2Config) {
|
|
||||||
if h2 == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if h2.MaxConcurrentStreams != 0 {
|
|
||||||
conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)
|
|
||||||
}
|
|
||||||
if h2.MaxEncoderHeaderTableSize != 0 {
|
|
||||||
conf.MaxEncoderHeaderTableSize = uint32(h2.MaxEncoderHeaderTableSize)
|
|
||||||
}
|
|
||||||
if h2.MaxDecoderHeaderTableSize != 0 {
|
|
||||||
conf.MaxDecoderHeaderTableSize = uint32(h2.MaxDecoderHeaderTableSize)
|
|
||||||
}
|
|
||||||
if h2.MaxConcurrentStreams != 0 {
|
|
||||||
conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams)
|
|
||||||
}
|
|
||||||
if h2.MaxReadFrameSize != 0 {
|
|
||||||
conf.MaxReadFrameSize = uint32(h2.MaxReadFrameSize)
|
|
||||||
}
|
|
||||||
if h2.MaxReceiveBufferPerConnection != 0 {
|
|
||||||
conf.MaxUploadBufferPerConnection = int32(h2.MaxReceiveBufferPerConnection)
|
|
||||||
}
|
|
||||||
if h2.MaxReceiveBufferPerStream != 0 {
|
|
||||||
conf.MaxUploadBufferPerStream = int32(h2.MaxReceiveBufferPerStream)
|
|
||||||
}
|
|
||||||
if h2.SendPingTimeout != 0 {
|
|
||||||
conf.SendPingTimeout = h2.SendPingTimeout
|
|
||||||
}
|
|
||||||
if h2.PingTimeout != 0 {
|
|
||||||
conf.PingTimeout = h2.PingTimeout
|
|
||||||
}
|
|
||||||
if h2.WriteByteTimeout != 0 {
|
|
||||||
conf.WriteByteTimeout = h2.WriteByteTimeout
|
|
||||||
}
|
|
||||||
if h2.PermitProhibitedCipherSuites {
|
|
||||||
conf.PermitProhibitedCipherSuites = true
|
|
||||||
}
|
|
||||||
if h2.CountError != nil {
|
|
||||||
conf.CountError = h2.CountError
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright 2024 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build !go1.24
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import "net/http"
|
|
||||||
|
|
||||||
// Pre-Go 1.24 fallback.
|
|
||||||
// The Server.HTTP2 and Transport.HTTP2 config fields were added in Go 1.24.
|
|
||||||
|
|
||||||
func fillNetHTTPServerConfig(conf *http2Config, srv *http.Server) {}
|
|
||||||
|
|
||||||
func fillNetHTTPTransportConfig(conf *http2Config, tr *http.Transport) {}
|
|
|
@ -15,21 +15,32 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
|
"sync/atomic"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DebugGoroutines = os.Getenv("DEBUG_HTTP2_GOROUTINES") == "1"
|
var DebugGoroutines = os.Getenv("DEBUG_HTTP2_GOROUTINES") == "1"
|
||||||
|
|
||||||
|
// Setting DebugGoroutines to false during a test to disable goroutine debugging
|
||||||
|
// results in race detector complaints when a test leaves goroutines running before
|
||||||
|
// returning. Tests shouldn't do this, of course, but when they do it generally shows
|
||||||
|
// up as infrequent, hard-to-debug flakes. (See #66519.)
|
||||||
|
//
|
||||||
|
// Disable goroutine debugging during individual tests with an atomic bool.
|
||||||
|
// (Note that it's safe to enable/disable debugging mid-test, so the actual race condition
|
||||||
|
// here is harmless.)
|
||||||
|
var disableDebugGoroutines atomic.Bool
|
||||||
|
|
||||||
type goroutineLock uint64
|
type goroutineLock uint64
|
||||||
|
|
||||||
func newGoroutineLock() goroutineLock {
|
func newGoroutineLock() goroutineLock {
|
||||||
if !DebugGoroutines {
|
if !DebugGoroutines || disableDebugGoroutines.Load() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return goroutineLock(curGoroutineID())
|
return goroutineLock(curGoroutineID())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g goroutineLock) check() {
|
func (g goroutineLock) check() {
|
||||||
if !DebugGoroutines {
|
if !DebugGoroutines || disableDebugGoroutines.Load() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if curGoroutineID() != uint64(g) {
|
if curGoroutineID() != uint64(g) {
|
||||||
|
@ -38,7 +49,7 @@ func (g goroutineLock) check() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g goroutineLock) checkNotOn() {
|
func (g goroutineLock) checkNotOn() {
|
||||||
if !DebugGoroutines {
|
if !DebugGoroutines || disableDebugGoroutines.Load() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if curGoroutineID() == uint64(g) {
|
if curGoroutineID() == uint64(g) {
|
||||||
|
|
|
@ -15,7 +15,6 @@ package http2 // import "golang.org/x/net/http2"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"context"
|
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -255,15 +254,13 @@ func (cw closeWaiter) Wait() {
|
||||||
// idle memory usage with many connections.
|
// idle memory usage with many connections.
|
||||||
type bufferedWriter struct {
|
type bufferedWriter struct {
|
||||||
_ incomparable
|
_ incomparable
|
||||||
group synctestGroupInterface // immutable
|
conn net.Conn // immutable
|
||||||
conn net.Conn // immutable
|
bw *bufio.Writer // non-nil when data is buffered
|
||||||
bw *bufio.Writer // non-nil when data is buffered
|
byteTimeout time.Duration // immutable, WriteByteTimeout
|
||||||
byteTimeout time.Duration // immutable, WriteByteTimeout
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBufferedWriter(group synctestGroupInterface, conn net.Conn, timeout time.Duration) *bufferedWriter {
|
func newBufferedWriter(conn net.Conn, timeout time.Duration) *bufferedWriter {
|
||||||
return &bufferedWriter{
|
return &bufferedWriter{
|
||||||
group: group,
|
|
||||||
conn: conn,
|
conn: conn,
|
||||||
byteTimeout: timeout,
|
byteTimeout: timeout,
|
||||||
}
|
}
|
||||||
|
@ -314,24 +311,18 @@ func (w *bufferedWriter) Flush() error {
|
||||||
type bufferedWriterTimeoutWriter bufferedWriter
|
type bufferedWriterTimeoutWriter bufferedWriter
|
||||||
|
|
||||||
func (w *bufferedWriterTimeoutWriter) Write(p []byte) (n int, err error) {
|
func (w *bufferedWriterTimeoutWriter) Write(p []byte) (n int, err error) {
|
||||||
return writeWithByteTimeout(w.group, w.conn, w.byteTimeout, p)
|
return writeWithByteTimeout(w.conn, w.byteTimeout, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// writeWithByteTimeout writes to conn.
|
// writeWithByteTimeout writes to conn.
|
||||||
// If more than timeout passes without any bytes being written to the connection,
|
// If more than timeout passes without any bytes being written to the connection,
|
||||||
// the write fails.
|
// the write fails.
|
||||||
func writeWithByteTimeout(group synctestGroupInterface, conn net.Conn, timeout time.Duration, p []byte) (n int, err error) {
|
func writeWithByteTimeout(conn net.Conn, timeout time.Duration, p []byte) (n int, err error) {
|
||||||
if timeout <= 0 {
|
if timeout <= 0 {
|
||||||
return conn.Write(p)
|
return conn.Write(p)
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
var now time.Time
|
conn.SetWriteDeadline(time.Now().Add(timeout))
|
||||||
if group == nil {
|
|
||||||
now = time.Now()
|
|
||||||
} else {
|
|
||||||
now = group.Now()
|
|
||||||
}
|
|
||||||
conn.SetWriteDeadline(now.Add(timeout))
|
|
||||||
nn, err := conn.Write(p[n:])
|
nn, err := conn.Write(p[n:])
|
||||||
n += nn
|
n += nn
|
||||||
if n == len(p) || nn == 0 || !errors.Is(err, os.ErrDeadlineExceeded) {
|
if n == len(p) || nn == 0 || !errors.Is(err, os.ErrDeadlineExceeded) {
|
||||||
|
@ -417,14 +408,3 @@ func (s *sorter) SortStrings(ss []string) {
|
||||||
// makes that struct also non-comparable, and generally doesn't add
|
// makes that struct also non-comparable, and generally doesn't add
|
||||||
// any size (as long as it's first).
|
// any size (as long as it's first).
|
||||||
type incomparable [0]func()
|
type incomparable [0]func()
|
||||||
|
|
||||||
// synctestGroupInterface is the methods of synctestGroup used by Server and Transport.
|
|
||||||
// It's defined as an interface here to let us keep synctestGroup entirely test-only
|
|
||||||
// and not a part of non-test builds.
|
|
||||||
type synctestGroupInterface interface {
|
|
||||||
Join()
|
|
||||||
Now() time.Time
|
|
||||||
NewTimer(d time.Duration) timer
|
|
||||||
AfterFunc(d time.Duration, f func()) timer
|
|
||||||
ContextWithTimeout(ctx context.Context, d time.Duration) (context.Context, context.CancelFunc)
|
|
||||||
}
|
|
||||||
|
|
|
@ -176,39 +176,6 @@ type Server struct {
|
||||||
// so that we don't embed a Mutex in this struct, which will make the
|
// so that we don't embed a Mutex in this struct, which will make the
|
||||||
// struct non-copyable, which might break some callers.
|
// struct non-copyable, which might break some callers.
|
||||||
state *serverInternalState
|
state *serverInternalState
|
||||||
|
|
||||||
// Synchronization group used for testing.
|
|
||||||
// Outside of tests, this is nil.
|
|
||||||
group synctestGroupInterface
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Server) markNewGoroutine() {
|
|
||||||
if s.group != nil {
|
|
||||||
s.group.Join()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Server) now() time.Time {
|
|
||||||
if s.group != nil {
|
|
||||||
return s.group.Now()
|
|
||||||
}
|
|
||||||
return time.Now()
|
|
||||||
}
|
|
||||||
|
|
||||||
// newTimer creates a new time.Timer, or a synthetic timer in tests.
|
|
||||||
func (s *Server) newTimer(d time.Duration) timer {
|
|
||||||
if s.group != nil {
|
|
||||||
return s.group.NewTimer(d)
|
|
||||||
}
|
|
||||||
return timeTimer{time.NewTimer(d)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// afterFunc creates a new time.AfterFunc timer, or a synthetic timer in tests.
|
|
||||||
func (s *Server) afterFunc(d time.Duration, f func()) timer {
|
|
||||||
if s.group != nil {
|
|
||||||
return s.group.AfterFunc(d, f)
|
|
||||||
}
|
|
||||||
return timeTimer{time.AfterFunc(d, f)}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type serverInternalState struct {
|
type serverInternalState struct {
|
||||||
|
@ -423,6 +390,9 @@ func (o *ServeConnOpts) handler() http.Handler {
|
||||||
//
|
//
|
||||||
// The opts parameter is optional. If nil, default values are used.
|
// The opts parameter is optional. If nil, default values are used.
|
||||||
func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
|
func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
|
||||||
|
if opts == nil {
|
||||||
|
opts = &ServeConnOpts{}
|
||||||
|
}
|
||||||
s.serveConn(c, opts, nil)
|
s.serveConn(c, opts, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,7 +408,7 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon
|
||||||
conn: c,
|
conn: c,
|
||||||
baseCtx: baseCtx,
|
baseCtx: baseCtx,
|
||||||
remoteAddrStr: c.RemoteAddr().String(),
|
remoteAddrStr: c.RemoteAddr().String(),
|
||||||
bw: newBufferedWriter(s.group, c, conf.WriteByteTimeout),
|
bw: newBufferedWriter(c, conf.WriteByteTimeout),
|
||||||
handler: opts.handler(),
|
handler: opts.handler(),
|
||||||
streams: make(map[uint32]*stream),
|
streams: make(map[uint32]*stream),
|
||||||
readFrameCh: make(chan readFrameResult),
|
readFrameCh: make(chan readFrameResult),
|
||||||
|
@ -638,11 +608,11 @@ type serverConn struct {
|
||||||
pingSent bool
|
pingSent bool
|
||||||
sentPingData [8]byte
|
sentPingData [8]byte
|
||||||
goAwayCode ErrCode
|
goAwayCode ErrCode
|
||||||
shutdownTimer timer // nil until used
|
shutdownTimer *time.Timer // nil until used
|
||||||
idleTimer timer // nil if unused
|
idleTimer *time.Timer // nil if unused
|
||||||
readIdleTimeout time.Duration
|
readIdleTimeout time.Duration
|
||||||
pingTimeout time.Duration
|
pingTimeout time.Duration
|
||||||
readIdleTimer timer // nil if unused
|
readIdleTimer *time.Timer // nil if unused
|
||||||
|
|
||||||
// Owned by the writeFrameAsync goroutine:
|
// Owned by the writeFrameAsync goroutine:
|
||||||
headerWriteBuf bytes.Buffer
|
headerWriteBuf bytes.Buffer
|
||||||
|
@ -687,12 +657,12 @@ type stream struct {
|
||||||
flow outflow // limits writing from Handler to client
|
flow outflow // limits writing from Handler to client
|
||||||
inflow inflow // what the client is allowed to POST/etc to us
|
inflow inflow // what the client is allowed to POST/etc to us
|
||||||
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
|
||||||
wroteHeaders bool // whether we wrote headers (not status 100)
|
wroteHeaders bool // whether we wrote headers (not status 100)
|
||||||
readDeadline timer // nil if unused
|
readDeadline *time.Timer // nil if unused
|
||||||
writeDeadline timer // nil if unused
|
writeDeadline *time.Timer // nil if unused
|
||||||
closeErr error // set before cw is closed
|
closeErr error // set before cw is closed
|
||||||
|
|
||||||
trailer http.Header // accumulated trailers
|
trailer http.Header // accumulated trailers
|
||||||
reqTrailer http.Header // handler's Request.Trailer
|
reqTrailer http.Header // handler's Request.Trailer
|
||||||
|
@ -848,7 +818,6 @@ type readFrameResult struct {
|
||||||
// consumer is done with the frame.
|
// consumer is done with the frame.
|
||||||
// It's run on its own goroutine.
|
// It's run on its own goroutine.
|
||||||
func (sc *serverConn) readFrames() {
|
func (sc *serverConn) readFrames() {
|
||||||
sc.srv.markNewGoroutine()
|
|
||||||
gate := make(chan struct{})
|
gate := make(chan struct{})
|
||||||
gateDone := func() { gate <- struct{}{} }
|
gateDone := func() { gate <- struct{}{} }
|
||||||
for {
|
for {
|
||||||
|
@ -881,7 +850,6 @@ type frameWriteResult struct {
|
||||||
// At most one goroutine can be running writeFrameAsync at a time per
|
// At most one goroutine can be running writeFrameAsync at a time per
|
||||||
// serverConn.
|
// serverConn.
|
||||||
func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) {
|
func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) {
|
||||||
sc.srv.markNewGoroutine()
|
|
||||||
var err error
|
var err error
|
||||||
if wd == nil {
|
if wd == nil {
|
||||||
err = wr.write.writeFrame(sc)
|
err = wr.write.writeFrame(sc)
|
||||||
|
@ -965,22 +933,22 @@ func (sc *serverConn) serve(conf http2Config) {
|
||||||
sc.setConnState(http.StateIdle)
|
sc.setConnState(http.StateIdle)
|
||||||
|
|
||||||
if sc.srv.IdleTimeout > 0 {
|
if sc.srv.IdleTimeout > 0 {
|
||||||
sc.idleTimer = sc.srv.afterFunc(sc.srv.IdleTimeout, sc.onIdleTimer)
|
sc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, sc.onIdleTimer)
|
||||||
defer sc.idleTimer.Stop()
|
defer sc.idleTimer.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
if conf.SendPingTimeout > 0 {
|
if conf.SendPingTimeout > 0 {
|
||||||
sc.readIdleTimeout = conf.SendPingTimeout
|
sc.readIdleTimeout = conf.SendPingTimeout
|
||||||
sc.readIdleTimer = sc.srv.afterFunc(conf.SendPingTimeout, sc.onReadIdleTimer)
|
sc.readIdleTimer = time.AfterFunc(conf.SendPingTimeout, sc.onReadIdleTimer)
|
||||||
defer sc.readIdleTimer.Stop()
|
defer sc.readIdleTimer.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
go sc.readFrames() // closed by defer sc.conn.Close above
|
go sc.readFrames() // closed by defer sc.conn.Close above
|
||||||
|
|
||||||
settingsTimer := sc.srv.afterFunc(firstSettingsTimeout, sc.onSettingsTimer)
|
settingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer)
|
||||||
defer settingsTimer.Stop()
|
defer settingsTimer.Stop()
|
||||||
|
|
||||||
lastFrameTime := sc.srv.now()
|
lastFrameTime := time.Now()
|
||||||
loopNum := 0
|
loopNum := 0
|
||||||
for {
|
for {
|
||||||
loopNum++
|
loopNum++
|
||||||
|
@ -994,7 +962,7 @@ func (sc *serverConn) serve(conf http2Config) {
|
||||||
case res := <-sc.wroteFrameCh:
|
case res := <-sc.wroteFrameCh:
|
||||||
sc.wroteFrame(res)
|
sc.wroteFrame(res)
|
||||||
case res := <-sc.readFrameCh:
|
case res := <-sc.readFrameCh:
|
||||||
lastFrameTime = sc.srv.now()
|
lastFrameTime = time.Now()
|
||||||
// Process any written frames before reading new frames from the client since a
|
// Process any written frames before reading new frames from the client since a
|
||||||
// written frame could have triggered a new stream to be started.
|
// written frame could have triggered a new stream to be started.
|
||||||
if sc.writingFrameAsync {
|
if sc.writingFrameAsync {
|
||||||
|
@ -1077,7 +1045,7 @@ func (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pingAt := lastFrameReadTime.Add(sc.readIdleTimeout)
|
pingAt := lastFrameReadTime.Add(sc.readIdleTimeout)
|
||||||
now := sc.srv.now()
|
now := time.Now()
|
||||||
if pingAt.After(now) {
|
if pingAt.After(now) {
|
||||||
// We received frames since arming the ping timer.
|
// We received frames since arming the ping timer.
|
||||||
// Reset it for the next possible timeout.
|
// Reset it for the next possible timeout.
|
||||||
|
@ -1141,10 +1109,10 @@ func (sc *serverConn) readPreface() error {
|
||||||
errc <- nil
|
errc <- nil
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
timer := sc.srv.newTimer(prefaceTimeout) // TODO: configurable on *Server?
|
timer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server?
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
select {
|
select {
|
||||||
case <-timer.C():
|
case <-timer.C:
|
||||||
return errPrefaceTimeout
|
return errPrefaceTimeout
|
||||||
case err := <-errc:
|
case err := <-errc:
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -1160,6 +1128,21 @@ var errChanPool = sync.Pool{
|
||||||
New: func() interface{} { return make(chan error, 1) },
|
New: func() interface{} { return make(chan error, 1) },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getErrChan() chan error {
|
||||||
|
if inTests {
|
||||||
|
// Channels cannot be reused across synctest tests.
|
||||||
|
return make(chan error, 1)
|
||||||
|
} else {
|
||||||
|
return errChanPool.Get().(chan error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func putErrChan(ch chan error) {
|
||||||
|
if !inTests {
|
||||||
|
errChanPool.Put(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var writeDataPool = sync.Pool{
|
var writeDataPool = sync.Pool{
|
||||||
New: func() interface{} { return new(writeData) },
|
New: func() interface{} { return new(writeData) },
|
||||||
}
|
}
|
||||||
|
@ -1167,7 +1150,7 @@ var writeDataPool = sync.Pool{
|
||||||
// writeDataFromHandler writes DATA response frames from a handler on
|
// writeDataFromHandler writes DATA response frames from a handler on
|
||||||
// the given stream.
|
// the given stream.
|
||||||
func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error {
|
func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error {
|
||||||
ch := errChanPool.Get().(chan error)
|
ch := getErrChan()
|
||||||
writeArg := writeDataPool.Get().(*writeData)
|
writeArg := writeDataPool.Get().(*writeData)
|
||||||
*writeArg = writeData{stream.id, data, endStream}
|
*writeArg = writeData{stream.id, data, endStream}
|
||||||
err := sc.writeFrameFromHandler(FrameWriteRequest{
|
err := sc.writeFrameFromHandler(FrameWriteRequest{
|
||||||
|
@ -1199,7 +1182,7 @@ func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStrea
|
||||||
return errStreamClosed
|
return errStreamClosed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
errChanPool.Put(ch)
|
putErrChan(ch)
|
||||||
if frameWriteDone {
|
if frameWriteDone {
|
||||||
writeDataPool.Put(writeArg)
|
writeDataPool.Put(writeArg)
|
||||||
}
|
}
|
||||||
|
@ -1513,7 +1496,7 @@ func (sc *serverConn) goAway(code ErrCode) {
|
||||||
|
|
||||||
func (sc *serverConn) shutDownIn(d time.Duration) {
|
func (sc *serverConn) shutDownIn(d time.Duration) {
|
||||||
sc.serveG.check()
|
sc.serveG.check()
|
||||||
sc.shutdownTimer = sc.srv.afterFunc(d, sc.onShutdownTimer)
|
sc.shutdownTimer = time.AfterFunc(d, sc.onShutdownTimer)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sc *serverConn) resetStream(se StreamError) {
|
func (sc *serverConn) resetStream(se StreamError) {
|
||||||
|
@ -2118,7 +2101,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error {
|
||||||
// (in Go 1.8), though. That's a more sane option anyway.
|
// (in Go 1.8), though. That's a more sane option anyway.
|
||||||
if sc.hs.ReadTimeout > 0 {
|
if sc.hs.ReadTimeout > 0 {
|
||||||
sc.conn.SetReadDeadline(time.Time{})
|
sc.conn.SetReadDeadline(time.Time{})
|
||||||
st.readDeadline = sc.srv.afterFunc(sc.hs.ReadTimeout, st.onReadTimeout)
|
st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sc.scheduleHandler(id, rw, req, handler)
|
return sc.scheduleHandler(id, rw, req, handler)
|
||||||
|
@ -2216,7 +2199,7 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream
|
||||||
st.flow.add(sc.initialStreamSendWindowSize)
|
st.flow.add(sc.initialStreamSendWindowSize)
|
||||||
st.inflow.init(sc.initialStreamRecvWindowSize)
|
st.inflow.init(sc.initialStreamRecvWindowSize)
|
||||||
if sc.hs.WriteTimeout > 0 {
|
if sc.hs.WriteTimeout > 0 {
|
||||||
st.writeDeadline = sc.srv.afterFunc(sc.hs.WriteTimeout, st.onWriteTimeout)
|
st.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
sc.streams[id] = st
|
sc.streams[id] = st
|
||||||
|
@ -2405,7 +2388,6 @@ func (sc *serverConn) handlerDone() {
|
||||||
|
|
||||||
// Run on its own goroutine.
|
// Run on its own goroutine.
|
||||||
func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) {
|
func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) {
|
||||||
sc.srv.markNewGoroutine()
|
|
||||||
defer sc.sendServeMsg(handlerDoneMsg)
|
defer sc.sendServeMsg(handlerDoneMsg)
|
||||||
didPanic := true
|
didPanic := true
|
||||||
defer func() {
|
defer func() {
|
||||||
|
@ -2454,7 +2436,7 @@ func (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) erro
|
||||||
// waiting for this frame to be written, so an http.Flush mid-handler
|
// waiting for this frame to be written, so an http.Flush mid-handler
|
||||||
// writes out the correct value of keys, before a handler later potentially
|
// writes out the correct value of keys, before a handler later potentially
|
||||||
// mutates it.
|
// mutates it.
|
||||||
errc = errChanPool.Get().(chan error)
|
errc = getErrChan()
|
||||||
}
|
}
|
||||||
if err := sc.writeFrameFromHandler(FrameWriteRequest{
|
if err := sc.writeFrameFromHandler(FrameWriteRequest{
|
||||||
write: headerData,
|
write: headerData,
|
||||||
|
@ -2466,7 +2448,7 @@ func (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) erro
|
||||||
if errc != nil {
|
if errc != nil {
|
||||||
select {
|
select {
|
||||||
case err := <-errc:
|
case err := <-errc:
|
||||||
errChanPool.Put(errc)
|
putErrChan(errc)
|
||||||
return err
|
return err
|
||||||
case <-sc.doneServing:
|
case <-sc.doneServing:
|
||||||
return errClientDisconnected
|
return errClientDisconnected
|
||||||
|
@ -2573,7 +2555,7 @@ func (b *requestBody) Read(p []byte) (n int, err error) {
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
b.sawEOF = true
|
b.sawEOF = true
|
||||||
}
|
}
|
||||||
if b.conn == nil && inTests {
|
if b.conn == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
b.conn.noteBodyReadFromHandler(b.stream, n, err)
|
b.conn.noteBodyReadFromHandler(b.stream, n, err)
|
||||||
|
@ -2702,7 +2684,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {
|
||||||
var date string
|
var date string
|
||||||
if _, ok := rws.snapHeader["Date"]; !ok {
|
if _, ok := rws.snapHeader["Date"]; !ok {
|
||||||
// TODO(bradfitz): be faster here, like net/http? measure.
|
// TODO(bradfitz): be faster here, like net/http? measure.
|
||||||
date = rws.conn.srv.now().UTC().Format(http.TimeFormat)
|
date = time.Now().UTC().Format(http.TimeFormat)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range rws.snapHeader["Trailer"] {
|
for _, v := range rws.snapHeader["Trailer"] {
|
||||||
|
@ -2824,7 +2806,7 @@ func (rws *responseWriterState) promoteUndeclaredTrailers() {
|
||||||
|
|
||||||
func (w *responseWriter) SetReadDeadline(deadline time.Time) error {
|
func (w *responseWriter) SetReadDeadline(deadline time.Time) error {
|
||||||
st := w.rws.stream
|
st := w.rws.stream
|
||||||
if !deadline.IsZero() && deadline.Before(w.rws.conn.srv.now()) {
|
if !deadline.IsZero() && deadline.Before(time.Now()) {
|
||||||
// If we're setting a deadline in the past, reset the stream immediately
|
// If we're setting a deadline in the past, reset the stream immediately
|
||||||
// so writes after SetWriteDeadline returns will fail.
|
// so writes after SetWriteDeadline returns will fail.
|
||||||
st.onReadTimeout()
|
st.onReadTimeout()
|
||||||
|
@ -2840,9 +2822,9 @@ func (w *responseWriter) SetReadDeadline(deadline time.Time) error {
|
||||||
if deadline.IsZero() {
|
if deadline.IsZero() {
|
||||||
st.readDeadline = nil
|
st.readDeadline = nil
|
||||||
} else if st.readDeadline == nil {
|
} else if st.readDeadline == nil {
|
||||||
st.readDeadline = sc.srv.afterFunc(deadline.Sub(sc.srv.now()), st.onReadTimeout)
|
st.readDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onReadTimeout)
|
||||||
} else {
|
} else {
|
||||||
st.readDeadline.Reset(deadline.Sub(sc.srv.now()))
|
st.readDeadline.Reset(deadline.Sub(time.Now()))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
|
@ -2850,7 +2832,7 @@ func (w *responseWriter) SetReadDeadline(deadline time.Time) error {
|
||||||
|
|
||||||
func (w *responseWriter) SetWriteDeadline(deadline time.Time) error {
|
func (w *responseWriter) SetWriteDeadline(deadline time.Time) error {
|
||||||
st := w.rws.stream
|
st := w.rws.stream
|
||||||
if !deadline.IsZero() && deadline.Before(w.rws.conn.srv.now()) {
|
if !deadline.IsZero() && deadline.Before(time.Now()) {
|
||||||
// If we're setting a deadline in the past, reset the stream immediately
|
// If we're setting a deadline in the past, reset the stream immediately
|
||||||
// so writes after SetWriteDeadline returns will fail.
|
// so writes after SetWriteDeadline returns will fail.
|
||||||
st.onWriteTimeout()
|
st.onWriteTimeout()
|
||||||
|
@ -2866,9 +2848,9 @@ func (w *responseWriter) SetWriteDeadline(deadline time.Time) error {
|
||||||
if deadline.IsZero() {
|
if deadline.IsZero() {
|
||||||
st.writeDeadline = nil
|
st.writeDeadline = nil
|
||||||
} else if st.writeDeadline == nil {
|
} else if st.writeDeadline == nil {
|
||||||
st.writeDeadline = sc.srv.afterFunc(deadline.Sub(sc.srv.now()), st.onWriteTimeout)
|
st.writeDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onWriteTimeout)
|
||||||
} else {
|
} else {
|
||||||
st.writeDeadline.Reset(deadline.Sub(sc.srv.now()))
|
st.writeDeadline.Reset(deadline.Sub(time.Now()))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
|
@ -3147,7 +3129,7 @@ func (w *responseWriter) Push(target string, opts *http.PushOptions) error {
|
||||||
method: opts.Method,
|
method: opts.Method,
|
||||||
url: u,
|
url: u,
|
||||||
header: cloneHeader(opts.Header),
|
header: cloneHeader(opts.Header),
|
||||||
done: errChanPool.Get().(chan error),
|
done: getErrChan(),
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
@ -3164,7 +3146,7 @@ func (w *responseWriter) Push(target string, opts *http.PushOptions) error {
|
||||||
case <-st.cw:
|
case <-st.cw:
|
||||||
return errStreamClosed
|
return errStreamClosed
|
||||||
case err := <-msg.done:
|
case err := <-msg.done:
|
||||||
errChanPool.Put(msg.done)
|
putErrChan(msg.done)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
// Copyright 2024 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 http2
|
|
||||||
|
|
||||||
import "time"
|
|
||||||
|
|
||||||
// A timer is a time.Timer, as an interface which can be replaced in tests.
|
|
||||||
type timer = interface {
|
|
||||||
C() <-chan time.Time
|
|
||||||
Reset(d time.Duration) bool
|
|
||||||
Stop() bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// timeTimer adapts a time.Timer to the timer interface.
|
|
||||||
type timeTimer struct {
|
|
||||||
*time.Timer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t timeTimer) C() <-chan time.Time { return t.Timer.C }
|
|
|
@ -193,50 +193,6 @@ type Transport struct {
|
||||||
|
|
||||||
type transportTestHooks struct {
|
type transportTestHooks struct {
|
||||||
newclientconn func(*ClientConn)
|
newclientconn func(*ClientConn)
|
||||||
group synctestGroupInterface
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Transport) markNewGoroutine() {
|
|
||||||
if t != nil && t.transportTestHooks != nil {
|
|
||||||
t.transportTestHooks.group.Join()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Transport) now() time.Time {
|
|
||||||
if t != nil && t.transportTestHooks != nil {
|
|
||||||
return t.transportTestHooks.group.Now()
|
|
||||||
}
|
|
||||||
return time.Now()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Transport) timeSince(when time.Time) time.Duration {
|
|
||||||
if t != nil && t.transportTestHooks != nil {
|
|
||||||
return t.now().Sub(when)
|
|
||||||
}
|
|
||||||
return time.Since(when)
|
|
||||||
}
|
|
||||||
|
|
||||||
// newTimer creates a new time.Timer, or a synthetic timer in tests.
|
|
||||||
func (t *Transport) newTimer(d time.Duration) timer {
|
|
||||||
if t.transportTestHooks != nil {
|
|
||||||
return t.transportTestHooks.group.NewTimer(d)
|
|
||||||
}
|
|
||||||
return timeTimer{time.NewTimer(d)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// afterFunc creates a new time.AfterFunc timer, or a synthetic timer in tests.
|
|
||||||
func (t *Transport) afterFunc(d time.Duration, f func()) timer {
|
|
||||||
if t.transportTestHooks != nil {
|
|
||||||
return t.transportTestHooks.group.AfterFunc(d, f)
|
|
||||||
}
|
|
||||||
return timeTimer{time.AfterFunc(d, f)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Transport) contextWithTimeout(ctx context.Context, d time.Duration) (context.Context, context.CancelFunc) {
|
|
||||||
if t.transportTestHooks != nil {
|
|
||||||
return t.transportTestHooks.group.ContextWithTimeout(ctx, d)
|
|
||||||
}
|
|
||||||
return context.WithTimeout(ctx, d)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Transport) maxHeaderListSize() uint32 {
|
func (t *Transport) maxHeaderListSize() uint32 {
|
||||||
|
@ -366,7 +322,7 @@ type ClientConn struct {
|
||||||
readerErr error // set before readerDone is closed
|
readerErr error // set before readerDone is closed
|
||||||
|
|
||||||
idleTimeout time.Duration // or 0 for never
|
idleTimeout time.Duration // or 0 for never
|
||||||
idleTimer timer
|
idleTimer *time.Timer
|
||||||
|
|
||||||
mu sync.Mutex // guards following
|
mu sync.Mutex // guards following
|
||||||
cond *sync.Cond // hold mu; broadcast on flow/closed changes
|
cond *sync.Cond // hold mu; broadcast on flow/closed changes
|
||||||
|
@ -534,14 +490,12 @@ func (cs *clientStream) closeReqBodyLocked() {
|
||||||
cs.reqBodyClosed = make(chan struct{})
|
cs.reqBodyClosed = make(chan struct{})
|
||||||
reqBodyClosed := cs.reqBodyClosed
|
reqBodyClosed := cs.reqBodyClosed
|
||||||
go func() {
|
go func() {
|
||||||
cs.cc.t.markNewGoroutine()
|
|
||||||
cs.reqBody.Close()
|
cs.reqBody.Close()
|
||||||
close(reqBodyClosed)
|
close(reqBodyClosed)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
type stickyErrWriter struct {
|
type stickyErrWriter struct {
|
||||||
group synctestGroupInterface
|
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
err *error
|
err *error
|
||||||
|
@ -551,7 +505,7 @@ func (sew stickyErrWriter) Write(p []byte) (n int, err error) {
|
||||||
if *sew.err != nil {
|
if *sew.err != nil {
|
||||||
return 0, *sew.err
|
return 0, *sew.err
|
||||||
}
|
}
|
||||||
n, err = writeWithByteTimeout(sew.group, sew.conn, sew.timeout, p)
|
n, err = writeWithByteTimeout(sew.conn, sew.timeout, p)
|
||||||
*sew.err = err
|
*sew.err = err
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
|
@ -650,9 +604,9 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res
|
||||||
backoff := float64(uint(1) << (uint(retry) - 1))
|
backoff := float64(uint(1) << (uint(retry) - 1))
|
||||||
backoff += backoff * (0.1 * mathrand.Float64())
|
backoff += backoff * (0.1 * mathrand.Float64())
|
||||||
d := time.Second * time.Duration(backoff)
|
d := time.Second * time.Duration(backoff)
|
||||||
tm := t.newTimer(d)
|
tm := time.NewTimer(d)
|
||||||
select {
|
select {
|
||||||
case <-tm.C():
|
case <-tm.C:
|
||||||
t.vlogf("RoundTrip retrying after failure: %v", roundTripErr)
|
t.vlogf("RoundTrip retrying after failure: %v", roundTripErr)
|
||||||
continue
|
continue
|
||||||
case <-req.Context().Done():
|
case <-req.Context().Done():
|
||||||
|
@ -699,6 +653,7 @@ var (
|
||||||
errClientConnUnusable = errors.New("http2: client conn not usable")
|
errClientConnUnusable = errors.New("http2: client conn not usable")
|
||||||
errClientConnNotEstablished = errors.New("http2: client conn could not be established")
|
errClientConnNotEstablished = errors.New("http2: client conn could not be established")
|
||||||
errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY")
|
errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY")
|
||||||
|
errClientConnForceClosed = errors.New("http2: client connection force closed via ClientConn.Close")
|
||||||
)
|
)
|
||||||
|
|
||||||
// shouldRetryRequest is called by RoundTrip when a request fails to get
|
// shouldRetryRequest is called by RoundTrip when a request fails to get
|
||||||
|
@ -838,14 +793,11 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
||||||
pingTimeout: conf.PingTimeout,
|
pingTimeout: conf.PingTimeout,
|
||||||
pings: make(map[[8]byte]chan struct{}),
|
pings: make(map[[8]byte]chan struct{}),
|
||||||
reqHeaderMu: make(chan struct{}, 1),
|
reqHeaderMu: make(chan struct{}, 1),
|
||||||
lastActive: t.now(),
|
lastActive: time.Now(),
|
||||||
}
|
}
|
||||||
var group synctestGroupInterface
|
|
||||||
if t.transportTestHooks != nil {
|
if t.transportTestHooks != nil {
|
||||||
t.markNewGoroutine()
|
|
||||||
t.transportTestHooks.newclientconn(cc)
|
t.transportTestHooks.newclientconn(cc)
|
||||||
c = cc.tconn
|
c = cc.tconn
|
||||||
group = t.group
|
|
||||||
}
|
}
|
||||||
if VerboseLogs {
|
if VerboseLogs {
|
||||||
t.vlogf("http2: Transport creating client conn %p to %v", cc, c.RemoteAddr())
|
t.vlogf("http2: Transport creating client conn %p to %v", cc, c.RemoteAddr())
|
||||||
|
@ -857,7 +809,6 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
||||||
// TODO: adjust this writer size to account for frame size +
|
// TODO: adjust this writer size to account for frame size +
|
||||||
// MTU + crypto/tls record padding.
|
// MTU + crypto/tls record padding.
|
||||||
cc.bw = bufio.NewWriter(stickyErrWriter{
|
cc.bw = bufio.NewWriter(stickyErrWriter{
|
||||||
group: group,
|
|
||||||
conn: c,
|
conn: c,
|
||||||
timeout: conf.WriteByteTimeout,
|
timeout: conf.WriteByteTimeout,
|
||||||
err: &cc.werr,
|
err: &cc.werr,
|
||||||
|
@ -906,7 +857,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
||||||
// Start the idle timer after the connection is fully initialized.
|
// Start the idle timer after the connection is fully initialized.
|
||||||
if d := t.idleConnTimeout(); d != 0 {
|
if d := t.idleConnTimeout(); d != 0 {
|
||||||
cc.idleTimeout = d
|
cc.idleTimeout = d
|
||||||
cc.idleTimer = t.afterFunc(d, cc.onIdleTimeout)
|
cc.idleTimer = time.AfterFunc(d, cc.onIdleTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
go cc.readLoop()
|
go cc.readLoop()
|
||||||
|
@ -917,7 +868,7 @@ func (cc *ClientConn) healthCheck() {
|
||||||
pingTimeout := cc.pingTimeout
|
pingTimeout := cc.pingTimeout
|
||||||
// We don't need to periodically ping in the health check, because the readLoop of ClientConn will
|
// We don't need to periodically ping in the health check, because the readLoop of ClientConn will
|
||||||
// trigger the healthCheck again if there is no frame received.
|
// trigger the healthCheck again if there is no frame received.
|
||||||
ctx, cancel := cc.t.contextWithTimeout(context.Background(), pingTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), pingTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
cc.vlogf("http2: Transport sending health check")
|
cc.vlogf("http2: Transport sending health check")
|
||||||
err := cc.Ping(ctx)
|
err := cc.Ping(ctx)
|
||||||
|
@ -1120,7 +1071,7 @@ func (cc *ClientConn) tooIdleLocked() bool {
|
||||||
// times are compared based on their wall time. We don't want
|
// times are compared based on their wall time. We don't want
|
||||||
// to reuse a connection that's been sitting idle during
|
// to reuse a connection that's been sitting idle during
|
||||||
// VM/laptop suspend if monotonic time was also frozen.
|
// VM/laptop suspend if monotonic time was also frozen.
|
||||||
return cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && cc.t.timeSince(cc.lastIdle.Round(0)) > cc.idleTimeout
|
return cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && time.Since(cc.lastIdle.Round(0)) > cc.idleTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
// onIdleTimeout is called from a time.AfterFunc goroutine. It will
|
// onIdleTimeout is called from a time.AfterFunc goroutine. It will
|
||||||
|
@ -1186,7 +1137,6 @@ func (cc *ClientConn) Shutdown(ctx context.Context) error {
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
cancelled := false // guarded by cc.mu
|
cancelled := false // guarded by cc.mu
|
||||||
go func() {
|
go func() {
|
||||||
cc.t.markNewGoroutine()
|
|
||||||
cc.mu.Lock()
|
cc.mu.Lock()
|
||||||
defer cc.mu.Unlock()
|
defer cc.mu.Unlock()
|
||||||
for {
|
for {
|
||||||
|
@ -1257,8 +1207,7 @@ func (cc *ClientConn) closeForError(err error) {
|
||||||
//
|
//
|
||||||
// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.
|
// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.
|
||||||
func (cc *ClientConn) Close() error {
|
func (cc *ClientConn) Close() error {
|
||||||
err := errors.New("http2: client connection force closed via ClientConn.Close")
|
cc.closeForError(errClientConnForceClosed)
|
||||||
cc.closeForError(err)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1427,7 +1376,6 @@ func (cc *ClientConn) roundTrip(req *http.Request, streamf func(*clientStream))
|
||||||
//
|
//
|
||||||
// It sends the request and performs post-request cleanup (closing Request.Body, etc.).
|
// It sends the request and performs post-request cleanup (closing Request.Body, etc.).
|
||||||
func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream)) {
|
func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream)) {
|
||||||
cs.cc.t.markNewGoroutine()
|
|
||||||
err := cs.writeRequest(req, streamf)
|
err := cs.writeRequest(req, streamf)
|
||||||
cs.cleanupWriteRequest(err)
|
cs.cleanupWriteRequest(err)
|
||||||
}
|
}
|
||||||
|
@ -1558,9 +1506,9 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre
|
||||||
var respHeaderTimer <-chan time.Time
|
var respHeaderTimer <-chan time.Time
|
||||||
var respHeaderRecv chan struct{}
|
var respHeaderRecv chan struct{}
|
||||||
if d := cc.responseHeaderTimeout(); d != 0 {
|
if d := cc.responseHeaderTimeout(); d != 0 {
|
||||||
timer := cc.t.newTimer(d)
|
timer := time.NewTimer(d)
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
respHeaderTimer = timer.C()
|
respHeaderTimer = timer.C
|
||||||
respHeaderRecv = cs.respHeaderRecv
|
respHeaderRecv = cs.respHeaderRecv
|
||||||
}
|
}
|
||||||
// Wait until the peer half-closes its end of the stream,
|
// Wait until the peer half-closes its end of the stream,
|
||||||
|
@ -1753,7 +1701,7 @@ func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {
|
||||||
// Return a fatal error which aborts the retry loop.
|
// Return a fatal error which aborts the retry loop.
|
||||||
return errClientConnNotEstablished
|
return errClientConnNotEstablished
|
||||||
}
|
}
|
||||||
cc.lastActive = cc.t.now()
|
cc.lastActive = time.Now()
|
||||||
if cc.closed || !cc.canTakeNewRequestLocked() {
|
if cc.closed || !cc.canTakeNewRequestLocked() {
|
||||||
return errClientConnUnusable
|
return errClientConnUnusable
|
||||||
}
|
}
|
||||||
|
@ -2092,10 +2040,10 @@ func (cc *ClientConn) forgetStreamID(id uint32) {
|
||||||
if len(cc.streams) != slen-1 {
|
if len(cc.streams) != slen-1 {
|
||||||
panic("forgetting unknown stream id")
|
panic("forgetting unknown stream id")
|
||||||
}
|
}
|
||||||
cc.lastActive = cc.t.now()
|
cc.lastActive = time.Now()
|
||||||
if len(cc.streams) == 0 && cc.idleTimer != nil {
|
if len(cc.streams) == 0 && cc.idleTimer != nil {
|
||||||
cc.idleTimer.Reset(cc.idleTimeout)
|
cc.idleTimer.Reset(cc.idleTimeout)
|
||||||
cc.lastIdle = cc.t.now()
|
cc.lastIdle = time.Now()
|
||||||
}
|
}
|
||||||
// Wake up writeRequestBody via clientStream.awaitFlowControl and
|
// Wake up writeRequestBody via clientStream.awaitFlowControl and
|
||||||
// wake up RoundTrip if there is a pending request.
|
// wake up RoundTrip if there is a pending request.
|
||||||
|
@ -2121,7 +2069,6 @@ type clientConnReadLoop struct {
|
||||||
|
|
||||||
// readLoop runs in its own goroutine and reads and dispatches frames.
|
// readLoop runs in its own goroutine and reads and dispatches frames.
|
||||||
func (cc *ClientConn) readLoop() {
|
func (cc *ClientConn) readLoop() {
|
||||||
cc.t.markNewGoroutine()
|
|
||||||
rl := &clientConnReadLoop{cc: cc}
|
rl := &clientConnReadLoop{cc: cc}
|
||||||
defer rl.cleanup()
|
defer rl.cleanup()
|
||||||
cc.readerErr = rl.run()
|
cc.readerErr = rl.run()
|
||||||
|
@ -2188,9 +2135,9 @@ func (rl *clientConnReadLoop) cleanup() {
|
||||||
if cc.idleTimeout > 0 && unusedWaitTime > cc.idleTimeout {
|
if cc.idleTimeout > 0 && unusedWaitTime > cc.idleTimeout {
|
||||||
unusedWaitTime = cc.idleTimeout
|
unusedWaitTime = cc.idleTimeout
|
||||||
}
|
}
|
||||||
idleTime := cc.t.now().Sub(cc.lastActive)
|
idleTime := time.Now().Sub(cc.lastActive)
|
||||||
if atomic.LoadUint32(&cc.atomicReused) == 0 && idleTime < unusedWaitTime && !cc.closedOnIdle {
|
if atomic.LoadUint32(&cc.atomicReused) == 0 && idleTime < unusedWaitTime && !cc.closedOnIdle {
|
||||||
cc.idleTimer = cc.t.afterFunc(unusedWaitTime-idleTime, func() {
|
cc.idleTimer = time.AfterFunc(unusedWaitTime-idleTime, func() {
|
||||||
cc.t.connPool().MarkDead(cc)
|
cc.t.connPool().MarkDead(cc)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
@ -2250,9 +2197,9 @@ func (rl *clientConnReadLoop) run() error {
|
||||||
cc := rl.cc
|
cc := rl.cc
|
||||||
gotSettings := false
|
gotSettings := false
|
||||||
readIdleTimeout := cc.readIdleTimeout
|
readIdleTimeout := cc.readIdleTimeout
|
||||||
var t timer
|
var t *time.Timer
|
||||||
if readIdleTimeout != 0 {
|
if readIdleTimeout != 0 {
|
||||||
t = cc.t.afterFunc(readIdleTimeout, cc.healthCheck)
|
t = time.AfterFunc(readIdleTimeout, cc.healthCheck)
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
f, err := cc.fr.ReadFrame()
|
f, err := cc.fr.ReadFrame()
|
||||||
|
@ -2998,7 +2945,6 @@ func (cc *ClientConn) Ping(ctx context.Context) error {
|
||||||
var pingError error
|
var pingError error
|
||||||
errc := make(chan struct{})
|
errc := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
cc.t.markNewGoroutine()
|
|
||||||
cc.wmu.Lock()
|
cc.wmu.Lock()
|
||||||
defer cc.wmu.Unlock()
|
defer cc.wmu.Unlock()
|
||||||
if pingError = cc.fr.WritePing(false, p); pingError != nil {
|
if pingError = cc.fr.WritePing(false, p); pingError != nil {
|
||||||
|
@ -3228,7 +3174,7 @@ func traceGotConn(req *http.Request, cc *ClientConn, reused bool) {
|
||||||
cc.mu.Lock()
|
cc.mu.Lock()
|
||||||
ci.WasIdle = len(cc.streams) == 0 && reused
|
ci.WasIdle = len(cc.streams) == 0 && reused
|
||||||
if ci.WasIdle && !cc.lastActive.IsZero() {
|
if ci.WasIdle && !cc.lastActive.IsZero() {
|
||||||
ci.IdleTime = cc.t.timeSince(cc.lastActive)
|
ci.IdleTime = time.Since(cc.lastActive)
|
||||||
}
|
}
|
||||||
cc.mu.Unlock()
|
cc.mu.Unlock()
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
// 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.
|
|
||||||
|
|
||||||
//go:build go1.5
|
|
||||||
|
|
||||||
package plan9
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
func fixwd() {
|
|
||||||
syscall.Fixwd()
|
|
||||||
}
|
|
||||||
|
|
||||||
func Getwd() (wd string, err error) {
|
|
||||||
return syscall.Getwd()
|
|
||||||
}
|
|
||||||
|
|
||||||
func Chdir(path string) error {
|
|
||||||
return syscall.Chdir(path)
|
|
||||||
}
|
|
|
@ -2,22 +2,18 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build !go1.5
|
|
||||||
|
|
||||||
package plan9
|
package plan9
|
||||||
|
|
||||||
|
import "syscall"
|
||||||
|
|
||||||
func fixwd() {
|
func fixwd() {
|
||||||
|
syscall.Fixwd()
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getwd() (wd string, err error) {
|
func Getwd() (wd string, err error) {
|
||||||
fd, err := open(".", O_RDONLY)
|
return syscall.Getwd()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer Close(fd)
|
|
||||||
return Fd2path(fd)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Chdir(path string) error {
|
func Chdir(path string) error {
|
||||||
return chdir(path)
|
return syscall.Chdir(path)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,9 +38,7 @@ func SchedSetaffinity(pid int, set *CPUSet) error {
|
||||||
|
|
||||||
// Zero clears the set s, so that it contains no CPUs.
|
// Zero clears the set s, so that it contains no CPUs.
|
||||||
func (s *CPUSet) Zero() {
|
func (s *CPUSet) Zero() {
|
||||||
for i := range s {
|
clear(s[:])
|
||||||
s[i] = 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func cpuBitsIndex(cpu int) int {
|
func cpuBitsIndex(cpu int) int {
|
||||||
|
|
|
@ -629,7 +629,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//sys Kill(pid int, signum syscall.Signal) (err error)
|
//sys Kill(pid int, signum syscall.Signal) (err error)
|
||||||
//sys Lchown(path string, uid int, gid int) (err error)
|
//sys Lchown(path string, uid int, gid int) (err error)
|
||||||
//sys Link(path string, link string) (err error)
|
//sys Link(path string, link string) (err error)
|
||||||
//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten
|
//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_listen
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||||
//sys Madvise(b []byte, advice int) (err error)
|
//sys Madvise(b []byte, advice int) (err error)
|
||||||
//sys Mkdir(path string, mode uint32) (err error)
|
//sys Mkdir(path string, mode uint32) (err error)
|
||||||
|
|
|
@ -72,7 +72,7 @@ import (
|
||||||
//go:cgo_import_dynamic libc_kill kill "libc.so"
|
//go:cgo_import_dynamic libc_kill kill "libc.so"
|
||||||
//go:cgo_import_dynamic libc_lchown lchown "libc.so"
|
//go:cgo_import_dynamic libc_lchown lchown "libc.so"
|
||||||
//go:cgo_import_dynamic libc_link link "libc.so"
|
//go:cgo_import_dynamic libc_link link "libc.so"
|
||||||
//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so"
|
//go:cgo_import_dynamic libc___xnet_listen __xnet_listen "libsocket.so"
|
||||||
//go:cgo_import_dynamic libc_lstat lstat "libc.so"
|
//go:cgo_import_dynamic libc_lstat lstat "libc.so"
|
||||||
//go:cgo_import_dynamic libc_madvise madvise "libc.so"
|
//go:cgo_import_dynamic libc_madvise madvise "libc.so"
|
||||||
//go:cgo_import_dynamic libc_mkdir mkdir "libc.so"
|
//go:cgo_import_dynamic libc_mkdir mkdir "libc.so"
|
||||||
|
@ -221,7 +221,7 @@ import (
|
||||||
//go:linkname procKill libc_kill
|
//go:linkname procKill libc_kill
|
||||||
//go:linkname procLchown libc_lchown
|
//go:linkname procLchown libc_lchown
|
||||||
//go:linkname procLink libc_link
|
//go:linkname procLink libc_link
|
||||||
//go:linkname proc__xnet_llisten libc___xnet_llisten
|
//go:linkname proc__xnet_listen libc___xnet_listen
|
||||||
//go:linkname procLstat libc_lstat
|
//go:linkname procLstat libc_lstat
|
||||||
//go:linkname procMadvise libc_madvise
|
//go:linkname procMadvise libc_madvise
|
||||||
//go:linkname procMkdir libc_mkdir
|
//go:linkname procMkdir libc_mkdir
|
||||||
|
@ -371,7 +371,7 @@ var (
|
||||||
procKill,
|
procKill,
|
||||||
procLchown,
|
procLchown,
|
||||||
procLink,
|
procLink,
|
||||||
proc__xnet_llisten,
|
proc__xnet_listen,
|
||||||
procLstat,
|
procLstat,
|
||||||
procMadvise,
|
procMadvise,
|
||||||
procMkdir,
|
procMkdir,
|
||||||
|
@ -1178,7 +1178,7 @@ func Link(path string, link string) (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 Listen(s int, backlog int) (err error) {
|
func Listen(s int, backlog int) (err error) {
|
||||||
_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
|
_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
|
@ -632,6 +632,8 @@ const (
|
||||||
IFA_FLAGS = 0x8
|
IFA_FLAGS = 0x8
|
||||||
IFA_RT_PRIORITY = 0x9
|
IFA_RT_PRIORITY = 0x9
|
||||||
IFA_TARGET_NETNSID = 0xa
|
IFA_TARGET_NETNSID = 0xa
|
||||||
|
IFAL_LABEL = 0x2
|
||||||
|
IFAL_ADDRESS = 0x1
|
||||||
RT_SCOPE_UNIVERSE = 0x0
|
RT_SCOPE_UNIVERSE = 0x0
|
||||||
RT_SCOPE_SITE = 0xc8
|
RT_SCOPE_SITE = 0xc8
|
||||||
RT_SCOPE_LINK = 0xfd
|
RT_SCOPE_LINK = 0xfd
|
||||||
|
@ -689,6 +691,7 @@ const (
|
||||||
SizeofRtAttr = 0x4
|
SizeofRtAttr = 0x4
|
||||||
SizeofIfInfomsg = 0x10
|
SizeofIfInfomsg = 0x10
|
||||||
SizeofIfAddrmsg = 0x8
|
SizeofIfAddrmsg = 0x8
|
||||||
|
SizeofIfAddrlblmsg = 0xc
|
||||||
SizeofIfaCacheinfo = 0x10
|
SizeofIfaCacheinfo = 0x10
|
||||||
SizeofRtMsg = 0xc
|
SizeofRtMsg = 0xc
|
||||||
SizeofRtNexthop = 0x8
|
SizeofRtNexthop = 0x8
|
||||||
|
@ -740,6 +743,15 @@ type IfAddrmsg struct {
|
||||||
Index uint32
|
Index uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IfAddrlblmsg struct {
|
||||||
|
Family uint8
|
||||||
|
_ uint8
|
||||||
|
Prefixlen uint8
|
||||||
|
Flags uint8
|
||||||
|
Index uint32
|
||||||
|
Seq uint32
|
||||||
|
}
|
||||||
|
|
||||||
type IfaCacheinfo struct {
|
type IfaCacheinfo struct {
|
||||||
Prefered uint32
|
Prefered uint32
|
||||||
Valid uint32
|
Valid uint32
|
||||||
|
@ -3052,6 +3064,23 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
TCA_UNSPEC = 0x0
|
||||||
|
TCA_KIND = 0x1
|
||||||
|
TCA_OPTIONS = 0x2
|
||||||
|
TCA_STATS = 0x3
|
||||||
|
TCA_XSTATS = 0x4
|
||||||
|
TCA_RATE = 0x5
|
||||||
|
TCA_FCNT = 0x6
|
||||||
|
TCA_STATS2 = 0x7
|
||||||
|
TCA_STAB = 0x8
|
||||||
|
TCA_PAD = 0x9
|
||||||
|
TCA_DUMP_INVISIBLE = 0xa
|
||||||
|
TCA_CHAIN = 0xb
|
||||||
|
TCA_HW_OFFLOAD = 0xc
|
||||||
|
TCA_INGRESS_BLOCK = 0xd
|
||||||
|
TCA_EGRESS_BLOCK = 0xe
|
||||||
|
TCA_DUMP_FLAGS = 0xf
|
||||||
|
TCA_EXT_WARN_MSG = 0x10
|
||||||
RTNLGRP_NONE = 0x0
|
RTNLGRP_NONE = 0x0
|
||||||
RTNLGRP_LINK = 0x1
|
RTNLGRP_LINK = 0x1
|
||||||
RTNLGRP_NOTIFY = 0x2
|
RTNLGRP_NOTIFY = 0x2
|
||||||
|
@ -3086,6 +3115,18 @@ const (
|
||||||
RTNLGRP_IPV6_MROUTE_R = 0x1f
|
RTNLGRP_IPV6_MROUTE_R = 0x1f
|
||||||
RTNLGRP_NEXTHOP = 0x20
|
RTNLGRP_NEXTHOP = 0x20
|
||||||
RTNLGRP_BRVLAN = 0x21
|
RTNLGRP_BRVLAN = 0x21
|
||||||
|
RTNLGRP_MCTP_IFADDR = 0x22
|
||||||
|
RTNLGRP_TUNNEL = 0x23
|
||||||
|
RTNLGRP_STATS = 0x24
|
||||||
|
RTNLGRP_IPV4_MCADDR = 0x25
|
||||||
|
RTNLGRP_IPV6_MCADDR = 0x26
|
||||||
|
RTNLGRP_IPV6_ACADDR = 0x27
|
||||||
|
TCA_ROOT_UNSPEC = 0x0
|
||||||
|
TCA_ROOT_TAB = 0x1
|
||||||
|
TCA_ROOT_FLAGS = 0x2
|
||||||
|
TCA_ROOT_COUNT = 0x3
|
||||||
|
TCA_ROOT_TIME_DELTA = 0x4
|
||||||
|
TCA_ROOT_EXT_WARN_MSG = 0x5
|
||||||
)
|
)
|
||||||
|
|
||||||
type CapUserHeader struct {
|
type CapUserHeader struct {
|
||||||
|
|
|
@ -1976,6 +1976,12 @@ const (
|
||||||
SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
|
SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// FILE_ZERO_DATA_INFORMATION from winioctl.h
|
||||||
|
type FileZeroDataInformation struct {
|
||||||
|
FileOffset int64
|
||||||
|
BeyondFinalZero int64
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ComputerNameNetBIOS = 0
|
ComputerNameNetBIOS = 0
|
||||||
ComputerNameDnsHostname = 1
|
ComputerNameDnsHostname = 1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,9 +5,11 @@
|
||||||
package packages
|
package packages
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"cmp"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"iter"
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Visit visits all the packages in the import graph whose roots are
|
// Visit visits all the packages in the import graph whose roots are
|
||||||
|
@ -16,6 +18,20 @@ import (
|
||||||
// package's dependencies have been visited (postorder).
|
// package's dependencies have been visited (postorder).
|
||||||
// The boolean result of pre(pkg) determines whether
|
// The boolean result of pre(pkg) determines whether
|
||||||
// the imports of package pkg are visited.
|
// the imports of package pkg are visited.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
//
|
||||||
|
// pkgs, err := Load(...)
|
||||||
|
// if err != nil { ... }
|
||||||
|
// Visit(pkgs, nil, func(pkg *Package) {
|
||||||
|
// log.Println(pkg)
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
// In most cases, it is more convenient to use [Postorder]:
|
||||||
|
//
|
||||||
|
// for pkg := range Postorder(pkgs) {
|
||||||
|
// log.Println(pkg)
|
||||||
|
// }
|
||||||
func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {
|
func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {
|
||||||
seen := make(map[*Package]bool)
|
seen := make(map[*Package]bool)
|
||||||
var visit func(*Package)
|
var visit func(*Package)
|
||||||
|
@ -24,13 +40,8 @@ func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {
|
||||||
seen[pkg] = true
|
seen[pkg] = true
|
||||||
|
|
||||||
if pre == nil || pre(pkg) {
|
if pre == nil || pre(pkg) {
|
||||||
paths := make([]string, 0, len(pkg.Imports))
|
for _, imp := range sorted(pkg.Imports) { // for determinism
|
||||||
for path := range pkg.Imports {
|
visit(imp)
|
||||||
paths = append(paths, path)
|
|
||||||
}
|
|
||||||
sort.Strings(paths) // Imports is a map, this makes visit stable
|
|
||||||
for _, path := range paths {
|
|
||||||
visit(pkg.Imports[path])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +61,7 @@ func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {
|
||||||
func PrintErrors(pkgs []*Package) int {
|
func PrintErrors(pkgs []*Package) int {
|
||||||
var n int
|
var n int
|
||||||
errModules := make(map[*Module]bool)
|
errModules := make(map[*Module]bool)
|
||||||
Visit(pkgs, nil, func(pkg *Package) {
|
for pkg := range Postorder(pkgs) {
|
||||||
for _, err := range pkg.Errors {
|
for _, err := range pkg.Errors {
|
||||||
fmt.Fprintln(os.Stderr, err)
|
fmt.Fprintln(os.Stderr, err)
|
||||||
n++
|
n++
|
||||||
|
@ -63,6 +74,60 @@ func PrintErrors(pkgs []*Package) int {
|
||||||
fmt.Fprintln(os.Stderr, mod.Error.Err)
|
fmt.Fprintln(os.Stderr, mod.Error.Err)
|
||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Postorder returns an iterator over the the packages in
|
||||||
|
// the import graph whose roots are pkg.
|
||||||
|
// Packages are enumerated in dependencies-first order.
|
||||||
|
func Postorder(pkgs []*Package) iter.Seq[*Package] {
|
||||||
|
return func(yield func(*Package) bool) {
|
||||||
|
seen := make(map[*Package]bool)
|
||||||
|
var visit func(*Package) bool
|
||||||
|
visit = func(pkg *Package) bool {
|
||||||
|
if !seen[pkg] {
|
||||||
|
seen[pkg] = true
|
||||||
|
for _, imp := range sorted(pkg.Imports) { // for determinism
|
||||||
|
if !visit(imp) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !yield(pkg) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, pkg := range pkgs {
|
||||||
|
if !visit(pkg) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- copied from golang.org.x/tools/gopls/internal/util/moremaps --
|
||||||
|
|
||||||
|
// sorted returns an iterator over the entries of m in key order.
|
||||||
|
func sorted[M ~map[K]V, K cmp.Ordered, V any](m M) iter.Seq2[K, V] {
|
||||||
|
// TODO(adonovan): use maps.Sorted if proposal #68598 is accepted.
|
||||||
|
return func(yield func(K, V) bool) {
|
||||||
|
keys := keySlice(m)
|
||||||
|
slices.Sort(keys)
|
||||||
|
for _, k := range keys {
|
||||||
|
if !yield(k, m[k]) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeySlice returns the keys of the map M, like slices.Collect(maps.Keys(m)).
|
||||||
|
func keySlice[M ~map[K]V, K comparable, V any](m M) []K {
|
||||||
|
r := make([]K, 0, len(m))
|
||||||
|
for k := range m {
|
||||||
|
r = append(r, k)
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
|
@ -698,7 +698,10 @@ func Object(pkg *types.Package, p Path) (types.Object, error) {
|
||||||
} else if false && aliases.Enabled() {
|
} else if false && aliases.Enabled() {
|
||||||
// The Enabled check is too expensive, so for now we
|
// The Enabled check is too expensive, so for now we
|
||||||
// simply assume that aliases are not enabled.
|
// simply assume that aliases are not enabled.
|
||||||
// TODO(adonovan): replace with "if true {" when go1.24 is assured.
|
//
|
||||||
|
// Now that go1.24 is assured, we should be able to
|
||||||
|
// replace this with "if true {", but it causes tests
|
||||||
|
// to fail. TODO(adonovan): investigate.
|
||||||
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want alias)", code, t, t)
|
return nil, fmt.Errorf("cannot apply %q to %s (got %T, want alias)", code, t, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/types"
|
"go/types"
|
||||||
"hash/maphash"
|
"hash/maphash"
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"golang.org/x/tools/internal/typeparams"
|
"golang.org/x/tools/internal/typeparams"
|
||||||
)
|
)
|
||||||
|
@ -380,22 +379,8 @@ var theSeed = maphash.MakeSeed()
|
||||||
func (hasher) hashTypeName(tname *types.TypeName) uint32 {
|
func (hasher) hashTypeName(tname *types.TypeName) uint32 {
|
||||||
// Since types.Identical uses == to compare TypeNames,
|
// Since types.Identical uses == to compare TypeNames,
|
||||||
// the Hash function uses maphash.Comparable.
|
// the Hash function uses maphash.Comparable.
|
||||||
// TODO(adonovan): or will, when it becomes available in go1.24.
|
hash := maphash.Comparable(theSeed, tname)
|
||||||
// In the meantime we use the pointer's numeric value.
|
return uint32(hash ^ (hash >> 32))
|
||||||
//
|
|
||||||
// hash := maphash.Comparable(theSeed, tname)
|
|
||||||
//
|
|
||||||
// (Another approach would be to hash the name and package
|
|
||||||
// path, and whether or not it is a package-level typename. It
|
|
||||||
// is rare for a package to define multiple local types with
|
|
||||||
// the same name.)
|
|
||||||
ptr := uintptr(unsafe.Pointer(tname))
|
|
||||||
if unsafe.Sizeof(ptr) == 8 {
|
|
||||||
hash := uint64(ptr)
|
|
||||||
return uint32(hash ^ (hash >> 32))
|
|
||||||
} else {
|
|
||||||
return uint32(ptr)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// shallowHash computes a hash of t without looking at any of its
|
// shallowHash computes a hash of t without looking at any of its
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
// Copyright 2024 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build go1.22 && !go1.24
|
|
||||||
|
|
||||||
package gcimporter
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go/token"
|
|
||||||
"go/types"
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO(rfindley): delete this workaround once go1.24 is assured.
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
// Update markBlack so that it correctly sets the color
|
|
||||||
// of imported TypeNames.
|
|
||||||
//
|
|
||||||
// See the doc comment for markBlack for details.
|
|
||||||
|
|
||||||
type color uint32
|
|
||||||
const (
|
|
||||||
white color = iota
|
|
||||||
black
|
|
||||||
grey
|
|
||||||
)
|
|
||||||
type object struct {
|
|
||||||
_ *types.Scope
|
|
||||||
_ token.Pos
|
|
||||||
_ *types.Package
|
|
||||||
_ string
|
|
||||||
_ types.Type
|
|
||||||
_ uint32
|
|
||||||
color_ color
|
|
||||||
_ token.Pos
|
|
||||||
}
|
|
||||||
type typeName struct {
|
|
||||||
object
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the size of types.TypeName changes, this will fail to compile.
|
|
||||||
const delta = int64(unsafe.Sizeof(typeName{})) - int64(unsafe.Sizeof(types.TypeName{}))
|
|
||||||
var _ [-delta * delta]int
|
|
||||||
|
|
||||||
markBlack = func(obj *types.TypeName) {
|
|
||||||
type uP = unsafe.Pointer
|
|
||||||
var ptr *typeName
|
|
||||||
*(*uP)(uP(&ptr)) = uP(obj)
|
|
||||||
ptr.color_ = black
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,348 +12,354 @@ type pkginfo struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var deps = [...]pkginfo{
|
var deps = [...]pkginfo{
|
||||||
{"archive/tar", "\x03j\x03E5\x01\v\x01#\x01\x01\x02\x05\n\x02\x01\x02\x02\v"},
|
{"archive/tar", "\x03k\x03E;\x01\n\x01$\x01\x01\x02\x05\b\x02\x01\x02\x02\f"},
|
||||||
{"archive/zip", "\x02\x04`\a\x16\x0205\x01+\x05\x01\x11\x03\x02\r\x04"},
|
{"archive/zip", "\x02\x04a\a\x03\x12\x021;\x01+\x05\x01\x0f\x03\x02\x0e\x04"},
|
||||||
{"bufio", "\x03j}F\x13"},
|
{"bufio", "\x03k\x83\x01D\x14"},
|
||||||
{"bytes", "m+R\x03\fH\x02\x02"},
|
{"bytes", "n*Y\x03\fG\x02\x02"},
|
||||||
{"cmp", ""},
|
{"cmp", ""},
|
||||||
{"compress/bzip2", "\x02\x02\xe6\x01C"},
|
{"compress/bzip2", "\x02\x02\xed\x01A"},
|
||||||
{"compress/flate", "\x02k\x03z\r\x025\x01\x03"},
|
{"compress/flate", "\x02l\x03\x80\x01\f\x033\x01\x03"},
|
||||||
{"compress/gzip", "\x02\x04`\a\x03\x15eU"},
|
{"compress/gzip", "\x02\x04a\a\x03\x14lT"},
|
||||||
{"compress/lzw", "\x02k\x03z"},
|
{"compress/lzw", "\x02l\x03\x80\x01"},
|
||||||
{"compress/zlib", "\x02\x04`\a\x03\x13\x01f"},
|
{"compress/zlib", "\x02\x04a\a\x03\x12\x01m"},
|
||||||
{"container/heap", "\xae\x02"},
|
{"container/heap", "\xb3\x02"},
|
||||||
{"container/list", ""},
|
{"container/list", ""},
|
||||||
{"container/ring", ""},
|
{"container/ring", ""},
|
||||||
{"context", "m\\i\x01\f"},
|
{"context", "n\\m\x01\r"},
|
||||||
{"crypto", "\x83\x01gE"},
|
{"crypto", "\x83\x01nC"},
|
||||||
{"crypto/aes", "\x10\n\a\x8e\x02"},
|
{"crypto/aes", "\x10\n\a\x93\x02"},
|
||||||
{"crypto/cipher", "\x03\x1e\x01\x01\x1d\x11\x1c,Q"},
|
{"crypto/cipher", "\x03\x1e\x01\x01\x1e\x11\x1c+X"},
|
||||||
{"crypto/des", "\x10\x13\x1d-,\x96\x01\x03"},
|
{"crypto/des", "\x10\x13\x1e-+\x9b\x01\x03"},
|
||||||
{"crypto/dsa", "@\x04)}\x0e"},
|
{"crypto/dsa", "A\x04)\x83\x01\r"},
|
||||||
{"crypto/ecdh", "\x03\v\f\x0e\x04\x14\x04\r\x1c}"},
|
{"crypto/ecdh", "\x03\v\f\x0e\x04\x15\x04\r\x1c\x83\x01"},
|
||||||
{"crypto/ecdsa", "\x0e\x05\x03\x04\x01\x0e\x16\x01\x04\f\x01\x1c}\x0e\x04L\x01"},
|
{"crypto/ecdsa", "\x0e\x05\x03\x04\x01\x0e\a\v\x05\x01\x04\f\x01\x1c\x83\x01\r\x05K\x01"},
|
||||||
{"crypto/ed25519", "\x0e\x1c\x16\n\a\x1c}E"},
|
{"crypto/ed25519", "\x0e\x1c\x11\x06\n\a\x1c\x83\x01C"},
|
||||||
{"crypto/elliptic", "0=}\x0e:"},
|
{"crypto/elliptic", "0>\x83\x01\r9"},
|
||||||
{"crypto/fips140", " \x05\x90\x01"},
|
{"crypto/fips140", " \x05"},
|
||||||
{"crypto/hkdf", "-\x12\x01-\x16"},
|
{"crypto/hkdf", "-\x13\x01-\x15"},
|
||||||
{"crypto/hmac", "\x1a\x14\x11\x01\x112"},
|
{"crypto/hmac", "\x1a\x14\x12\x01\x111"},
|
||||||
{"crypto/internal/boring", "\x0e\x02\rf"},
|
{"crypto/internal/boring", "\x0e\x02\rf"},
|
||||||
{"crypto/internal/boring/bbig", "\x1a\xde\x01M"},
|
{"crypto/internal/boring/bbig", "\x1a\xe4\x01M"},
|
||||||
{"crypto/internal/boring/bcache", "\xb3\x02\x12"},
|
{"crypto/internal/boring/bcache", "\xb8\x02\x13"},
|
||||||
{"crypto/internal/boring/sig", ""},
|
{"crypto/internal/boring/sig", ""},
|
||||||
{"crypto/internal/cryptotest", "\x03\r\n)\x0e\x19\x06\x13\x12#\a\t\x11\x11\x11\x1b\x01\f\r\x05\n"},
|
{"crypto/internal/cryptotest", "\x03\r\n\x06$\x0e\x19\x06\x12\x12 \x04\a\t\x16\x01\x11\x11\x1b\x01\a\x05\b\x03\x05\v"},
|
||||||
{"crypto/internal/entropy", "E"},
|
{"crypto/internal/entropy", "F"},
|
||||||
{"crypto/internal/fips140", ">/}9\r\x15"},
|
{"crypto/internal/fips140", "?/\x15\xa7\x01\v\x16"},
|
||||||
{"crypto/internal/fips140/aes", "\x03\x1d\x03\x02\x13\x04\x01\x01\x05*\x8c\x016"},
|
{"crypto/internal/fips140/aes", "\x03\x1d\x03\x02\x13\x05\x01\x01\x05*\x92\x014"},
|
||||||
{"crypto/internal/fips140/aes/gcm", " \x01\x02\x02\x02\x11\x04\x01\x06*\x8a\x01"},
|
{"crypto/internal/fips140/aes/gcm", " \x01\x02\x02\x02\x11\x05\x01\x06*\x8f\x01"},
|
||||||
{"crypto/internal/fips140/alias", "\xc5\x02"},
|
{"crypto/internal/fips140/alias", "\xcb\x02"},
|
||||||
{"crypto/internal/fips140/bigmod", "%\x17\x01\x06*\x8c\x01"},
|
{"crypto/internal/fips140/bigmod", "%\x18\x01\x06*\x92\x01"},
|
||||||
{"crypto/internal/fips140/check", " \x0e\x06\b\x02\xac\x01["},
|
{"crypto/internal/fips140/check", " \x0e\x06\t\x02\xb2\x01Z"},
|
||||||
{"crypto/internal/fips140/check/checktest", "%\xfe\x01\""},
|
{"crypto/internal/fips140/check/checktest", "%\x85\x02!"},
|
||||||
{"crypto/internal/fips140/drbg", "\x03\x1c\x01\x01\x04\x13\x04\b\x01(}\x0f9"},
|
{"crypto/internal/fips140/drbg", "\x03\x1c\x01\x01\x04\x13\x05\b\x01(\x83\x01\x0f7"},
|
||||||
{"crypto/internal/fips140/ecdh", "\x03\x1d\x05\x02\t\f1}\x0f9"},
|
{"crypto/internal/fips140/ecdh", "\x03\x1d\x05\x02\t\r1\x83\x01\x0f7"},
|
||||||
{"crypto/internal/fips140/ecdsa", "\x03\x1d\x04\x01\x02\a\x02\x067}H"},
|
{"crypto/internal/fips140/ecdsa", "\x03\x1d\x04\x01\x02\a\x02\x068\x15nF"},
|
||||||
{"crypto/internal/fips140/ed25519", "\x03\x1d\x05\x02\x04\v7\xc2\x01\x03"},
|
{"crypto/internal/fips140/ed25519", "\x03\x1d\x05\x02\x04\v8\xc6\x01\x03"},
|
||||||
{"crypto/internal/fips140/edwards25519", "%\a\f\x041\x8c\x019"},
|
{"crypto/internal/fips140/edwards25519", "%\a\f\x051\x92\x017"},
|
||||||
{"crypto/internal/fips140/edwards25519/field", "%\x13\x041\x8c\x01"},
|
{"crypto/internal/fips140/edwards25519/field", "%\x13\x051\x92\x01"},
|
||||||
{"crypto/internal/fips140/hkdf", "\x03\x1d\x05\t\x069"},
|
{"crypto/internal/fips140/hkdf", "\x03\x1d\x05\t\x06:\x15"},
|
||||||
{"crypto/internal/fips140/hmac", "\x03\x1d\x14\x01\x017"},
|
{"crypto/internal/fips140/hmac", "\x03\x1d\x14\x01\x018\x15"},
|
||||||
{"crypto/internal/fips140/mlkem", "\x03\x1d\x05\x02\x0e\x03\x041"},
|
{"crypto/internal/fips140/mlkem", "\x03\x1d\x05\x02\x0e\x03\x051"},
|
||||||
{"crypto/internal/fips140/nistec", "%\f\a\x041\x8c\x01*\x0f\x13"},
|
{"crypto/internal/fips140/nistec", "%\f\a\x051\x92\x01*\r\x14"},
|
||||||
{"crypto/internal/fips140/nistec/fiat", "%\x135\x8c\x01"},
|
{"crypto/internal/fips140/nistec/fiat", "%\x136\x92\x01"},
|
||||||
{"crypto/internal/fips140/pbkdf2", "\x03\x1d\x05\t\x069"},
|
{"crypto/internal/fips140/pbkdf2", "\x03\x1d\x05\t\x06:\x15"},
|
||||||
{"crypto/internal/fips140/rsa", "\x03\x1d\x04\x01\x02\r\x01\x01\x025}H"},
|
{"crypto/internal/fips140/rsa", "\x03\x1d\x04\x01\x02\r\x01\x01\x026\x15nF"},
|
||||||
{"crypto/internal/fips140/sha256", "\x03\x1d\x1c\x01\x06*\x8c\x01"},
|
{"crypto/internal/fips140/sha256", "\x03\x1d\x1d\x01\x06*\x15}"},
|
||||||
{"crypto/internal/fips140/sha3", "\x03\x1d\x18\x04\x010\x8c\x01L"},
|
{"crypto/internal/fips140/sha3", "\x03\x1d\x18\x05\x010\x92\x01K"},
|
||||||
{"crypto/internal/fips140/sha512", "\x03\x1d\x1c\x01\x06*\x8c\x01"},
|
{"crypto/internal/fips140/sha512", "\x03\x1d\x1d\x01\x06*\x15}"},
|
||||||
{"crypto/internal/fips140/ssh", " \x05"},
|
{"crypto/internal/fips140/ssh", "%^"},
|
||||||
{"crypto/internal/fips140/subtle", "#"},
|
{"crypto/internal/fips140/subtle", "#\x1a\xc3\x01"},
|
||||||
{"crypto/internal/fips140/tls12", "\x03\x1d\x05\t\x06\x027"},
|
{"crypto/internal/fips140/tls12", "\x03\x1d\x05\t\x06\x028\x15"},
|
||||||
{"crypto/internal/fips140/tls13", "\x03\x1d\x05\b\a\b1"},
|
{"crypto/internal/fips140/tls13", "\x03\x1d\x05\b\a\t1\x15"},
|
||||||
|
{"crypto/internal/fips140cache", "\xaa\x02\r&"},
|
||||||
{"crypto/internal/fips140deps", ""},
|
{"crypto/internal/fips140deps", ""},
|
||||||
{"crypto/internal/fips140deps/byteorder", "\x99\x01"},
|
{"crypto/internal/fips140deps/byteorder", "\x99\x01"},
|
||||||
{"crypto/internal/fips140deps/cpu", "\xad\x01\a"},
|
{"crypto/internal/fips140deps/cpu", "\xae\x01\a"},
|
||||||
{"crypto/internal/fips140deps/godebug", "\xb5\x01"},
|
{"crypto/internal/fips140deps/godebug", "\xb6\x01"},
|
||||||
{"crypto/internal/fips140hash", "5\x1a4\xc2\x01"},
|
{"crypto/internal/fips140hash", "5\x1b3\xc8\x01"},
|
||||||
{"crypto/internal/fips140only", "'\r\x01\x01M25"},
|
{"crypto/internal/fips140only", "'\r\x01\x01M3;"},
|
||||||
{"crypto/internal/fips140test", ""},
|
{"crypto/internal/fips140test", ""},
|
||||||
{"crypto/internal/hpke", "\x0e\x01\x01\x03\x1a\x1d#,`N"},
|
{"crypto/internal/hpke", "\x0e\x01\x01\x03\x053#+gM"},
|
||||||
{"crypto/internal/impl", "\xb0\x02"},
|
{"crypto/internal/impl", "\xb5\x02"},
|
||||||
{"crypto/internal/randutil", "\xea\x01\x12"},
|
{"crypto/internal/randutil", "\xf1\x01\x12"},
|
||||||
{"crypto/internal/sysrand", "mi!\x1f\r\x0f\x01\x01\v\x06"},
|
{"crypto/internal/sysrand", "nn! \r\r\x01\x01\f\x06"},
|
||||||
{"crypto/internal/sysrand/internal/seccomp", "m"},
|
{"crypto/internal/sysrand/internal/seccomp", "n"},
|
||||||
{"crypto/md5", "\x0e2-\x16\x16`"},
|
{"crypto/md5", "\x0e3-\x15\x16g"},
|
||||||
{"crypto/mlkem", "/"},
|
{"crypto/mlkem", "/"},
|
||||||
{"crypto/pbkdf2", "2\r\x01-\x16"},
|
{"crypto/pbkdf2", "2\x0e\x01-\x15"},
|
||||||
{"crypto/rand", "\x1a\x06\a\x19\x04\x01(}\x0eM"},
|
{"crypto/rand", "\x1a\x06\a\x1a\x04\x01(\x83\x01\rM"},
|
||||||
{"crypto/rc4", "#\x1d-\xc2\x01"},
|
{"crypto/rc4", "#\x1e-\xc6\x01"},
|
||||||
{"crypto/rsa", "\x0e\f\x01\t\x0f\f\x01\x04\x06\a\x1c\x03\x1325\r\x01"},
|
{"crypto/rsa", "\x0e\f\x01\t\x0f\r\x01\x04\x06\a\x1c\x03\x123;\f\x01"},
|
||||||
{"crypto/sha1", "\x0e\f&-\x16\x16\x14L"},
|
{"crypto/sha1", "\x0e\f'\x03*\x15\x16\x15R"},
|
||||||
{"crypto/sha256", "\x0e\f\x1aO"},
|
{"crypto/sha256", "\x0e\f\x1aO"},
|
||||||
{"crypto/sha3", "\x0e'N\xc2\x01"},
|
{"crypto/sha3", "\x0e'N\xc8\x01"},
|
||||||
{"crypto/sha512", "\x0e\f\x1cM"},
|
{"crypto/sha512", "\x0e\f\x1cM"},
|
||||||
{"crypto/subtle", "8\x96\x01U"},
|
{"crypto/subtle", "8\x9b\x01W"},
|
||||||
{"crypto/tls", "\x03\b\x02\x01\x01\x01\x01\x02\x01\x01\x01\x03\x01\a\x01\v\x02\n\x01\b\x05\x03\x01\x01\x01\x01\x02\x01\x02\x01\x17\x02\x03\x13\x16\x14\b5\x16\x16\r\n\x01\x01\x01\x02\x01\f\x06\x02\x01"},
|
{"crypto/tls", "\x03\b\x02\x01\x01\x01\x01\x02\x01\x01\x01\x02\x01\x01\a\x01\r\n\x01\t\x05\x03\x01\x01\x01\x01\x02\x01\x02\x01\x17\x02\x03\x12\x16\x15\b;\x16\x16\r\b\x01\x01\x01\x02\x01\r\x06\x02\x01\x0f"},
|
||||||
{"crypto/tls/internal/fips140tls", " \x93\x02"},
|
{"crypto/tls/internal/fips140tls", "\x17\xa1\x02"},
|
||||||
{"crypto/x509", "\x03\v\x01\x01\x01\x01\x01\x01\x01\x011\x03\x02\x01\x01\x02\x05\x0e\x06\x02\x02\x03E\x032\x01\x02\t\x01\x01\x01\a\x10\x05\x01\x06\x02\x05\f\x01\x02\r\x02\x01\x01\x02\x03\x01"},
|
{"crypto/x509", "\x03\v\x01\x01\x01\x01\x01\x01\x01\x012\x05\x01\x01\x02\x05\x0e\x06\x02\x02\x03E\x038\x01\x02\b\x01\x01\x02\a\x10\x05\x01\x06\x02\x05\n\x01\x02\x0e\x02\x01\x01\x02\x03\x01"},
|
||||||
{"crypto/x509/pkix", "c\x06\a\x88\x01G"},
|
{"crypto/x509/pkix", "d\x06\a\x8d\x01G"},
|
||||||
{"database/sql", "\x03\nJ\x16\x03z\f\x06\"\x05\n\x02\x03\x01\f\x02\x02\x02"},
|
{"database/sql", "\x03\nK\x16\x03\x80\x01\v\a\"\x05\b\x02\x03\x01\r\x02\x02\x02"},
|
||||||
{"database/sql/driver", "\r`\x03\xae\x01\x11\x10"},
|
{"database/sql/driver", "\ra\x03\xb4\x01\x0f\x11"},
|
||||||
{"debug/buildinfo", "\x03W\x02\x01\x01\b\a\x03`\x18\x02\x01+\x0f "},
|
{"debug/buildinfo", "\x03X\x02\x01\x01\b\a\x03e\x19\x02\x01+\x0f\x1f"},
|
||||||
{"debug/dwarf", "\x03c\a\x03z1\x13\x01\x01"},
|
{"debug/dwarf", "\x03d\a\x03\x80\x011\x11\x01\x01"},
|
||||||
{"debug/elf", "\x03\x06P\r\a\x03`\x19\x01,\x19\x01\x15"},
|
{"debug/elf", "\x03\x06Q\r\a\x03e\x1a\x01,\x17\x01\x16"},
|
||||||
{"debug/gosym", "\x03c\n\xbe\x01\x01\x01\x02"},
|
{"debug/gosym", "\x03d\n\xc2\x01\x01\x01\x02"},
|
||||||
{"debug/macho", "\x03\x06P\r\n`\x1a,\x19\x01"},
|
{"debug/macho", "\x03\x06Q\r\ne\x1b,\x17\x01"},
|
||||||
{"debug/pe", "\x03\x06P\r\a\x03`\x1a,\x19\x01\x15"},
|
{"debug/pe", "\x03\x06Q\r\a\x03e\x1b,\x17\x01\x16"},
|
||||||
{"debug/plan9obj", "f\a\x03`\x1a,"},
|
{"debug/plan9obj", "g\a\x03e\x1b,"},
|
||||||
{"embed", "m+:\x18\x01T"},
|
{"embed", "n*@\x19\x01S"},
|
||||||
{"embed/internal/embedtest", ""},
|
{"embed/internal/embedtest", ""},
|
||||||
{"encoding", ""},
|
{"encoding", ""},
|
||||||
{"encoding/ascii85", "\xea\x01E"},
|
{"encoding/ascii85", "\xf1\x01C"},
|
||||||
{"encoding/asn1", "\x03j\x03\x87\x01\x01&\x0f\x02\x01\x0f\x03\x01"},
|
{"encoding/asn1", "\x03k\x03\x8c\x01\x01'\r\x02\x01\x10\x03\x01"},
|
||||||
{"encoding/base32", "\xea\x01C\x02"},
|
{"encoding/base32", "\xf1\x01A\x02"},
|
||||||
{"encoding/base64", "\x99\x01QC\x02"},
|
{"encoding/base64", "\x99\x01XA\x02"},
|
||||||
{"encoding/binary", "m}\r'\x0f\x05"},
|
{"encoding/binary", "n\x83\x01\f(\r\x05"},
|
||||||
{"encoding/csv", "\x02\x01j\x03zF\x11\x02"},
|
{"encoding/csv", "\x02\x01k\x03\x80\x01D\x12\x02"},
|
||||||
{"encoding/gob", "\x02_\x05\a\x03`\x1a\f\x01\x02\x1d\b\x14\x01\x0e\x02"},
|
{"encoding/gob", "\x02`\x05\a\x03e\x1b\v\x01\x03\x1d\b\x12\x01\x0f\x02"},
|
||||||
{"encoding/hex", "m\x03zC\x03"},
|
{"encoding/hex", "n\x03\x80\x01A\x03"},
|
||||||
{"encoding/json", "\x03\x01]\x04\b\x03z\r'\x0f\x02\x01\x02\x0f\x01\x01\x02"},
|
{"encoding/json", "\x03\x01^\x04\b\x03\x80\x01\f(\r\x02\x01\x02\x10\x01\x01\x02"},
|
||||||
{"encoding/pem", "\x03b\b}C\x03"},
|
{"encoding/pem", "\x03c\b\x83\x01A\x03"},
|
||||||
{"encoding/xml", "\x02\x01^\f\x03z4\x05\f\x01\x02\x0f\x02"},
|
{"encoding/xml", "\x02\x01_\f\x03\x80\x014\x05\n\x01\x02\x10\x02"},
|
||||||
{"errors", "\xc9\x01|"},
|
{"errors", "\xca\x01\x81\x01"},
|
||||||
{"expvar", "jK9\t\n\x15\r\n\x02\x03\x01\x10"},
|
{"expvar", "kK?\b\v\x15\r\b\x02\x03\x01\x11"},
|
||||||
{"flag", "a\f\x03z,\b\x05\n\x02\x01\x0f"},
|
{"flag", "b\f\x03\x80\x01,\b\x05\b\x02\x01\x10"},
|
||||||
{"fmt", "mE8\r\x1f\b\x0f\x02\x03\x11"},
|
{"fmt", "nE>\f \b\r\x02\x03\x12"},
|
||||||
{"go/ast", "\x03\x01l\x0f\x01j\x03)\b\x0f\x02\x01"},
|
{"go/ast", "\x03\x01m\x0e\x01q\x03)\b\r\x02\x01"},
|
||||||
{"go/ast/internal/tests", ""},
|
{"go/build", "\x02\x01k\x03\x01\x02\x02\a\x02\x01\x17\x1f\x04\x02\t\x19\x13\x01+\x01\x04\x01\a\b\x02\x01\x12\x02\x02"},
|
||||||
{"go/build", "\x02\x01j\x03\x01\x03\x02\a\x02\x01\x17\x1e\x04\x02\t\x14\x12\x01+\x01\x04\x01\a\n\x02\x01\x11\x02\x02"},
|
{"go/build/constraint", "n\xc6\x01\x01\x12\x02"},
|
||||||
{"go/build/constraint", "m\xc2\x01\x01\x11\x02"},
|
{"go/constant", "q\x0f}\x01\x024\x01\x02\x12"},
|
||||||
{"go/constant", "p\x10w\x01\x016\x01\x02\x11"},
|
{"go/doc", "\x04m\x01\x05\t>31\x10\x02\x01\x12\x02"},
|
||||||
{"go/doc", "\x04l\x01\x06\t=-1\x12\x02\x01\x11\x02"},
|
{"go/doc/comment", "\x03n\xc1\x01\x01\x01\x01\x12\x02"},
|
||||||
{"go/doc/comment", "\x03m\xbd\x01\x01\x01\x01\x11\x02"},
|
{"go/format", "\x03n\x01\v\x01\x02qD"},
|
||||||
{"go/format", "\x03m\x01\f\x01\x02jF"},
|
{"go/importer", "s\a\x01\x01\x04\x01p9"},
|
||||||
{"go/importer", "s\a\x01\x01\x04\x01i9"},
|
{"go/internal/gccgoimporter", "\x02\x01X\x13\x03\x04\v\x01n\x02,\x01\x05\x11\x01\f\b"},
|
||||||
{"go/internal/gccgoimporter", "\x02\x01W\x13\x03\x05\v\x01g\x02,\x01\x05\x13\x01\v\b"},
|
{"go/internal/gcimporter", "\x02o\x0f\x010\x05\x0e-,\x15\x03\x02"},
|
||||||
{"go/internal/gcimporter", "\x02n\x10\x01/\x05\x0e',\x17\x03\x02"},
|
{"go/internal/srcimporter", "q\x01\x01\n\x03\x01p,\x01\x05\x12\x02\x14"},
|
||||||
{"go/internal/srcimporter", "p\x01\x02\n\x03\x01i,\x01\x05\x14\x02\x13"},
|
{"go/parser", "\x03k\x03\x01\x02\v\x01q\x01+\x06\x12"},
|
||||||
{"go/parser", "\x03j\x03\x01\x03\v\x01j\x01+\x06\x14"},
|
{"go/printer", "q\x01\x02\x03\tq\f \x15\x02\x01\x02\v\x05\x02"},
|
||||||
{"go/printer", "p\x01\x03\x03\tj\r\x1f\x17\x02\x01\x02\n\x05\x02"},
|
{"go/scanner", "\x03n\x0fq2\x10\x01\x13\x02"},
|
||||||
{"go/scanner", "\x03m\x10j2\x12\x01\x12\x02"},
|
{"go/token", "\x04m\x83\x01>\x02\x03\x01\x0f\x02"},
|
||||||
{"go/token", "\x04l\xbd\x01\x02\x03\x01\x0e\x02"},
|
{"go/types", "\x03\x01\x06d\x03\x01\x03\b\x03\x02\x15\x1f\x061\x04\x03\t \x06\a\b\x01\x01\x01\x02\x01\x0f\x02\x02"},
|
||||||
{"go/types", "\x03\x01\x06c\x03\x01\x04\b\x03\x02\x15\x1e\x06+\x04\x03\n%\a\n\x01\x01\x01\x02\x01\x0e\x02\x02"},
|
{"go/version", "\xbb\x01z"},
|
||||||
{"go/version", "\xba\x01v"},
|
{"hash", "\xf1\x01"},
|
||||||
{"hash", "\xea\x01"},
|
{"hash/adler32", "n\x15\x16"},
|
||||||
{"hash/adler32", "m\x16\x16"},
|
{"hash/crc32", "n\x15\x16\x15\x89\x01\x01\x13"},
|
||||||
{"hash/crc32", "m\x16\x16\x14\x85\x01\x01\x12"},
|
{"hash/crc64", "n\x15\x16\x9e\x01"},
|
||||||
{"hash/crc64", "m\x16\x16\x99\x01"},
|
{"hash/fnv", "n\x15\x16g"},
|
||||||
{"hash/fnv", "m\x16\x16`"},
|
{"hash/maphash", "\x83\x01\x11!\x03\x93\x01"},
|
||||||
{"hash/maphash", "\x94\x01\x05\x1b\x03@N"},
|
{"html", "\xb5\x02\x02\x12"},
|
||||||
{"html", "\xb0\x02\x02\x11"},
|
{"html/template", "\x03h\x06\x18-;\x01\n!\x05\x01\x02\x03\f\x01\x02\f\x01\x03\x02"},
|
||||||
{"html/template", "\x03g\x06\x19,5\x01\v \x05\x01\x02\x03\x0e\x01\x02\v\x01\x03\x02"},
|
{"image", "\x02l\x1ee\x0f4\x03\x01"},
|
||||||
{"image", "\x02k\x1f^\x0f6\x03\x01"},
|
|
||||||
{"image/color", ""},
|
{"image/color", ""},
|
||||||
{"image/color/palette", "\x8c\x01"},
|
{"image/color/palette", "\x8c\x01"},
|
||||||
{"image/draw", "\x8b\x01\x01\x04"},
|
{"image/draw", "\x8b\x01\x01\x04"},
|
||||||
{"image/gif", "\x02\x01\x05e\x03\x1b\x01\x01\x01\vQ"},
|
{"image/gif", "\x02\x01\x05f\x03\x1a\x01\x01\x01\vX"},
|
||||||
{"image/internal/imageutil", "\x8b\x01"},
|
{"image/internal/imageutil", "\x8b\x01"},
|
||||||
{"image/jpeg", "\x02k\x1e\x01\x04Z"},
|
{"image/jpeg", "\x02l\x1d\x01\x04a"},
|
||||||
{"image/png", "\x02\a]\n\x13\x02\x06\x01^E"},
|
{"image/png", "\x02\a^\n\x12\x02\x06\x01eC"},
|
||||||
{"index/suffixarray", "\x03c\a}\r*\f\x01"},
|
{"index/suffixarray", "\x03d\a\x83\x01\f+\n\x01"},
|
||||||
{"internal/abi", "\xb4\x01\x91\x01"},
|
{"internal/abi", "\xb5\x01\x96\x01"},
|
||||||
{"internal/asan", "\xc5\x02"},
|
{"internal/asan", "\xcb\x02"},
|
||||||
{"internal/bisect", "\xa3\x02\x0f\x01"},
|
{"internal/bisect", "\xaa\x02\r\x01"},
|
||||||
{"internal/buildcfg", "pG_\x06\x02\x05\f\x01"},
|
{"internal/buildcfg", "qGe\x06\x02\x05\n\x01"},
|
||||||
{"internal/bytealg", "\xad\x01\x98\x01"},
|
{"internal/bytealg", "\xae\x01\x9d\x01"},
|
||||||
{"internal/byteorder", ""},
|
{"internal/byteorder", ""},
|
||||||
{"internal/cfg", ""},
|
{"internal/cfg", ""},
|
||||||
{"internal/chacha8rand", "\x99\x01\x1b\x91\x01"},
|
{"internal/cgrouptest", "q[Q\x06\x0f\x02\x01\x04\x01"},
|
||||||
|
{"internal/chacha8rand", "\x99\x01\x15\a\x96\x01"},
|
||||||
{"internal/copyright", ""},
|
{"internal/copyright", ""},
|
||||||
{"internal/coverage", ""},
|
{"internal/coverage", ""},
|
||||||
{"internal/coverage/calloc", ""},
|
{"internal/coverage/calloc", ""},
|
||||||
{"internal/coverage/cfile", "j\x06\x17\x16\x01\x02\x01\x01\x01\x01\x01\x01\x01#\x01\x1f,\x06\a\f\x01\x03\f\x06"},
|
{"internal/coverage/cfile", "k\x06\x16\x17\x01\x02\x01\x01\x01\x01\x01\x01\x01#\x02$,\x06\a\n\x01\x03\r\x06"},
|
||||||
{"internal/coverage/cformat", "\x04l-\x04I\f7\x01\x02\f"},
|
{"internal/coverage/cformat", "\x04m-\x04O\v6\x01\x02\r"},
|
||||||
{"internal/coverage/cmerge", "p-Z"},
|
{"internal/coverage/cmerge", "q-_"},
|
||||||
{"internal/coverage/decodecounter", "f\n-\v\x02@,\x19\x16"},
|
{"internal/coverage/decodecounter", "g\n-\v\x02F,\x17\x17"},
|
||||||
{"internal/coverage/decodemeta", "\x02d\n\x17\x16\v\x02@,"},
|
{"internal/coverage/decodemeta", "\x02e\n\x16\x17\v\x02F,"},
|
||||||
{"internal/coverage/encodecounter", "\x02d\n-\f\x01\x02>\f \x17"},
|
{"internal/coverage/encodecounter", "\x02e\n-\f\x01\x02D\v!\x15"},
|
||||||
{"internal/coverage/encodemeta", "\x02\x01c\n\x13\x04\x16\r\x02>,/"},
|
{"internal/coverage/encodemeta", "\x02\x01d\n\x12\x04\x17\r\x02D,."},
|
||||||
{"internal/coverage/pods", "\x04l-y\x06\x05\f\x02\x01"},
|
{"internal/coverage/pods", "\x04m-\x7f\x06\x05\n\x02\x01"},
|
||||||
{"internal/coverage/rtcov", "\xc5\x02"},
|
{"internal/coverage/rtcov", "\xcb\x02"},
|
||||||
{"internal/coverage/slicereader", "f\nz["},
|
{"internal/coverage/slicereader", "g\n\x80\x01Z"},
|
||||||
{"internal/coverage/slicewriter", "pz"},
|
{"internal/coverage/slicewriter", "q\x80\x01"},
|
||||||
{"internal/coverage/stringtab", "p8\x04>"},
|
{"internal/coverage/stringtab", "q8\x04D"},
|
||||||
{"internal/coverage/test", ""},
|
{"internal/coverage/test", ""},
|
||||||
{"internal/coverage/uleb128", ""},
|
{"internal/coverage/uleb128", ""},
|
||||||
{"internal/cpu", "\xc5\x02"},
|
{"internal/cpu", "\xcb\x02"},
|
||||||
{"internal/dag", "\x04l\xbd\x01\x03"},
|
{"internal/dag", "\x04m\xc1\x01\x03"},
|
||||||
{"internal/diff", "\x03m\xbe\x01\x02"},
|
{"internal/diff", "\x03n\xc2\x01\x02"},
|
||||||
{"internal/exportdata", "\x02\x01j\x03\x03]\x1a,\x01\x05\x13\x01\x02"},
|
{"internal/exportdata", "\x02\x01k\x03\x02c\x1b,\x01\x05\x11\x01\x02"},
|
||||||
{"internal/filepathlite", "m+:\x19B"},
|
{"internal/filepathlite", "n*@\x1a@"},
|
||||||
{"internal/fmtsort", "\x04\x9a\x02\x0f"},
|
{"internal/fmtsort", "\x04\xa1\x02\r"},
|
||||||
{"internal/fuzz", "\x03\nA\x18\x04\x03\x03\x01\f\x0355\r\x02\x1d\x01\x05\x02\x05\f\x01\x02\x01\x01\v\x04\x02"},
|
{"internal/fuzz", "\x03\nB\x18\x04\x03\x03\x01\v\x036;\f\x03\x1d\x01\x05\x02\x05\n\x01\x02\x01\x01\f\x04\x02"},
|
||||||
{"internal/goarch", ""},
|
{"internal/goarch", ""},
|
||||||
{"internal/godebug", "\x96\x01 |\x01\x12"},
|
{"internal/godebug", "\x96\x01!\x80\x01\x01\x13"},
|
||||||
{"internal/godebugs", ""},
|
{"internal/godebugs", ""},
|
||||||
{"internal/goexperiment", ""},
|
{"internal/goexperiment", ""},
|
||||||
{"internal/goos", ""},
|
{"internal/goos", ""},
|
||||||
{"internal/goroot", "\x96\x02\x01\x05\x14\x02"},
|
{"internal/goroot", "\x9d\x02\x01\x05\x12\x02"},
|
||||||
{"internal/gover", "\x04"},
|
{"internal/gover", "\x04"},
|
||||||
{"internal/goversion", ""},
|
{"internal/goversion", ""},
|
||||||
{"internal/itoa", ""},
|
{"internal/itoa", ""},
|
||||||
{"internal/lazyregexp", "\x96\x02\v\x0f\x02"},
|
{"internal/lazyregexp", "\x9d\x02\v\r\x02"},
|
||||||
{"internal/lazytemplate", "\xea\x01,\x1a\x02\v"},
|
{"internal/lazytemplate", "\xf1\x01,\x18\x02\f"},
|
||||||
{"internal/msan", "\xc5\x02"},
|
{"internal/msan", "\xcb\x02"},
|
||||||
{"internal/nettrace", ""},
|
{"internal/nettrace", ""},
|
||||||
{"internal/obscuretestdata", "e\x85\x01,"},
|
{"internal/obscuretestdata", "f\x8b\x01,"},
|
||||||
{"internal/oserror", "m"},
|
{"internal/oserror", "n"},
|
||||||
{"internal/pkgbits", "\x03K\x18\a\x03\x05\vj\x0e\x1e\r\f\x01"},
|
{"internal/pkgbits", "\x03L\x18\a\x03\x04\vq\r\x1f\r\n\x01"},
|
||||||
{"internal/platform", ""},
|
{"internal/platform", ""},
|
||||||
{"internal/poll", "mO\x1a\x149\x0f\x01\x01\v\x06"},
|
{"internal/poll", "nO\x1f\x159\r\x01\x01\f\x06"},
|
||||||
{"internal/profile", "\x03\x04f\x03z7\r\x01\x01\x0f"},
|
{"internal/profile", "\x03\x04g\x03\x80\x017\v\x01\x01\x10"},
|
||||||
{"internal/profilerecord", ""},
|
{"internal/profilerecord", ""},
|
||||||
{"internal/race", "\x94\x01\xb1\x01"},
|
{"internal/race", "\x94\x01\xb7\x01"},
|
||||||
{"internal/reflectlite", "\x94\x01 3<\""},
|
{"internal/reflectlite", "\x94\x01!9<!"},
|
||||||
{"internal/runtime/atomic", "\xc5\x02"},
|
{"internal/runtime/atomic", "\xb5\x01\x96\x01"},
|
||||||
{"internal/runtime/exithook", "\xca\x01{"},
|
{"internal/runtime/cgroup", "\x98\x01:\x02w"},
|
||||||
{"internal/runtime/maps", "\x94\x01\x01\x1f\v\t\x05\x01w"},
|
{"internal/runtime/exithook", "\xcb\x01\x80\x01"},
|
||||||
{"internal/runtime/math", "\xb4\x01"},
|
{"internal/runtime/gc", "\xb5\x01"},
|
||||||
{"internal/runtime/sys", "\xb4\x01\x04"},
|
{"internal/runtime/maps", "\x94\x01\x01 \v\t\a\x03x"},
|
||||||
{"internal/runtime/syscall", "\xc5\x02"},
|
{"internal/runtime/math", "\xb5\x01"},
|
||||||
{"internal/saferio", "\xea\x01["},
|
{"internal/runtime/startlinetest", ""},
|
||||||
{"internal/singleflight", "\xb2\x02"},
|
{"internal/runtime/strconv", "\xd0\x01"},
|
||||||
{"internal/stringslite", "\x98\x01\xad\x01"},
|
{"internal/runtime/sys", "\xb5\x01\x04"},
|
||||||
{"internal/sync", "\x94\x01 \x14k\x12"},
|
{"internal/runtime/syscall", "\xb5\x01\x96\x01"},
|
||||||
{"internal/synctest", "\xc5\x02"},
|
{"internal/runtime/wasitest", ""},
|
||||||
{"internal/syscall/execenv", "\xb4\x02"},
|
{"internal/saferio", "\xf1\x01Z"},
|
||||||
{"internal/syscall/unix", "\xa3\x02\x10\x01\x11"},
|
{"internal/singleflight", "\xb7\x02"},
|
||||||
{"internal/sysinfo", "\x02\x01\xaa\x01=,\x1a\x02"},
|
{"internal/stringslite", "\x98\x01\xb3\x01"},
|
||||||
|
{"internal/sync", "\x94\x01!\x14o\x13"},
|
||||||
|
{"internal/synctest", "\x94\x01\xb7\x01"},
|
||||||
|
{"internal/syscall/execenv", "\xb9\x02"},
|
||||||
|
{"internal/syscall/unix", "\xaa\x02\x0e\x01\x12"},
|
||||||
|
{"internal/sysinfo", "\x02\x01\xab\x01C,\x18\x02"},
|
||||||
{"internal/syslist", ""},
|
{"internal/syslist", ""},
|
||||||
{"internal/testenv", "\x03\n`\x02\x01*\x1a\x10'+\x01\x05\a\f\x01\x02\x02\x01\n"},
|
{"internal/testenv", "\x03\na\x02\x01)\x1b\x10-+\x01\x05\a\n\x01\x02\x02\x01\v"},
|
||||||
{"internal/testlog", "\xb2\x02\x01\x12"},
|
{"internal/testhash", "\x03\x80\x01n\x118\v"},
|
||||||
{"internal/testpty", "m\x03\xa6\x01"},
|
{"internal/testlog", "\xb7\x02\x01\x13"},
|
||||||
{"internal/trace", "\x02\x01\x01\x06\\\a\x03n\x03\x03\x06\x03\n6\x01\x02\x0f\x06"},
|
{"internal/testpty", "n\x03\xac\x01"},
|
||||||
{"internal/trace/internal/testgen", "\x03c\nl\x03\x02\x03\x011\v\x0f"},
|
{"internal/trace", "\x02\x01\x01\x06]\a\x03t\x03\x03\x06\x03\t5\x01\x01\x01\x10\x06"},
|
||||||
{"internal/trace/internal/tracev1", "\x03\x01b\a\x03t\x06\r6\x01"},
|
{"internal/trace/internal/testgen", "\x03d\nr\x03\x02\x03\x011\v\r\x10"},
|
||||||
{"internal/trace/raw", "\x02d\nq\x03\x06E\x01\x11"},
|
{"internal/trace/internal/tracev1", "\x03\x01c\a\x03z\x06\f5\x01"},
|
||||||
{"internal/trace/testtrace", "\x02\x01j\x03l\x03\x06\x057\f\x02\x01"},
|
{"internal/trace/raw", "\x02e\nw\x03\x06C\x01\x12"},
|
||||||
|
{"internal/trace/testtrace", "\x02\x01k\x03r\x03\x05\x01\x057\n\x02\x01"},
|
||||||
{"internal/trace/tracev2", ""},
|
{"internal/trace/tracev2", ""},
|
||||||
{"internal/trace/traceviewer", "\x02]\v\x06\x1a<\x16\a\a\x04\t\n\x15\x01\x05\a\f\x01\x02\r"},
|
{"internal/trace/traceviewer", "\x02^\v\x06\x19=\x1c\a\a\x04\b\v\x15\x01\x05\a\n\x01\x02\x0e"},
|
||||||
{"internal/trace/traceviewer/format", ""},
|
{"internal/trace/traceviewer/format", ""},
|
||||||
{"internal/trace/version", "pq\t"},
|
{"internal/trace/version", "qw\t"},
|
||||||
{"internal/txtar", "\x03m\xa6\x01\x1a"},
|
{"internal/txtar", "\x03n\xac\x01\x18"},
|
||||||
{"internal/types/errors", "\xaf\x02"},
|
{"internal/types/errors", "\xb4\x02"},
|
||||||
{"internal/unsafeheader", "\xc5\x02"},
|
{"internal/unsafeheader", "\xcb\x02"},
|
||||||
{"internal/xcoff", "Y\r\a\x03`\x1a,\x19\x01"},
|
{"internal/xcoff", "Z\r\a\x03e\x1b,\x17\x01"},
|
||||||
{"internal/zstd", "f\a\x03z\x0f"},
|
{"internal/zstd", "g\a\x03\x80\x01\x0f"},
|
||||||
{"io", "m\xc5\x01"},
|
{"io", "n\xc9\x01"},
|
||||||
{"io/fs", "m+*(1\x12\x12\x04"},
|
{"io/fs", "n*+.1\x10\x13\x04"},
|
||||||
{"io/ioutil", "\xea\x01\x01+\x17\x03"},
|
{"io/ioutil", "\xf1\x01\x01+\x15\x03"},
|
||||||
{"iter", "\xc8\x01[\""},
|
{"iter", "\xc9\x01a!"},
|
||||||
{"log", "pz\x05'\r\x0f\x01\f"},
|
{"log", "q\x80\x01\x05'\r\r\x01\r"},
|
||||||
{"log/internal", ""},
|
{"log/internal", ""},
|
||||||
{"log/slog", "\x03\nT\t\x03\x03z\x04\x01\x02\x02\x04'\x05\n\x02\x01\x02\x01\f\x02\x02\x02"},
|
{"log/slog", "\x03\nU\t\x03\x03\x80\x01\x04\x01\x02\x02\x03(\x05\b\x02\x01\x02\x01\r\x02\x02\x02"},
|
||||||
{"log/slog/internal", ""},
|
{"log/slog/internal", ""},
|
||||||
{"log/slog/internal/benchmarks", "\r`\x03z\x06\x03<\x10"},
|
{"log/slog/internal/benchmarks", "\ra\x03\x80\x01\x06\x03:\x11"},
|
||||||
{"log/slog/internal/buffer", "\xb2\x02"},
|
{"log/slog/internal/buffer", "\xb7\x02"},
|
||||||
{"log/slog/internal/slogtest", "\xf0\x01"},
|
{"log/syslog", "n\x03\x84\x01\x12\x16\x18\x02\x0e"},
|
||||||
{"log/syslog", "m\x03~\x12\x16\x1a\x02\r"},
|
{"maps", "\xf4\x01W"},
|
||||||
{"maps", "\xed\x01X"},
|
{"math", "\xae\x01RK"},
|
||||||
{"math", "\xad\x01LL"},
|
{"math/big", "\x03k\x03(\x15C\f\x03\x020\x02\x01\x02\x14"},
|
||||||
{"math/big", "\x03j\x03)\x14=\r\x02\x024\x01\x02\x13"},
|
{"math/big/internal/asmgen", "\x03\x01m\x8f\x012\x03"},
|
||||||
{"math/bits", "\xc5\x02"},
|
{"math/bits", "\xcb\x02"},
|
||||||
{"math/cmplx", "\xf7\x01\x02"},
|
{"math/cmplx", "\xfd\x01\x03"},
|
||||||
{"math/rand", "\xb5\x01B;\x01\x12"},
|
{"math/rand", "\xb6\x01G:\x01\x13"},
|
||||||
{"math/rand/v2", "m,\x02\\\x02L"},
|
{"math/rand/v2", "n+\x03a\x03K"},
|
||||||
{"mime", "\x02\x01b\b\x03z\f \x17\x03\x02\x0f\x02"},
|
{"mime", "\x02\x01c\b\x03\x80\x01\v!\x15\x03\x02\x10\x02"},
|
||||||
{"mime/multipart", "\x02\x01G#\x03E5\f\x01\x06\x02\x15\x02\x06\x11\x02\x01\x15"},
|
{"mime/multipart", "\x02\x01H#\x03E;\v\x01\a\x02\x15\x02\x06\x0f\x02\x01\x16"},
|
||||||
{"mime/quotedprintable", "\x02\x01mz"},
|
{"mime/quotedprintable", "\x02\x01n\x80\x01"},
|
||||||
{"net", "\x04\t`+\x1d\a\x04\x05\f\x01\x04\x14\x01%\x06\r\n\x05\x01\x01\v\x06\a"},
|
{"net", "\x04\ta*\x1e\a\x04\x05\x11\x01\x04\x15\x01%\x06\r\b\x05\x01\x01\f\x06\a"},
|
||||||
{"net/http", "\x02\x01\x04\x04\x02=\b\x13\x01\a\x03E5\x01\x03\b\x01\x02\x02\x02\x01\x02\x06\x02\x01\x01\n\x01\x01\x05\x01\x02\x05\n\x01\x01\x01\x02\x01\x01\v\x02\x02\x02\b\x01\x01\x01"},
|
{"net/http", "\x02\x01\x04\x04\x02>\b\x13\x01\a\x03E;\x01\x03\a\x01\x03\x02\x02\x01\x02\x06\x02\x01\x01\n\x01\x01\x05\x01\x02\x05\b\x01\x01\x01\x02\x01\r\x02\x02\x02\b\x01\x01\x01"},
|
||||||
{"net/http/cgi", "\x02P\x1b\x03z\x04\b\n\x01\x13\x01\x01\x01\x04\x01\x05\x02\n\x02\x01\x0f\x0e"},
|
{"net/http/cgi", "\x02Q\x1b\x03\x80\x01\x04\a\v\x01\x13\x01\x01\x01\x04\x01\x05\x02\b\x02\x01\x10\x0e"},
|
||||||
{"net/http/cookiejar", "\x04i\x03\x90\x01\x01\b\f\x18\x03\x02\r\x04"},
|
{"net/http/cookiejar", "\x04j\x03\x96\x01\x01\b\f\x16\x03\x02\x0e\x04"},
|
||||||
{"net/http/fcgi", "\x02\x01\nY\a\x03z\x16\x01\x01\x14\x1a\x02\r"},
|
{"net/http/fcgi", "\x02\x01\nZ\a\x03\x80\x01\x16\x01\x01\x14\x18\x02\x0e"},
|
||||||
{"net/http/httptest", "\x02\x01\nE\x02\x1b\x01z\x04\x12\x01\n\t\x02\x19\x01\x02\r\x0e"},
|
{"net/http/httptest", "\x02\x01\nF\x02\x1b\x01\x80\x01\x04\x12\x01\n\t\x02\x17\x01\x02\x0e\x0e"},
|
||||||
{"net/http/httptrace", "\rEn@\x14\n!"},
|
{"net/http/httptrace", "\rFnF\x14\n "},
|
||||||
{"net/http/httputil", "\x02\x01\n`\x03z\x04\x0f\x03\x01\x05\x02\x01\v\x01\x1b\x02\r\x0e"},
|
{"net/http/httputil", "\x02\x01\na\x03\x80\x01\x04\x0f\x03\x01\x05\x02\x01\v\x01\x19\x02\x0e\x0e"},
|
||||||
{"net/http/internal", "\x02\x01j\x03z"},
|
{"net/http/internal", "\x02\x01k\x03\x80\x01"},
|
||||||
{"net/http/internal/ascii", "\xb0\x02\x11"},
|
{"net/http/internal/ascii", "\xb5\x02\x12"},
|
||||||
{"net/http/internal/httpcommon", "\r`\x03\x96\x01\x0e\x01\x19\x01\x01\x02\x1b\x02"},
|
{"net/http/internal/httpcommon", "\ra\x03\x9c\x01\x0e\x01\x17\x01\x01\x02\x1c\x02"},
|
||||||
{"net/http/internal/testcert", "\xb0\x02"},
|
{"net/http/internal/testcert", "\xb5\x02"},
|
||||||
{"net/http/pprof", "\x02\x01\nc\x19,\x11$\x04\x13\x14\x01\r\x06\x03\x01\x02\x01\x0f"},
|
{"net/http/pprof", "\x02\x01\nd\x18-\x11*\x04\x13\x14\x01\r\x04\x03\x01\x02\x01\x10"},
|
||||||
{"net/internal/cgotest", ""},
|
{"net/internal/cgotest", ""},
|
||||||
{"net/internal/socktest", "p\xc2\x01\x02"},
|
{"net/internal/socktest", "q\xc6\x01\x02"},
|
||||||
{"net/mail", "\x02k\x03z\x04\x0f\x03\x14\x1c\x02\r\x04"},
|
{"net/mail", "\x02l\x03\x80\x01\x04\x0f\x03\x14\x1a\x02\x0e\x04"},
|
||||||
{"net/netip", "\x04i+\x01#;\x026\x15"},
|
{"net/netip", "\x04j*\x01$@\x034\x16"},
|
||||||
{"net/rpc", "\x02f\x05\x03\x10\n`\x04\x12\x01\x1d\x0f\x03\x02"},
|
{"net/rpc", "\x02g\x05\x03\x0f\ng\x04\x12\x01\x1d\r\x03\x02"},
|
||||||
{"net/rpc/jsonrpc", "j\x03\x03z\x16\x11!"},
|
{"net/rpc/jsonrpc", "k\x03\x03\x80\x01\x16\x11\x1f"},
|
||||||
{"net/smtp", "\x19.\v\x13\b\x03z\x16\x14\x1c"},
|
{"net/smtp", "\x19/\v\x13\b\x03\x80\x01\x16\x14\x1a"},
|
||||||
{"net/textproto", "\x02\x01j\x03z\r\t/\x01\x02\x13"},
|
{"net/textproto", "\x02\x01k\x03\x80\x01\f\n-\x01\x02\x14"},
|
||||||
{"net/url", "m\x03\x86\x01%\x12\x02\x01\x15"},
|
{"net/url", "n\x03\x8b\x01&\x10\x02\x01\x16"},
|
||||||
{"os", "m+\x01\x18\x03\b\t\r\x03\x01\x04\x10\x018\n\x05\x01\x01\v\x06"},
|
{"os", "n*\x01\x19\x03\b\t\x12\x03\x01\x05\x10\x018\b\x05\x01\x01\f\x06"},
|
||||||
{"os/exec", "\x03\n`H \x01\x14\x01+\x06\a\f\x01\x04\v"},
|
{"os/exec", "\x03\naH%\x01\x15\x01+\x06\a\n\x01\x04\f"},
|
||||||
{"os/exec/internal/fdtest", "\xb4\x02"},
|
{"os/exec/internal/fdtest", "\xb9\x02"},
|
||||||
{"os/signal", "\r\x89\x02\x17\x05\x02"},
|
{"os/signal", "\r\x90\x02\x15\x05\x02"},
|
||||||
{"os/user", "\x02\x01j\x03z,\r\f\x01\x02"},
|
{"os/user", "\x02\x01k\x03\x80\x01,\r\n\x01\x02"},
|
||||||
{"path", "m+\xab\x01"},
|
{"path", "n*\xb1\x01"},
|
||||||
{"path/filepath", "m+\x19:+\r\n\x03\x04\x0f"},
|
{"path/filepath", "n*\x1a@+\r\b\x03\x04\x10"},
|
||||||
{"plugin", "m"},
|
{"plugin", "n"},
|
||||||
{"reflect", "m'\x04\x1c\b\f\x04\x02\x19\x10,\f\x03\x0f\x02\x02"},
|
{"reflect", "n&\x04\x1d\b\f\x06\x04\x1b\x06\t-\n\x03\x10\x02\x02"},
|
||||||
{"reflect/internal/example1", ""},
|
{"reflect/internal/example1", ""},
|
||||||
{"reflect/internal/example2", ""},
|
{"reflect/internal/example2", ""},
|
||||||
{"regexp", "\x03\xe7\x018\v\x02\x01\x02\x0f\x02"},
|
{"regexp", "\x03\xee\x018\t\x02\x01\x02\x10\x02"},
|
||||||
{"regexp/syntax", "\xad\x02\x01\x01\x01\x11\x02"},
|
{"regexp/syntax", "\xb2\x02\x01\x01\x01\x02\x10\x02"},
|
||||||
{"runtime", "\x94\x01\x04\x01\x02\f\x06\a\x02\x01\x01\x0f\x03\x01\x01\x01\x01\x01\x03\x0fd"},
|
{"runtime", "\x94\x01\x04\x01\x03\f\x06\a\x02\x01\x01\x0f\x03\x01\x01\x01\x01\x01\x02\x01\x01\x04\x10c"},
|
||||||
{"runtime/coverage", "\x9f\x01K"},
|
{"runtime/coverage", "\xa0\x01Q"},
|
||||||
{"runtime/debug", "pUQ\r\n\x02\x01\x0f\x06"},
|
{"runtime/debug", "qUW\r\b\x02\x01\x10\x06"},
|
||||||
{"runtime/internal/startlinetest", ""},
|
{"runtime/metrics", "\xb7\x01F-!"},
|
||||||
{"runtime/internal/wasitest", ""},
|
{"runtime/pprof", "\x02\x01\x01\x03\x06Z\a\x03#4)\f \r\b\x01\x01\x01\x02\x02\t\x03\x06"},
|
||||||
{"runtime/metrics", "\xb6\x01A,\""},
|
{"runtime/race", "\xb0\x02"},
|
||||||
{"runtime/pprof", "\x02\x01\x01\x03\x06Y\a\x03$3#\r\x1f\r\n\x01\x01\x01\x02\x02\b\x03\x06"},
|
|
||||||
{"runtime/race", "\xab\x02"},
|
|
||||||
{"runtime/race/internal/amd64v1", ""},
|
{"runtime/race/internal/amd64v1", ""},
|
||||||
{"runtime/trace", "\rcz9\x0f\x01\x12"},
|
{"runtime/trace", "\ra\x03w\t9\b\x05\x01\r\x06"},
|
||||||
{"slices", "\x04\xe9\x01\fL"},
|
{"slices", "\x04\xf0\x01\fK"},
|
||||||
{"sort", "\xc9\x0104"},
|
{"sort", "\xca\x0162"},
|
||||||
{"strconv", "m+:%\x02J"},
|
{"strconv", "n*@%\x03I"},
|
||||||
{"strings", "m'\x04:\x18\x03\f9\x0f\x02\x02"},
|
{"strings", "n&\x04@\x19\x03\f7\x10\x02\x02"},
|
||||||
{"structs", ""},
|
{"structs", ""},
|
||||||
{"sync", "\xc8\x01\vP\x10\x12"},
|
{"sync", "\xc9\x01\x10\x01P\x0e\x13"},
|
||||||
{"sync/atomic", "\xc5\x02"},
|
{"sync/atomic", "\xcb\x02"},
|
||||||
{"syscall", "m(\x03\x01\x1b\b\x03\x03\x06\aT\n\x05\x01\x12"},
|
{"syscall", "n'\x03\x01\x1c\b\x03\x03\x06\vV\b\x05\x01\x13"},
|
||||||
{"testing", "\x03\n`\x02\x01X\x0f\x13\r\x04\x1b\x06\x02\x05\x02\a\x01\x02\x01\x02\x01\f\x02\x02\x02"},
|
{"testing", "\x03\na\x02\x01X\x14\x14\f\x05\x1b\x06\x02\x05\x02\x05\x01\x02\x01\x02\x01\r\x02\x02\x02"},
|
||||||
{"testing/fstest", "m\x03z\x01\v%\x12\x03\b\a"},
|
{"testing/fstest", "n\x03\x80\x01\x01\n&\x10\x03\b\b"},
|
||||||
{"testing/internal/testdeps", "\x02\v\xa6\x01'\x10,\x03\x05\x03\b\a\x02\r"},
|
{"testing/internal/testdeps", "\x02\v\xa7\x01-\x10,\x03\x05\x03\x06\a\x02\x0e"},
|
||||||
{"testing/iotest", "\x03j\x03z\x04"},
|
{"testing/iotest", "\x03k\x03\x80\x01\x04"},
|
||||||
{"testing/quick", "o\x01\x87\x01\x04#\x12\x0f"},
|
{"testing/quick", "p\x01\x8c\x01\x05#\x10\x10"},
|
||||||
{"testing/slogtest", "\r`\x03\x80\x01.\x05\x12\n"},
|
{"testing/slogtest", "\ra\x03\x86\x01.\x05\x10\v"},
|
||||||
{"text/scanner", "\x03mz,+\x02"},
|
{"testing/synctest", "\xda\x01`\x11"},
|
||||||
{"text/tabwriter", "pzY"},
|
{"text/scanner", "\x03n\x80\x01,*\x02"},
|
||||||
{"text/template", "m\x03B8\x01\v\x1f\x01\x05\x01\x02\x05\r\x02\f\x03\x02"},
|
{"text/tabwriter", "q\x80\x01X"},
|
||||||
{"text/template/parse", "\x03m\xb3\x01\f\x01\x11\x02"},
|
{"text/template", "n\x03B>\x01\n \x01\x05\x01\x02\x05\v\x02\r\x03\x02"},
|
||||||
{"time", "m+\x1d\x1d'*\x0f\x02\x11"},
|
{"text/template/parse", "\x03n\xb9\x01\n\x01\x12\x02"},
|
||||||
{"time/tzdata", "m\xc7\x01\x11"},
|
{"time", "n*\x1e\"(*\r\x02\x12"},
|
||||||
|
{"time/tzdata", "n\xcb\x01\x12"},
|
||||||
{"unicode", ""},
|
{"unicode", ""},
|
||||||
{"unicode/utf16", ""},
|
{"unicode/utf16", ""},
|
||||||
{"unicode/utf8", ""},
|
{"unicode/utf8", ""},
|
||||||
{"unique", "\x94\x01>\x01P\x0f\x13\x12"},
|
{"unique", "\x94\x01!#\x01Q\r\x01\x13\x12"},
|
||||||
{"unsafe", ""},
|
{"unsafe", ""},
|
||||||
{"vendor/golang.org/x/crypto/chacha20", "\x10V\a\x8c\x01*'"},
|
{"vendor/golang.org/x/crypto/chacha20", "\x10W\a\x92\x01*&"},
|
||||||
{"vendor/golang.org/x/crypto/chacha20poly1305", "\x10V\a\xd9\x01\x04\x01\a"},
|
{"vendor/golang.org/x/crypto/chacha20poly1305", "\x10W\a\xde\x01\x04\x01\a"},
|
||||||
{"vendor/golang.org/x/crypto/cryptobyte", "c\n\x03\x88\x01&!\n"},
|
{"vendor/golang.org/x/crypto/cryptobyte", "d\n\x03\x8d\x01' \n"},
|
||||||
{"vendor/golang.org/x/crypto/cryptobyte/asn1", ""},
|
{"vendor/golang.org/x/crypto/cryptobyte/asn1", ""},
|
||||||
{"vendor/golang.org/x/crypto/internal/alias", "\xc5\x02"},
|
{"vendor/golang.org/x/crypto/internal/alias", "\xcb\x02"},
|
||||||
{"vendor/golang.org/x/crypto/internal/poly1305", "Q\x15\x93\x01"},
|
{"vendor/golang.org/x/crypto/internal/poly1305", "R\x15\x99\x01"},
|
||||||
{"vendor/golang.org/x/net/dns/dnsmessage", "m"},
|
{"vendor/golang.org/x/net/dns/dnsmessage", "n"},
|
||||||
{"vendor/golang.org/x/net/http/httpguts", "\x80\x02\x14\x1c\x13\r"},
|
{"vendor/golang.org/x/net/http/httpguts", "\x87\x02\x14\x1a\x14\r"},
|
||||||
{"vendor/golang.org/x/net/http/httpproxy", "m\x03\x90\x01\x15\x01\x1a\x13\r"},
|
{"vendor/golang.org/x/net/http/httpproxy", "n\x03\x96\x01\x10\x05\x01\x18\x14\r"},
|
||||||
{"vendor/golang.org/x/net/http2/hpack", "\x03j\x03zH"},
|
{"vendor/golang.org/x/net/http2/hpack", "\x03k\x03\x80\x01F"},
|
||||||
{"vendor/golang.org/x/net/idna", "p\x87\x019\x13\x10\x02\x01"},
|
{"vendor/golang.org/x/net/idna", "q\x8c\x018\x14\x10\x02\x01"},
|
||||||
{"vendor/golang.org/x/net/nettest", "\x03c\a\x03z\x11\x05\x16\x01\f\f\x01\x02\x02\x01\n"},
|
{"vendor/golang.org/x/net/nettest", "\x03d\a\x03\x80\x01\x11\x05\x16\x01\f\n\x01\x02\x02\x01\v"},
|
||||||
{"vendor/golang.org/x/sys/cpu", "\x96\x02\r\f\x01\x15"},
|
{"vendor/golang.org/x/sys/cpu", "\x9d\x02\r\n\x01\x16"},
|
||||||
{"vendor/golang.org/x/text/secure/bidirule", "m\xd6\x01\x11\x01"},
|
{"vendor/golang.org/x/text/secure/bidirule", "n\xdb\x01\x11\x01"},
|
||||||
{"vendor/golang.org/x/text/transform", "\x03j}Y"},
|
{"vendor/golang.org/x/text/transform", "\x03k\x83\x01X"},
|
||||||
{"vendor/golang.org/x/text/unicode/bidi", "\x03\be~@\x15"},
|
{"vendor/golang.org/x/text/unicode/bidi", "\x03\bf\x84\x01>\x16"},
|
||||||
{"vendor/golang.org/x/text/unicode/norm", "f\nzH\x11\x11"},
|
{"vendor/golang.org/x/text/unicode/norm", "g\n\x80\x01F\x12\x11"},
|
||||||
{"weak", "\x94\x01\x8f\x01\""},
|
{"weak", "\x94\x01\x96\x01!"},
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,6 +502,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"MD4", Const, 0, ""},
|
{"MD4", Const, 0, ""},
|
||||||
{"MD5", Const, 0, ""},
|
{"MD5", Const, 0, ""},
|
||||||
{"MD5SHA1", Const, 0, ""},
|
{"MD5SHA1", Const, 0, ""},
|
||||||
|
{"MessageSigner", Type, 25, ""},
|
||||||
{"PrivateKey", Type, 0, ""},
|
{"PrivateKey", Type, 0, ""},
|
||||||
{"PublicKey", Type, 2, ""},
|
{"PublicKey", Type, 2, ""},
|
||||||
{"RIPEMD160", Const, 0, ""},
|
{"RIPEMD160", Const, 0, ""},
|
||||||
|
@ -517,6 +518,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"SHA512", Const, 0, ""},
|
{"SHA512", Const, 0, ""},
|
||||||
{"SHA512_224", Const, 5, ""},
|
{"SHA512_224", Const, 5, ""},
|
||||||
{"SHA512_256", Const, 5, ""},
|
{"SHA512_256", Const, 5, ""},
|
||||||
|
{"SignMessage", Func, 25, "func(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)"},
|
||||||
{"Signer", Type, 4, ""},
|
{"Signer", Type, 4, ""},
|
||||||
{"SignerOpts", Type, 4, ""},
|
{"SignerOpts", Type, 4, ""},
|
||||||
},
|
},
|
||||||
|
@ -600,10 +602,12 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"X25519", Func, 20, "func() Curve"},
|
{"X25519", Func, 20, "func() Curve"},
|
||||||
},
|
},
|
||||||
"crypto/ecdsa": {
|
"crypto/ecdsa": {
|
||||||
|
{"(*PrivateKey).Bytes", Method, 25, ""},
|
||||||
{"(*PrivateKey).ECDH", Method, 20, ""},
|
{"(*PrivateKey).ECDH", Method, 20, ""},
|
||||||
{"(*PrivateKey).Equal", Method, 15, ""},
|
{"(*PrivateKey).Equal", Method, 15, ""},
|
||||||
{"(*PrivateKey).Public", Method, 4, ""},
|
{"(*PrivateKey).Public", Method, 4, ""},
|
||||||
{"(*PrivateKey).Sign", Method, 4, ""},
|
{"(*PrivateKey).Sign", Method, 4, ""},
|
||||||
|
{"(*PublicKey).Bytes", Method, 25, ""},
|
||||||
{"(*PublicKey).ECDH", Method, 20, ""},
|
{"(*PublicKey).ECDH", Method, 20, ""},
|
||||||
{"(*PublicKey).Equal", Method, 15, ""},
|
{"(*PublicKey).Equal", Method, 15, ""},
|
||||||
{"(PrivateKey).Add", Method, 0, ""},
|
{"(PrivateKey).Add", Method, 0, ""},
|
||||||
|
@ -619,6 +623,8 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(PublicKey).ScalarBaseMult", Method, 0, ""},
|
{"(PublicKey).ScalarBaseMult", Method, 0, ""},
|
||||||
{"(PublicKey).ScalarMult", Method, 0, ""},
|
{"(PublicKey).ScalarMult", Method, 0, ""},
|
||||||
{"GenerateKey", Func, 0, "func(c elliptic.Curve, rand io.Reader) (*PrivateKey, error)"},
|
{"GenerateKey", Func, 0, "func(c elliptic.Curve, rand io.Reader) (*PrivateKey, error)"},
|
||||||
|
{"ParseRawPrivateKey", Func, 25, "func(curve elliptic.Curve, data []byte) (*PrivateKey, error)"},
|
||||||
|
{"ParseUncompressedPublicKey", Func, 25, "func(curve elliptic.Curve, data []byte) (*PublicKey, error)"},
|
||||||
{"PrivateKey", Type, 0, ""},
|
{"PrivateKey", Type, 0, ""},
|
||||||
{"PrivateKey.D", Field, 0, ""},
|
{"PrivateKey.D", Field, 0, ""},
|
||||||
{"PrivateKey.PublicKey", Field, 0, ""},
|
{"PrivateKey.PublicKey", Field, 0, ""},
|
||||||
|
@ -815,6 +821,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
"crypto/sha3": {
|
"crypto/sha3": {
|
||||||
{"(*SHA3).AppendBinary", Method, 24, ""},
|
{"(*SHA3).AppendBinary", Method, 24, ""},
|
||||||
{"(*SHA3).BlockSize", Method, 24, ""},
|
{"(*SHA3).BlockSize", Method, 24, ""},
|
||||||
|
{"(*SHA3).Clone", Method, 25, ""},
|
||||||
{"(*SHA3).MarshalBinary", Method, 24, ""},
|
{"(*SHA3).MarshalBinary", Method, 24, ""},
|
||||||
{"(*SHA3).Reset", Method, 24, ""},
|
{"(*SHA3).Reset", Method, 24, ""},
|
||||||
{"(*SHA3).Size", Method, 24, ""},
|
{"(*SHA3).Size", Method, 24, ""},
|
||||||
|
@ -967,6 +974,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Config.GetCertificate", Field, 4, ""},
|
{"Config.GetCertificate", Field, 4, ""},
|
||||||
{"Config.GetClientCertificate", Field, 8, ""},
|
{"Config.GetClientCertificate", Field, 8, ""},
|
||||||
{"Config.GetConfigForClient", Field, 8, ""},
|
{"Config.GetConfigForClient", Field, 8, ""},
|
||||||
|
{"Config.GetEncryptedClientHelloKeys", Field, 25, ""},
|
||||||
{"Config.InsecureSkipVerify", Field, 0, ""},
|
{"Config.InsecureSkipVerify", Field, 0, ""},
|
||||||
{"Config.KeyLogWriter", Field, 8, ""},
|
{"Config.KeyLogWriter", Field, 8, ""},
|
||||||
{"Config.MaxVersion", Field, 2, ""},
|
{"Config.MaxVersion", Field, 2, ""},
|
||||||
|
@ -5463,6 +5471,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"ParenExpr.X", Field, 0, ""},
|
{"ParenExpr.X", Field, 0, ""},
|
||||||
{"Pkg", Const, 0, ""},
|
{"Pkg", Const, 0, ""},
|
||||||
{"Preorder", Func, 23, "func(root Node) iter.Seq[Node]"},
|
{"Preorder", Func, 23, "func(root Node) iter.Seq[Node]"},
|
||||||
|
{"PreorderStack", Func, 25, "func(root Node, stack []Node, f func(n Node, stack []Node) bool)"},
|
||||||
{"Print", Func, 0, "func(fset *token.FileSet, x any) error"},
|
{"Print", Func, 0, "func(fset *token.FileSet, x any) error"},
|
||||||
{"RECV", Const, 0, ""},
|
{"RECV", Const, 0, ""},
|
||||||
{"RangeStmt", Type, 0, ""},
|
{"RangeStmt", Type, 0, ""},
|
||||||
|
@ -5933,6 +5942,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*File).SetLines", Method, 0, ""},
|
{"(*File).SetLines", Method, 0, ""},
|
||||||
{"(*File).SetLinesForContent", Method, 0, ""},
|
{"(*File).SetLinesForContent", Method, 0, ""},
|
||||||
{"(*File).Size", Method, 0, ""},
|
{"(*File).Size", Method, 0, ""},
|
||||||
|
{"(*FileSet).AddExistingFiles", Method, 25, ""},
|
||||||
{"(*FileSet).AddFile", Method, 0, ""},
|
{"(*FileSet).AddFile", Method, 0, ""},
|
||||||
{"(*FileSet).Base", Method, 0, ""},
|
{"(*FileSet).Base", Method, 0, ""},
|
||||||
{"(*FileSet).File", Method, 0, ""},
|
{"(*FileSet).File", Method, 0, ""},
|
||||||
|
@ -6382,7 +6392,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Label", Type, 5, ""},
|
{"Label", Type, 5, ""},
|
||||||
{"LocalVar", Const, 25, ""},
|
{"LocalVar", Const, 25, ""},
|
||||||
{"LookupFieldOrMethod", Func, 5, "func(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool)"},
|
{"LookupFieldOrMethod", Func, 5, "func(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool)"},
|
||||||
{"LookupSelection", Func, 25, ""},
|
{"LookupSelection", Func, 25, "func(T Type, addressable bool, pkg *Package, name string) (Selection, bool)"},
|
||||||
{"Map", Type, 5, ""},
|
{"Map", Type, 5, ""},
|
||||||
{"MethodExpr", Const, 5, ""},
|
{"MethodExpr", Const, 5, ""},
|
||||||
{"MethodSet", Type, 5, ""},
|
{"MethodSet", Type, 5, ""},
|
||||||
|
@ -6490,9 +6500,11 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Lang", Func, 22, "func(x string) string"},
|
{"Lang", Func, 22, "func(x string) string"},
|
||||||
},
|
},
|
||||||
"hash": {
|
"hash": {
|
||||||
|
{"Cloner", Type, 25, ""},
|
||||||
{"Hash", Type, 0, ""},
|
{"Hash", Type, 0, ""},
|
||||||
{"Hash32", Type, 0, ""},
|
{"Hash32", Type, 0, ""},
|
||||||
{"Hash64", Type, 0, ""},
|
{"Hash64", Type, 0, ""},
|
||||||
|
{"XOF", Type, 25, ""},
|
||||||
},
|
},
|
||||||
"hash/adler32": {
|
"hash/adler32": {
|
||||||
{"Checksum", Func, 0, "func(data []byte) uint32"},
|
{"Checksum", Func, 0, "func(data []byte) uint32"},
|
||||||
|
@ -6533,6 +6545,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
},
|
},
|
||||||
"hash/maphash": {
|
"hash/maphash": {
|
||||||
{"(*Hash).BlockSize", Method, 14, ""},
|
{"(*Hash).BlockSize", Method, 14, ""},
|
||||||
|
{"(*Hash).Clone", Method, 25, ""},
|
||||||
{"(*Hash).Reset", Method, 14, ""},
|
{"(*Hash).Reset", Method, 14, ""},
|
||||||
{"(*Hash).Seed", Method, 14, ""},
|
{"(*Hash).Seed", Method, 14, ""},
|
||||||
{"(*Hash).SetSeed", Method, 14, ""},
|
{"(*Hash).SetSeed", Method, 14, ""},
|
||||||
|
@ -7133,7 +7146,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"FormatFileInfo", Func, 21, "func(info FileInfo) string"},
|
{"FormatFileInfo", Func, 21, "func(info FileInfo) string"},
|
||||||
{"Glob", Func, 16, "func(fsys FS, pattern string) (matches []string, err error)"},
|
{"Glob", Func, 16, "func(fsys FS, pattern string) (matches []string, err error)"},
|
||||||
{"GlobFS", Type, 16, ""},
|
{"GlobFS", Type, 16, ""},
|
||||||
{"Lstat", Func, 25, ""},
|
{"Lstat", Func, 25, "func(fsys FS, name string) (FileInfo, error)"},
|
||||||
{"ModeAppend", Const, 16, ""},
|
{"ModeAppend", Const, 16, ""},
|
||||||
{"ModeCharDevice", Const, 16, ""},
|
{"ModeCharDevice", Const, 16, ""},
|
||||||
{"ModeDevice", Const, 16, ""},
|
{"ModeDevice", Const, 16, ""},
|
||||||
|
@ -7158,7 +7171,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"ReadDirFile", Type, 16, ""},
|
{"ReadDirFile", Type, 16, ""},
|
||||||
{"ReadFile", Func, 16, "func(fsys FS, name string) ([]byte, error)"},
|
{"ReadFile", Func, 16, "func(fsys FS, name string) ([]byte, error)"},
|
||||||
{"ReadFileFS", Type, 16, ""},
|
{"ReadFileFS", Type, 16, ""},
|
||||||
{"ReadLink", Func, 25, ""},
|
{"ReadLink", Func, 25, "func(fsys FS, name string) (string, error)"},
|
||||||
{"ReadLinkFS", Type, 25, ""},
|
{"ReadLinkFS", Type, 25, ""},
|
||||||
{"SkipAll", Var, 20, ""},
|
{"SkipAll", Var, 20, ""},
|
||||||
{"SkipDir", Var, 16, ""},
|
{"SkipDir", Var, 16, ""},
|
||||||
|
@ -7275,6 +7288,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(Record).Attrs", Method, 21, ""},
|
{"(Record).Attrs", Method, 21, ""},
|
||||||
{"(Record).Clone", Method, 21, ""},
|
{"(Record).Clone", Method, 21, ""},
|
||||||
{"(Record).NumAttrs", Method, 21, ""},
|
{"(Record).NumAttrs", Method, 21, ""},
|
||||||
|
{"(Record).Source", Method, 25, ""},
|
||||||
{"(Value).Any", Method, 21, ""},
|
{"(Value).Any", Method, 21, ""},
|
||||||
{"(Value).Bool", Method, 21, ""},
|
{"(Value).Bool", Method, 21, ""},
|
||||||
{"(Value).Duration", Method, 21, ""},
|
{"(Value).Duration", Method, 21, ""},
|
||||||
|
@ -7306,6 +7320,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Float64", Func, 21, "func(key string, v float64) Attr"},
|
{"Float64", Func, 21, "func(key string, v float64) Attr"},
|
||||||
{"Float64Value", Func, 21, "func(v float64) Value"},
|
{"Float64Value", Func, 21, "func(v float64) Value"},
|
||||||
{"Group", Func, 21, "func(key string, args ...any) Attr"},
|
{"Group", Func, 21, "func(key string, args ...any) Attr"},
|
||||||
|
{"GroupAttrs", Func, 25, "func(key string, attrs ...Attr) Attr"},
|
||||||
{"GroupValue", Func, 21, "func(as ...Attr) Value"},
|
{"GroupValue", Func, 21, "func(as ...Attr) Value"},
|
||||||
{"Handler", Type, 21, ""},
|
{"Handler", Type, 21, ""},
|
||||||
{"HandlerOptions", Type, 21, ""},
|
{"HandlerOptions", Type, 21, ""},
|
||||||
|
@ -7916,7 +7931,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*Writer).WriteField", Method, 0, ""},
|
{"(*Writer).WriteField", Method, 0, ""},
|
||||||
{"ErrMessageTooLarge", Var, 9, ""},
|
{"ErrMessageTooLarge", Var, 9, ""},
|
||||||
{"File", Type, 0, ""},
|
{"File", Type, 0, ""},
|
||||||
{"FileContentDisposition", Func, 25, ""},
|
{"FileContentDisposition", Func, 25, "func(fieldname string, filename string) string"},
|
||||||
{"FileHeader", Type, 0, ""},
|
{"FileHeader", Type, 0, ""},
|
||||||
{"FileHeader.Filename", Field, 0, ""},
|
{"FileHeader.Filename", Field, 0, ""},
|
||||||
{"FileHeader.Header", Field, 0, ""},
|
{"FileHeader.Header", Field, 0, ""},
|
||||||
|
@ -8294,6 +8309,11 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*Client).PostForm", Method, 0, ""},
|
{"(*Client).PostForm", Method, 0, ""},
|
||||||
{"(*Cookie).String", Method, 0, ""},
|
{"(*Cookie).String", Method, 0, ""},
|
||||||
{"(*Cookie).Valid", Method, 18, ""},
|
{"(*Cookie).Valid", Method, 18, ""},
|
||||||
|
{"(*CrossOriginProtection).AddInsecureBypassPattern", Method, 25, ""},
|
||||||
|
{"(*CrossOriginProtection).AddTrustedOrigin", Method, 25, ""},
|
||||||
|
{"(*CrossOriginProtection).Check", Method, 25, ""},
|
||||||
|
{"(*CrossOriginProtection).Handler", Method, 25, ""},
|
||||||
|
{"(*CrossOriginProtection).SetDenyHandler", Method, 25, ""},
|
||||||
{"(*MaxBytesError).Error", Method, 19, ""},
|
{"(*MaxBytesError).Error", Method, 19, ""},
|
||||||
{"(*ProtocolError).Error", Method, 0, ""},
|
{"(*ProtocolError).Error", Method, 0, ""},
|
||||||
{"(*ProtocolError).Is", Method, 21, ""},
|
{"(*ProtocolError).Is", Method, 21, ""},
|
||||||
|
@ -8388,6 +8408,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Cookie.Unparsed", Field, 0, ""},
|
{"Cookie.Unparsed", Field, 0, ""},
|
||||||
{"Cookie.Value", Field, 0, ""},
|
{"Cookie.Value", Field, 0, ""},
|
||||||
{"CookieJar", Type, 0, ""},
|
{"CookieJar", Type, 0, ""},
|
||||||
|
{"CrossOriginProtection", Type, 25, ""},
|
||||||
{"DefaultClient", Var, 0, ""},
|
{"DefaultClient", Var, 0, ""},
|
||||||
{"DefaultMaxHeaderBytes", Const, 0, ""},
|
{"DefaultMaxHeaderBytes", Const, 0, ""},
|
||||||
{"DefaultMaxIdleConnsPerHost", Const, 0, ""},
|
{"DefaultMaxIdleConnsPerHost", Const, 0, ""},
|
||||||
|
@ -8460,6 +8481,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"MethodPost", Const, 6, ""},
|
{"MethodPost", Const, 6, ""},
|
||||||
{"MethodPut", Const, 6, ""},
|
{"MethodPut", Const, 6, ""},
|
||||||
{"MethodTrace", Const, 6, ""},
|
{"MethodTrace", Const, 6, ""},
|
||||||
|
{"NewCrossOriginProtection", Func, 25, "func() *CrossOriginProtection"},
|
||||||
{"NewFileTransport", Func, 0, "func(fs FileSystem) RoundTripper"},
|
{"NewFileTransport", Func, 0, "func(fs FileSystem) RoundTripper"},
|
||||||
{"NewFileTransportFS", Func, 22, "func(fsys fs.FS) RoundTripper"},
|
{"NewFileTransportFS", Func, 22, "func(fsys fs.FS) RoundTripper"},
|
||||||
{"NewRequest", Func, 0, "func(method string, url string, body io.Reader) (*Request, error)"},
|
{"NewRequest", Func, 0, "func(method string, url string, body io.Reader) (*Request, error)"},
|
||||||
|
@ -9174,15 +9196,19 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*Root).Link", Method, 25, ""},
|
{"(*Root).Link", Method, 25, ""},
|
||||||
{"(*Root).Lstat", Method, 24, ""},
|
{"(*Root).Lstat", Method, 24, ""},
|
||||||
{"(*Root).Mkdir", Method, 24, ""},
|
{"(*Root).Mkdir", Method, 24, ""},
|
||||||
|
{"(*Root).MkdirAll", Method, 25, ""},
|
||||||
{"(*Root).Name", Method, 24, ""},
|
{"(*Root).Name", Method, 24, ""},
|
||||||
{"(*Root).Open", Method, 24, ""},
|
{"(*Root).Open", Method, 24, ""},
|
||||||
{"(*Root).OpenFile", Method, 24, ""},
|
{"(*Root).OpenFile", Method, 24, ""},
|
||||||
{"(*Root).OpenRoot", Method, 24, ""},
|
{"(*Root).OpenRoot", Method, 24, ""},
|
||||||
|
{"(*Root).ReadFile", Method, 25, ""},
|
||||||
{"(*Root).Readlink", Method, 25, ""},
|
{"(*Root).Readlink", Method, 25, ""},
|
||||||
{"(*Root).Remove", Method, 24, ""},
|
{"(*Root).Remove", Method, 24, ""},
|
||||||
|
{"(*Root).RemoveAll", Method, 25, ""},
|
||||||
{"(*Root).Rename", Method, 25, ""},
|
{"(*Root).Rename", Method, 25, ""},
|
||||||
{"(*Root).Stat", Method, 24, ""},
|
{"(*Root).Stat", Method, 24, ""},
|
||||||
{"(*Root).Symlink", Method, 25, ""},
|
{"(*Root).Symlink", Method, 25, ""},
|
||||||
|
{"(*Root).WriteFile", Method, 25, ""},
|
||||||
{"(*SyscallError).Error", Method, 0, ""},
|
{"(*SyscallError).Error", Method, 0, ""},
|
||||||
{"(*SyscallError).Timeout", Method, 10, ""},
|
{"(*SyscallError).Timeout", Method, 10, ""},
|
||||||
{"(*SyscallError).Unwrap", Method, 13, ""},
|
{"(*SyscallError).Unwrap", Method, 13, ""},
|
||||||
|
@ -9623,6 +9649,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"StructTag", Type, 0, ""},
|
{"StructTag", Type, 0, ""},
|
||||||
{"Swapper", Func, 8, "func(slice any) func(i int, j int)"},
|
{"Swapper", Func, 8, "func(slice any) func(i int, j int)"},
|
||||||
{"Type", Type, 0, ""},
|
{"Type", Type, 0, ""},
|
||||||
|
{"TypeAssert", Func, 25, "func[T any](v Value) (T, bool)"},
|
||||||
{"TypeFor", Func, 22, "func[T any]() Type"},
|
{"TypeFor", Func, 22, "func[T any]() Type"},
|
||||||
{"TypeOf", Func, 0, "func(i any) Type"},
|
{"TypeOf", Func, 0, "func(i any) Type"},
|
||||||
{"Uint", Const, 0, ""},
|
{"Uint", Const, 0, ""},
|
||||||
|
@ -9909,6 +9936,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"SetBlockProfileRate", Func, 1, "func(rate int)"},
|
{"SetBlockProfileRate", Func, 1, "func(rate int)"},
|
||||||
{"SetCPUProfileRate", Func, 0, "func(hz int)"},
|
{"SetCPUProfileRate", Func, 0, "func(hz int)"},
|
||||||
{"SetCgoTraceback", Func, 7, "func(version int, traceback unsafe.Pointer, context unsafe.Pointer, symbolizer unsafe.Pointer)"},
|
{"SetCgoTraceback", Func, 7, "func(version int, traceback unsafe.Pointer, context unsafe.Pointer, symbolizer unsafe.Pointer)"},
|
||||||
|
{"SetDefaultGOMAXPROCS", Func, 25, "func()"},
|
||||||
{"SetFinalizer", Func, 0, "func(obj any, finalizer any)"},
|
{"SetFinalizer", Func, 0, "func(obj any, finalizer any)"},
|
||||||
{"SetMutexProfileFraction", Func, 8, "func(rate int) int"},
|
{"SetMutexProfileFraction", Func, 8, "func(rate int) int"},
|
||||||
{"Stack", Func, 0, "func(buf []byte, all bool) int"},
|
{"Stack", Func, 0, "func(buf []byte, all bool) int"},
|
||||||
|
@ -10021,11 +10049,20 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"WriteHeapProfile", Func, 0, "func(w io.Writer) error"},
|
{"WriteHeapProfile", Func, 0, "func(w io.Writer) error"},
|
||||||
},
|
},
|
||||||
"runtime/trace": {
|
"runtime/trace": {
|
||||||
|
{"(*FlightRecorder).Enabled", Method, 25, ""},
|
||||||
|
{"(*FlightRecorder).Start", Method, 25, ""},
|
||||||
|
{"(*FlightRecorder).Stop", Method, 25, ""},
|
||||||
|
{"(*FlightRecorder).WriteTo", Method, 25, ""},
|
||||||
{"(*Region).End", Method, 11, ""},
|
{"(*Region).End", Method, 11, ""},
|
||||||
{"(*Task).End", Method, 11, ""},
|
{"(*Task).End", Method, 11, ""},
|
||||||
|
{"FlightRecorder", Type, 25, ""},
|
||||||
|
{"FlightRecorderConfig", Type, 25, ""},
|
||||||
|
{"FlightRecorderConfig.MaxBytes", Field, 25, ""},
|
||||||
|
{"FlightRecorderConfig.MinAge", Field, 25, ""},
|
||||||
{"IsEnabled", Func, 11, "func() bool"},
|
{"IsEnabled", Func, 11, "func() bool"},
|
||||||
{"Log", Func, 11, "func(ctx context.Context, category string, message string)"},
|
{"Log", Func, 11, "func(ctx context.Context, category string, message string)"},
|
||||||
{"Logf", Func, 11, "func(ctx context.Context, category string, format string, args ...any)"},
|
{"Logf", Func, 11, "func(ctx context.Context, category string, format string, args ...any)"},
|
||||||
|
{"NewFlightRecorder", Func, 25, "func(cfg FlightRecorderConfig) *FlightRecorder"},
|
||||||
{"NewTask", Func, 11, "func(pctx context.Context, taskType string) (ctx context.Context, task *Task)"},
|
{"NewTask", Func, 11, "func(pctx context.Context, taskType string) (ctx context.Context, task *Task)"},
|
||||||
{"Region", Type, 11, ""},
|
{"Region", Type, 11, ""},
|
||||||
{"Start", Func, 5, "func(w io.Writer) error"},
|
{"Start", Func, 5, "func(w io.Writer) error"},
|
||||||
|
@ -16642,6 +16679,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"ValueOf", Func, 0, ""},
|
{"ValueOf", Func, 0, ""},
|
||||||
},
|
},
|
||||||
"testing": {
|
"testing": {
|
||||||
|
{"(*B).Attr", Method, 25, ""},
|
||||||
{"(*B).Chdir", Method, 24, ""},
|
{"(*B).Chdir", Method, 24, ""},
|
||||||
{"(*B).Cleanup", Method, 14, ""},
|
{"(*B).Cleanup", Method, 14, ""},
|
||||||
{"(*B).Context", Method, 24, ""},
|
{"(*B).Context", Method, 24, ""},
|
||||||
|
@ -16658,6 +16696,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*B).Logf", Method, 0, ""},
|
{"(*B).Logf", Method, 0, ""},
|
||||||
{"(*B).Loop", Method, 24, ""},
|
{"(*B).Loop", Method, 24, ""},
|
||||||
{"(*B).Name", Method, 8, ""},
|
{"(*B).Name", Method, 8, ""},
|
||||||
|
{"(*B).Output", Method, 25, ""},
|
||||||
{"(*B).ReportAllocs", Method, 1, ""},
|
{"(*B).ReportAllocs", Method, 1, ""},
|
||||||
{"(*B).ReportMetric", Method, 13, ""},
|
{"(*B).ReportMetric", Method, 13, ""},
|
||||||
{"(*B).ResetTimer", Method, 0, ""},
|
{"(*B).ResetTimer", Method, 0, ""},
|
||||||
|
@ -16674,6 +16713,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*B).StopTimer", Method, 0, ""},
|
{"(*B).StopTimer", Method, 0, ""},
|
||||||
{"(*B).TempDir", Method, 15, ""},
|
{"(*B).TempDir", Method, 15, ""},
|
||||||
{"(*F).Add", Method, 18, ""},
|
{"(*F).Add", Method, 18, ""},
|
||||||
|
{"(*F).Attr", Method, 25, ""},
|
||||||
{"(*F).Chdir", Method, 24, ""},
|
{"(*F).Chdir", Method, 24, ""},
|
||||||
{"(*F).Cleanup", Method, 18, ""},
|
{"(*F).Cleanup", Method, 18, ""},
|
||||||
{"(*F).Context", Method, 24, ""},
|
{"(*F).Context", Method, 24, ""},
|
||||||
|
@ -16689,6 +16729,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*F).Log", Method, 18, ""},
|
{"(*F).Log", Method, 18, ""},
|
||||||
{"(*F).Logf", Method, 18, ""},
|
{"(*F).Logf", Method, 18, ""},
|
||||||
{"(*F).Name", Method, 18, ""},
|
{"(*F).Name", Method, 18, ""},
|
||||||
|
{"(*F).Output", Method, 25, ""},
|
||||||
{"(*F).Setenv", Method, 18, ""},
|
{"(*F).Setenv", Method, 18, ""},
|
||||||
{"(*F).Skip", Method, 18, ""},
|
{"(*F).Skip", Method, 18, ""},
|
||||||
{"(*F).SkipNow", Method, 18, ""},
|
{"(*F).SkipNow", Method, 18, ""},
|
||||||
|
@ -16697,6 +16738,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*F).TempDir", Method, 18, ""},
|
{"(*F).TempDir", Method, 18, ""},
|
||||||
{"(*M).Run", Method, 4, ""},
|
{"(*M).Run", Method, 4, ""},
|
||||||
{"(*PB).Next", Method, 3, ""},
|
{"(*PB).Next", Method, 3, ""},
|
||||||
|
{"(*T).Attr", Method, 25, ""},
|
||||||
{"(*T).Chdir", Method, 24, ""},
|
{"(*T).Chdir", Method, 24, ""},
|
||||||
{"(*T).Cleanup", Method, 14, ""},
|
{"(*T).Cleanup", Method, 14, ""},
|
||||||
{"(*T).Context", Method, 24, ""},
|
{"(*T).Context", Method, 24, ""},
|
||||||
|
@ -16712,6 +16754,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"(*T).Log", Method, 0, ""},
|
{"(*T).Log", Method, 0, ""},
|
||||||
{"(*T).Logf", Method, 0, ""},
|
{"(*T).Logf", Method, 0, ""},
|
||||||
{"(*T).Name", Method, 8, ""},
|
{"(*T).Name", Method, 8, ""},
|
||||||
|
{"(*T).Output", Method, 25, ""},
|
||||||
{"(*T).Parallel", Method, 0, ""},
|
{"(*T).Parallel", Method, 0, ""},
|
||||||
{"(*T).Run", Method, 7, ""},
|
{"(*T).Run", Method, 7, ""},
|
||||||
{"(*T).Setenv", Method, 17, ""},
|
{"(*T).Setenv", Method, 17, ""},
|
||||||
|
@ -16834,6 +16877,10 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Run", Func, 22, "func(t *testing.T, newHandler func(*testing.T) slog.Handler, result func(*testing.T) map[string]any)"},
|
{"Run", Func, 22, "func(t *testing.T, newHandler func(*testing.T) slog.Handler, result func(*testing.T) map[string]any)"},
|
||||||
{"TestHandler", Func, 21, "func(h slog.Handler, results func() []map[string]any) error"},
|
{"TestHandler", Func, 21, "func(h slog.Handler, results func() []map[string]any) error"},
|
||||||
},
|
},
|
||||||
|
"testing/synctest": {
|
||||||
|
{"Test", Func, 25, "func(t *testing.T, f func(*testing.T))"},
|
||||||
|
{"Wait", Func, 25, "func()"},
|
||||||
|
},
|
||||||
"text/scanner": {
|
"text/scanner": {
|
||||||
{"(*Position).IsValid", Method, 0, ""},
|
{"(*Position).IsValid", Method, 0, ""},
|
||||||
{"(*Scanner).Init", Method, 0, ""},
|
{"(*Scanner).Init", Method, 0, ""},
|
||||||
|
@ -17347,6 +17394,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"CaseRange.Lo", Field, 0, ""},
|
{"CaseRange.Lo", Field, 0, ""},
|
||||||
{"CaseRanges", Var, 0, ""},
|
{"CaseRanges", Var, 0, ""},
|
||||||
{"Categories", Var, 0, ""},
|
{"Categories", Var, 0, ""},
|
||||||
|
{"CategoryAliases", Var, 25, ""},
|
||||||
{"Caucasian_Albanian", Var, 4, ""},
|
{"Caucasian_Albanian", Var, 4, ""},
|
||||||
{"Cc", Var, 0, ""},
|
{"Cc", Var, 0, ""},
|
||||||
{"Cf", Var, 0, ""},
|
{"Cf", Var, 0, ""},
|
||||||
|
@ -17354,6 +17402,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Cham", Var, 0, ""},
|
{"Cham", Var, 0, ""},
|
||||||
{"Cherokee", Var, 0, ""},
|
{"Cherokee", Var, 0, ""},
|
||||||
{"Chorasmian", Var, 16, ""},
|
{"Chorasmian", Var, 16, ""},
|
||||||
|
{"Cn", Var, 25, ""},
|
||||||
{"Co", Var, 0, ""},
|
{"Co", Var, 0, ""},
|
||||||
{"Common", Var, 0, ""},
|
{"Common", Var, 0, ""},
|
||||||
{"Coptic", Var, 0, ""},
|
{"Coptic", Var, 0, ""},
|
||||||
|
@ -17432,6 +17481,7 @@ var PackageSymbols = map[string][]Symbol{
|
||||||
{"Khojki", Var, 4, ""},
|
{"Khojki", Var, 4, ""},
|
||||||
{"Khudawadi", Var, 4, ""},
|
{"Khudawadi", Var, 4, ""},
|
||||||
{"L", Var, 0, ""},
|
{"L", Var, 0, ""},
|
||||||
|
{"LC", Var, 25, ""},
|
||||||
{"Lao", Var, 0, ""},
|
{"Lao", Var, 0, ""},
|
||||||
{"Latin", Var, 0, ""},
|
{"Latin", Var, 0, ""},
|
||||||
{"Lepcha", Var, 0, ""},
|
{"Lepcha", Var, 0, ""},
|
||||||
|
|
|
@ -83,7 +83,7 @@ github.com/munnerz/goautoneg
|
||||||
# github.com/pkg/errors v0.9.1
|
# github.com/pkg/errors v0.9.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/pkg/errors
|
github.com/pkg/errors
|
||||||
# github.com/spf13/pflag v1.0.7
|
# github.com/spf13/pflag v1.0.10
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
github.com/spf13/pflag
|
github.com/spf13/pflag
|
||||||
# github.com/x448/float16 v0.8.4
|
# github.com/x448/float16 v0.8.4
|
||||||
|
@ -134,13 +134,13 @@ go.uber.org/zap/zapcore
|
||||||
# go.yaml.in/yaml/v2 v2.4.2
|
# go.yaml.in/yaml/v2 v2.4.2
|
||||||
## explicit; go 1.15
|
## explicit; go 1.15
|
||||||
go.yaml.in/yaml/v2
|
go.yaml.in/yaml/v2
|
||||||
# golang.org/x/mod v0.27.0
|
# golang.org/x/mod v0.28.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/mod/internal/lazyregexp
|
golang.org/x/mod/internal/lazyregexp
|
||||||
golang.org/x/mod/module
|
golang.org/x/mod/module
|
||||||
golang.org/x/mod/semver
|
golang.org/x/mod/semver
|
||||||
# golang.org/x/net v0.43.0
|
# golang.org/x/net v0.44.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/net/http/httpguts
|
golang.org/x/net/http/httpguts
|
||||||
golang.org/x/net/http2
|
golang.org/x/net/http2
|
||||||
golang.org/x/net/http2/h2c
|
golang.org/x/net/http2/h2c
|
||||||
|
@ -154,16 +154,16 @@ golang.org/x/oauth2/internal
|
||||||
# golang.org/x/sync v0.17.0
|
# golang.org/x/sync v0.17.0
|
||||||
## explicit; go 1.24.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
# golang.org/x/sys v0.35.0
|
# golang.org/x/sys v0.36.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/sys/plan9
|
golang.org/x/sys/plan9
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
# golang.org/x/term v0.34.0
|
# golang.org/x/term v0.35.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/term
|
golang.org/x/term
|
||||||
# golang.org/x/text v0.28.0
|
# golang.org/x/text v0.29.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/text/cases
|
golang.org/x/text/cases
|
||||||
golang.org/x/text/internal
|
golang.org/x/text/internal
|
||||||
golang.org/x/text/internal/language
|
golang.org/x/text/internal/language
|
||||||
|
@ -177,8 +177,8 @@ golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/time v0.10.0
|
# golang.org/x/time v0.10.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/time/rate
|
golang.org/x/time/rate
|
||||||
# golang.org/x/tools v0.36.0
|
# golang.org/x/tools v0.37.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.24.0
|
||||||
golang.org/x/tools/go/ast/astutil
|
golang.org/x/tools/go/ast/astutil
|
||||||
golang.org/x/tools/go/gcexportdata
|
golang.org/x/tools/go/gcexportdata
|
||||||
golang.org/x/tools/go/packages
|
golang.org/x/tools/go/packages
|
||||||
|
@ -721,7 +721,7 @@ k8s.io/utils/trace
|
||||||
# knative.dev/hack v0.0.0-20250902153942-1499de21e119
|
# knative.dev/hack v0.0.0-20250902153942-1499de21e119
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
knative.dev/hack
|
knative.dev/hack
|
||||||
# knative.dev/pkg v0.0.0-20250909010931-8c9c1d368e4b
|
# knative.dev/pkg v0.0.0-20250915135827-db4c336acdbe
|
||||||
## explicit; go 1.24.0
|
## explicit; go 1.24.0
|
||||||
knative.dev/pkg/apis
|
knative.dev/pkg/apis
|
||||||
knative.dev/pkg/apis/duck
|
knative.dev/pkg/apis/duck
|
||||||
|
|
Loading…
Reference in New Issue